diff options
author | Dave Arter <davea@mysociety.org> | 2018-10-25 13:03:22 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2018-10-26 09:53:44 +0100 |
commit | 0b127a05a982eca9de214ce2d524b244e8c934ec (patch) | |
tree | 7c59fb0e8142f7410cedb28aa2b7d6ff9461fbb6 | |
parent | d20ccf50a1cd7f844316d3db8809db74d813152b (diff) |
Don’t send questionnaires for closed reports.
Fixes mysociety/fixmystreet-freshdesk#24.
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | perllib/FixMyStreet/Script/Questionnaires.pm | 4 | ||||
-rw-r--r-- | t/app/controller/questionnaire.t | 20 | ||||
-rw-r--r-- | t/app/model/questionnaire.t | 9 |
4 files changed, 29 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 76e1e0170..36db9efd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ - Fix subcategory issues when visiting /report/new directly #2276 - Give superusers access to update staff dropdowns. #2286 - Update report areas when moving its location. #2181 + - Don't send questionnaires for closed reports. #2310 - Development improvements: - Add cobrand hook for dashboard viewing permission. #2285 - Have body.url work in hashref lookup. #2284 diff --git a/perllib/FixMyStreet/Script/Questionnaires.pm b/perllib/FixMyStreet/Script/Questionnaires.pm index bcdaa06d6..aab4b9b75 100644 --- a/perllib/FixMyStreet/Script/Questionnaires.pm +++ b/perllib/FixMyStreet/Script/Questionnaires.pm @@ -53,7 +53,9 @@ sub send_questionnaires_period { # Cobrands can also override sending per row if they wish my $cobrand_send = $cobrand->call_hook('send_questionnaire', $row) // 1; - if ($row->is_from_abuser || !$row->user->email_verified || !$cobrand_send) { + if ($row->is_from_abuser || !$row->user->email_verified || + !$cobrand_send || $row->is_closed + ) { $row->update( { send_questionnaire => 0 } ); next; } diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t index bfc61ae17..05aed7262 100644 --- a/t/app/controller/questionnaire.t +++ b/t/app/controller/questionnaire.t @@ -40,6 +40,26 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( my $report_id = $report->id; ok $report, "created test report - $report_id"; +# Make sure questionnaires aren't sent if the report is closed. +foreach my $state ( + 'closed', 'duplicate', 'not responsible', 'unable to fix', 'internal referral' +) { + subtest "questionnaire not sent for $state state" => sub { + $report->update( { send_questionnaire => 1, state => $state } ); + $report->questionnaires->delete; + FixMyStreet::App->model('DB::Questionnaire')->send_questionnaires( { + site => 'fixmystreet' + } ); + + $mech->email_count_is(0); + + $report->discard_changes; + is $report->send_questionnaire, 0; + } +} +$report->update( { send_questionnaire => 1, state => 'confirmed' } ); +$report->questionnaires->delete; + # Call the questionaire sending function... FixMyStreet::App->model('DB::Questionnaire')->send_questionnaires( { site => 'fixmystreet' diff --git a/t/app/model/questionnaire.t b/t/app/model/questionnaire.t index d01185375..aa684a68c 100644 --- a/t/app/model/questionnaire.t +++ b/t/app/model/questionnaire.t @@ -85,19 +85,19 @@ for my $test ( }, { state => 'duplicate', - send_email => 1, + send_email => 0, }, { state => 'unable to fix', - send_email => 1, + send_email => 0, }, { state => 'not responsible', - send_email => 1, + send_email => 0, }, { state => 'closed', - send_email => 1, + send_email => 0, }, ) { subtest "correct questionnaire behaviour for state $test->{state}" => sub { @@ -129,6 +129,7 @@ for my $test ( }, sub { $problem->latitude($test->{latitude}); $problem->send_questionnaire(1); + $problem->state('confirmed'); $problem->update; $problem->questionnaires->delete; |