diff options
author | Dave Arter <davea@mysociety.org> | 2018-04-12 14:17:08 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2018-04-12 14:31:19 +0100 |
commit | b3ca23bc1f8181c2dbd4aa76ae6ed207caa377d7 (patch) | |
tree | 5db778772894ffcb3575217e22a4e5d87f8ae54e | |
parent | 9fde903b6f9d2fa70e666cd5d9f864cb275bffe2 (diff) |
Don’t send alert emails when archiving old reports
-rw-r--r-- | perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm | 17 | ||||
-rw-r--r-- | t/app/script/archive_old_enquiries.t | 35 |
2 files changed, 51 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm index 31876d83d..03bc511a0 100644 --- a/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm +++ b/perllib/FixMyStreet/Script/ArchiveOldEnquiries.pm @@ -137,7 +137,7 @@ sub close_problems { my $problems = shift; while (my $problem = $problems->next) { my $timestamp = \'current_timestamp'; - $problem->add_to_comments( { + my $comment = $problem->add_to_comments( { text => '', created => $timestamp, confirmed => $timestamp, @@ -150,5 +150,20 @@ sub close_problems { extra => { is_superuser => 1 }, } ); $problem->update({ state => 'closed', send_questionnaire => 0 }); + + # Stop any alerts being sent out about this closure. + my @alerts = FixMyStreet::DB->resultset('Alert')->search( { + alert_type => 'new_updates', + parameter => $problem->id, + confirmed => 1, + } ); + + for my $alert (@alerts) { + my $alerts_sent = FixMyStreet::DB->resultset('AlertSent')->find_or_create( { + alert_id => $alert->id, + parameter => $comment->id, + } ); + } + } } diff --git a/t/app/script/archive_old_enquiries.t b/t/app/script/archive_old_enquiries.t index 0475cb9ea..9774d3fc3 100644 --- a/t/app/script/archive_old_enquiries.t +++ b/t/app/script/archive_old_enquiries.t @@ -75,6 +75,41 @@ subtest 'sets reports to the correct status' => sub { }; }; +subtest 'marks alerts as sent' => sub { + FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'oxfordshire' ], + }, sub { + my ($report) = $mech->create_problems_for_body(1, $oxfordshire->id, 'Test', { + areas => ',2237,', + lastupdate => '2015-12-01 07:00:00', + user_id => $user->id, + }); + my $alert = FixMyStreet::DB->resultset('Alert')->find_or_create( + { + user => $user, + parameter => $report->id, + alert_type => 'new_updates', + whensubscribed => '2015-12-01 07:00:00', + confirmed => 1, + cobrand => 'default', + } + ); + is $alert->alerts_sent->count, 0, 'Nothing has been sent for this alert'; + + FixMyStreet::Script::ArchiveOldEnquiries::archive($opts); + + $report->discard_changes; + + is $report->state, 'closed', 'Report has been set to closed'; + + is $alert->alerts_sent->count, 1, 'Alert marked as sent for this report'; + + my $alert_sent = $alert->alerts_sent->first; + my $comment = $report->comments->first; + is $alert_sent->parameter, $comment->id, 'AlertSent created for new comment'; + }; +}; + subtest 'sends emails to a user' => sub { FixMyStreet::override_config { ALLOWED_COBRANDS => [ 'oxfordshire' ], |