diff options
author | Matthew Somerville <matthew@mysociety.org> | 2011-06-23 15:16:51 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2011-06-23 15:16:51 +0100 |
commit | 27edc4907f17cbfd16cdd18241d6a936990006f5 (patch) | |
tree | cd8c85f36c2b52ba42b38a6549e374be4cb651cf | |
parent | 8dbb38d87e7361bcc4f4d260f89cfa8b8dfe425b (diff) |
Allow unsub from update form, fix test.
-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 86c84f14c..d84fda1bf 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -278,7 +278,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. @@ -298,8 +299,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 624872505..21429c2a4 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -384,7 +384,7 @@ for my $test ( for my $test ( { - desc => 'submit update for register user', + desc => 'submit update for registered user', initial_values => { name => 'Test User', may_show_name => 1, @@ -409,7 +409,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, @@ -435,7 +435,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, @@ -462,7 +462,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, @@ -487,7 +487,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, @@ -500,7 +500,7 @@ for my $test ( fields => { submit_update => 1, update => 'update from a registered user', - add_alert => undef, + add_alert => 1, fixed => 1, }, changed => { @@ -508,9 +508,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(); @@ -558,7 +582,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'; }; |