diff options
author | Struan Donald <struan@exo.org.uk> | 2011-06-23 16:08:20 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-06-23 16:08:20 +0100 |
commit | 2264d094189ff9d5e1c52b58329fc191f97c3fd6 (patch) | |
tree | 4a9d037f260cc984192db6d5664e423baa577423 | |
parent | 46848a1dd7a7e33cb8953df334f434d0450b5651 (diff) | |
parent | 27edc4907f17cbfd16cdd18241d6a936990006f5 (diff) |
Merge branch 'master' of ssh://git.mysociety.org/data/git/public/fixmystreet into new_statuses
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 7 | ||||
-rw-r--r-- | t/app/controller/report_updates.t | 40 |
2 files changed, 37 insertions, 10 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index a131fbd35..41bc3a4bd 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -297,7 +297,8 @@ sub redirect_or_confirm_creation : Private { =head2 signup_for_alerts If the user has selected to be signed up for alerts then create a -new_updates alert. +new_updates alert. Or if they're logged in and they've unticked the +box, disable their alert. NB: this does not check if they are a registered user so that should happen before calling this. @@ -317,8 +318,10 @@ sub signup_for_alerts : Private { cobrand_data => $update->cobrand_data, lang => $update->lang, ); - $alert->confirm(); + + } elsif ( $c->user && ( my $alert = $c->user->alert_for_problem($c->stash->{update}->problem_id) ) ) { + $alert->disable(); } return 1; diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index 0812ddd81..e5495ebf1 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -464,7 +464,7 @@ $report->update; for my $test ( { - desc => 'submit update for register user', + desc => 'submit update for registered user', initial_values => { name => 'Test User', may_show_name => 1, @@ -489,7 +489,7 @@ for my $test ( anonymous => 0, }, { - desc => 'submit update for register user anonymously by unchecking', + desc => 'submit update for registered user anonymously by unchecking', initial_values => { name => 'Test User', may_show_name => 1, @@ -515,7 +515,7 @@ for my $test ( anonymous => 1, }, { - desc => 'submit update for register user anonymously by deleting name', + desc => 'submit update for registered user anonymously by deleting name', initial_values => { name => 'Test User', may_show_name => 1, @@ -542,7 +542,7 @@ for my $test ( anonymous => 1, }, { - desc => 'submit update for register user and sign up', + desc => 'submit update for registered user and sign up', initial_values => { name => 'Test User', may_show_name => 1, @@ -567,7 +567,7 @@ for my $test ( anonymous => 0, }, { - desc => 'submit update for register user and mark fixed', + desc => 'submit update for registered user and mark fixed', initial_values => { name => 'Commenter', may_show_name => 1, @@ -580,7 +580,7 @@ for my $test ( fields => { submit_update => 1, update => 'update from a registered user', - add_alert => undef, + add_alert => 1, fixed => 1, }, changed => { @@ -588,9 +588,33 @@ for my $test ( }, initial_banner => '', endstate_banner => ' This problem has been fixed. ', - alert => 1, # we signed up for alerts before, do not unsign us + alert => 1, + anonymous => 0, + }, + { + desc => 'submit another update for registered user and want no more alerts', + initial_values => { + name => 'Commenter', + may_show_name => 1, + add_alert => 1, + photo => '', + update => '', + }, + email => 'commenter@example.com', + fields => { + submit_update => 1, + update => 'another update from a registered user', + add_alert => undef, + }, + changed => { + update => 'Another update from a registered user' + }, + initial_banner => ' This problem has been fixed. ', + endstate_banner => ' This problem has been fixed. ', + alert => 0, anonymous => 0, }, + # If logged in person unticks the box and already has an alert, they should be unsubscribed. ) { subtest $test->{desc} => sub { $mech->log_out_ok(); @@ -638,7 +662,7 @@ for my $test ( my $alert = FixMyStreet::App->model('DB::Alert') - ->find( { user => $user, alert_type => 'new_updates', confirmed => 1 } ); + ->find( { user => $update->user, alert_type => 'new_updates', confirmed => 1, whendisabled => undef } ); ok $test->{alert} ? $alert : !$alert, 'not signed up for alerts'; }; |