aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2014-02-27 17:29:46 +0000
committerMatthew Somerville <matthew@mysociety.org>2014-02-27 17:29:54 +0000
commitcdc7ce7c24eb8171487294bbf43c95819f71d53e (patch)
tree0301e9e3ee840ad8f6d6199d71883d38cdb38f24
parent6559cf405f34c8f99684fdab623403c3374a9e7a (diff)
parent5ba57c5a9c8ecc51e73075fa003afa3694e7d269 (diff)
Merge branch 'issues/677-open311-errors-on-comment-processing'
-rw-r--r--perllib/Open311/GetServiceRequestUpdates.pm12
-rw-r--r--t/open311/getservicerequestupdates.t34
2 files changed, 32 insertions, 14 deletions
diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm
index 114a9cd8d..f7b758137 100644
--- a/perllib/Open311/GetServiceRequestUpdates.pm
+++ b/perllib/Open311/GetServiceRequestUpdates.pm
@@ -139,17 +139,19 @@ sub update_comments {
$comment->insert();
if ( $self->suppress_alerts ) {
- my $alert = FixMyStreet::App->model('DB::Alert')->find( {
+ my @alerts = FixMyStreet::App->model('DB::Alert')->search( {
alert_type => 'new_updates',
parameter => $p->id,
confirmed => 1,
user_id => $p->user->id,
} );
- my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->find_or_create( {
- alert_id => $alert->id,
- parameter => $comment->id,
- } );
+ for my $alert (@alerts) {
+ my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->find_or_create( {
+ alert_id => $alert->id,
+ parameter => $comment->id,
+ } );
+ }
}
}
}
diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t
index 4e10766d6..00c25a83e 100644
--- a/t/open311/getservicerequestupdates.t
+++ b/t/open311/getservicerequestupdates.t
@@ -627,10 +627,22 @@ foreach my $test ( {
foreach my $test ( {
desc => 'normally alerts are not suppressed',
+ num_alerts => 1,
suppress_alerts => 0,
},
{
desc => 'alerts suppressed if suppress_alerts set',
+ num_alerts => 1,
+ suppress_alerts => 1,
+ },
+ {
+ desc => 'alert suppression ok even if no alerts',
+ num_alerts => 0,
+ suppress_alerts => 1,
+ },
+ {
+ desc => 'alert suppression ok even if 2x alerts',
+ num_alerts => 2,
suppress_alerts => 1,
}
) {
@@ -652,12 +664,14 @@ foreach my $test ( {
$problem->lastupdate( $dt->subtract( hours => 3 ) );
$problem->update;
- my $alert = FixMyStreet::App->model('DB::Alert')->find_or_create( {
- alert_type => 'new_updates',
- parameter => $problem->id,
- confirmed => 1,
- user_id => $problem->user->id,
- } );
+ my @alerts = map {
+ my $alert = FixMyStreet::App->model('DB::Alert')->create( {
+ alert_type => 'new_updates',
+ parameter => $problem->id,
+ confirmed => 1,
+ user_id => $problem->user->id,
+ } )
+ } (1..$test->{num_alerts});
$requests_xml =~ s/UPDATED_DATETIME/$dt/;
@@ -674,19 +688,21 @@ foreach my $test ( {
my $alerts_sent = FixMyStreet::App->model('DB::AlertSent')->search(
{
- alert_id => $alert->id,
+ alert_id => [ map $_->id, @alerts ],
parameter => $problem->comments->first->id,
}
);
if ( $test->{suppress_alerts} ) {
- ok $alerts_sent->count(), 'alerts suppressed';
+ is $alerts_sent->count(), $test->{num_alerts}, 'alerts suppressed';
} else {
is $alerts_sent->count(), 0, 'alerts not suppressed';
}
$alerts_sent->delete;
- $alert->delete;
+ for my $alert (@alerts) {
+ $alert->delete;
+ }
}
}