aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/Triage.pm3
-rwxr-xr-xperllib/Open311/PostServiceRequestUpdates.pm10
-rw-r--r--t/app/controller/admin/triage.t3
-rw-r--r--t/cobrand/isleofwight.t55
4 files changed, 48 insertions, 23 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Triage.pm b/perllib/FixMyStreet/App/Controller/Admin/Triage.pm
index 9d6d96e44..385248cd1 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/Triage.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/Triage.pm
@@ -141,7 +141,8 @@ sub update : Private {
anonymous => 0,
state => 'confirmed',
problem_state => $problem->state,
- extra => $extra
+ extra => $extra,
+ whensent => \'current_timestamp',
} );
my @alerts = FixMyStreet::DB->resultset('Alert')->search( {
diff --git a/perllib/Open311/PostServiceRequestUpdates.pm b/perllib/Open311/PostServiceRequestUpdates.pm
index 1f080b168..14bebfcb7 100755
--- a/perllib/Open311/PostServiceRequestUpdates.pm
+++ b/perllib/Open311/PostServiceRequestUpdates.pm
@@ -14,6 +14,7 @@ use Open311;
use constant SEND_METHOD_OPEN311 => 'Open311';
has verbose => ( is => 'ro', default => 0 );
+has current_open311 => ( is => 'rw' );
sub send {
my $self = shift;
@@ -26,6 +27,7 @@ sub send {
while ( my $body = $bodies->next ) {
my $cobrand = $body->get_cobrand_handler;
next if $cobrand && $cobrand->call_hook('open311_post_update_skip');
+ $self->current_open311(Open311->new($self->open311_params($body)));
$self->process_body($body);
}
}
@@ -51,8 +53,6 @@ sub open311_params {
sub process_body {
my ($self, $body) = @_;
- my $o = Open311->new( $self->open311_params($body) );
-
my $comments = FixMyStreet::DB->resultset('Comment')->to_body($body)->search( {
'me.whensent' => undef,
'me.external_id' => undef,
@@ -82,12 +82,14 @@ sub process_body {
next if !$self->verbose && $comment->send_fail_count && retry_timeout($comment);
- $self->process_update($body, $o, $comment, $cobrand);
+ $self->process_update($body, $comment, $cobrand);
}
}
sub process_update {
- my ($self, $body, $o, $comment, $cobrand) = @_;
+ my ($self, $body, $comment, $cobrand) = @_;
+
+ my $o = $self->current_open311;
$cobrand->call_hook(open311_pre_send => $comment, $o);
diff --git a/t/app/controller/admin/triage.t b/t/app/controller/admin/triage.t
index 0bc253150..6c84d1ff4 100644
--- a/t/app/controller/admin/triage.t
+++ b/t/app/controller/admin/triage.t
@@ -40,8 +40,6 @@ my ($report) = $mech->create_problems_for_body(
}
);
-warn $report->bodies_str;
-
FixMyStreet::override_config {
STAGING_FLAGS => { send_reports => 1, skip_checks => 0 },
ALLOWED_COBRANDS => [ 'isleofwight' ],
@@ -110,6 +108,7 @@ FixMyStreet::override_config {
is $extra->{triage_report}, 1, 'comment indicates it is for triage in extra';
is $extra->{holding_category}, 'Potholes', 'comment extra has previous category';
is $extra->{new_category}, 'Traffic lights', 'comment extra has new category';
+ ok $comment->whensent, 'comment is marked as sent';
$mech->get_ok($report_url);
$mech->content_contains('Report triaged from Potholes to Traffic lights');
diff --git a/t/cobrand/isleofwight.t b/t/cobrand/isleofwight.t
index f4dc90992..67088bc54 100644
--- a/t/cobrand/isleofwight.t
+++ b/t/cobrand/isleofwight.t
@@ -4,6 +4,7 @@ use FixMyStreet::TestMech;
use Open311;
use Open311::GetServiceRequests;
use Open311::GetServiceRequestUpdates;
+use Open311::PostServiceRequestUpdates;
use FixMyStreet::Script::Alerts;
use FixMyStreet::Script::Reports;
@@ -297,15 +298,15 @@ subtest 'Check special Open311 request handling', sub {
qr/your enquiry has been received by Island Roads/, "correct report send email text";
};
-subtest "triaging a report includes user in message" => sub {
+subtest "comment recording triage details is not sent" => sub {
FixMyStreet::override_config {
MAPIT_URL => 'http://mapit.uk/',
- ALLOWED_COBRANDS => 'isleofwight',
+ ALLOWED_COBRANDS => [ 'isleofwight' ],
}, sub {
my $test_res = HTTP::Response->new();
$test_res->code(200);
$test_res->message('OK');
- $test_res->content('<?xml version="1.0" encoding="utf-8"?><service_request_updates><request_update><update_id>248</update_id></request_update></service_request_updates>');
+ $test_res->content('<?xml version="1.0" encoding="utf-8"?><service_request_updates></service_request_updates>');
my $o = Open311->new(
fixmystreet_body => $isleofwight,
@@ -313,22 +314,44 @@ subtest "triaging a report includes user in message" => sub {
test_get_returns => { 'servicerequestupdates.xml' => $test_res },
);
- my ($p) = $mech->create_problems_for_body(1, $isleofwight->id, 'Title', { external_id => 1 });
+ my ($p) = $mech->create_problems_for_body(
+ 1, $isleofwight->id, 'Title',
+ {
+ category => 'Roads',
+ areas => 2636,
+ latitude => 50.71086,
+ longitude => -1.29573,
+ whensent => DateTime->now->add( minutes => -5 ),
+ send_method_used => 'Triage',
+ state => 'for triage',
+ external_id => 1,
+ });
- my $c = FixMyStreet::App->model('DB::Comment')->create({
- problem => $p, user => $p->user, anonymous => 't', text => 'Update text',
- problem_state => 'confirmed', state => 'confirmed', mark_fixed => 0,
- confirmed => DateTime->now(),
+ $mech->log_out_ok;
+ $mech->log_in_ok($admin_user->email);
+ my $report_url = '/report/' . $p->id;
+ $mech->get_ok($report_url);
+ $mech->submit_form_ok( {
+ with_fields => {
+ category => 'Potholes',
+ include_update => 0,
+ }
+ },
+ 'triage form submitted'
+ );
+
+ ok $p->comments->first, 'comment created for problem';
+
+ $p->update({
+ send_method_used => 'Open311',
+ whensent => DateTime->now->add( minutes => -5 ),
});
- $c->set_extra_metadata('triage_report', 1);
- $c->update;
- my $id = $o->post_service_request_update($c);
- is $id, 248, 'correct update ID returned';
- my $cgi = CGI::Simple->new($o->test_req_used->content);
- my $name = $p->user->name . ' \(' . $p->user->email . '\)';
- like $cgi->param('description'), qr/^FMS-Update:/, 'FMS update prefix included';
- like $cgi->param('description'), qr/Triaged by $name/, 'Triage user details included';
+ my $updates = Open311::PostServiceRequestUpdates->new(
+ current_open311 => $o,
+ );
+ my $id = $updates->process_body($isleofwight);
+ ok !$o->test_req_used, 'no open311 update sent';
$p->comments->delete;
$p->delete;