aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/Update.pm12
-rw-r--r--t/app/controller/report_updates.t46
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',