diff options
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report/Update.pm | 12 | ||||
-rw-r--r-- | t/app/controller/report_updates.t | 46 |
2 files changed, 57 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report/Update.pm b/perllib/FixMyStreet/App/Controller/Report/Update.pm index 354690949..a131fbd35 100644 --- a/perllib/FixMyStreet/App/Controller/Report/Update.pm +++ b/perllib/FixMyStreet/App/Controller/Report/Update.pm @@ -65,6 +65,10 @@ sub update_problem : Private { } } + if ( $update->problem_state ) { + $problem->state( $update->problem_state ); + } + $problem->lastupdate( \'ms_current_timestamp()' ); $problem->update; @@ -126,7 +130,7 @@ sub process_update : Private { my ( $self, $c ) = @_; my %params = - map { $_ => scalar $c->req->param($_) } ( 'update', 'name', 'fixed' ); + map { $_ => scalar $c->req->param($_) } ( 'update', 'name', 'fixed', 'state' ); $params{update} = Utils::cleanup_text( $params{update}, { allow_multiline => 1 } ); @@ -152,6 +156,12 @@ sub process_update : Private { } ); + if ( $params{state} ) { + $params{state} = 'fixed - council' + if $params{state} eq 'fixed' && $c->user && $c->user->from_authority; + $update->problem_state( $params{state} ); + } + $c->stash->{update} = $update; $c->stash->{add_alert} = $c->req->param('add_alert'); diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index de3ff3a81..0812ddd81 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -418,6 +418,52 @@ subtest 'check non authority user cannot change set state' => sub { for my $test ( { + desc => 'from authority user marks report as fixed', + fields => { + name => $user->name, + may_show_name => 1, + add_alert => 0, + photo => '', + update => 'Set state to fixed', + state => 'fixed', + }, + state => 'fixed - council', + }, +) { + subtest $test->{desc} => sub { + $report->comments->delete; + + $mech->log_in_ok( $user->email ); + $user->from_authority( 1 ); + $user->update; + + $mech->get_ok("/report/$report_id"); + + $mech->submit_form_ok( + { + with_fields => $test->{fields}, + }, + 'submit update' + ); + + my $update = $report->comments->first; + ok $update, 'found update'; + is $update->text, $test->{fields}->{update}, 'update text'; + is $update->problem_state, $test->{state}, 'problem state set'; + + $report->discard_changes; + is $report->state, $test->{state}, 'state set'; + }; +} + +$user->from_authority(0); +$user->update; + +$report->state('confirmed'); +$report->update; + +for my $test ( + { desc => 'submit update for register user', initial_values => { name => 'Test User', |