aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Arter <davea@mysociety.org>2018-07-11 12:05:20 +0100
committerDave Arter <davea@mysociety.org>2018-08-17 09:43:09 +0100
commitd542301d00cc5fabbf534e7b2e8f2273a151a162 (patch)
tree983dd3265b19557226d3b39915240d7f8cedead0
parent5a47979bf18cda5cd68bcc49a2b27ed3aa22aea3 (diff)
Don’t crash when fetching Open311 requests with missing description
-rw-r--r--perllib/Open311/GetServiceRequests.pm2
-rw-r--r--t/open311/getservicerequests.t21
2 files changed, 22 insertions, 1 deletions
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm
index 2d15347fd..2d20c6246 100644
--- a/perllib/Open311/GetServiceRequests.pm
+++ b/perllib/Open311/GetServiceRequests.pm
@@ -158,7 +158,7 @@ sub create_problems {
{
user => $self->system_user,
external_id => $request_id,
- detail => $request->{description},
+ detail => $request->{description} || $request->{service_name} . ' problem',
title => $request->{title} || $request->{service_name} . ' problem',
anonymous => 0,
name => $self->system_user->name,
diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t
index 57f112e2f..0f87b4d5d 100644
--- a/t/open311/getservicerequests.t
+++ b/t/open311/getservicerequests.t
@@ -48,6 +48,20 @@ my $requests_xml = qq{<?xml version="1.0" encoding="utf-8"?>
<lat>51.4021</lat>
<long>0.01578</long>
</request>
+<request>
+<service_request_id>638346</service_request_id>
+<status>open</status>
+<status_notes>This is a note.</status_notes>
+<service_name>Sidewalk and Curb Issues</service_name>
+<service_code>sidewalks</service_code>
+<agency_responsible></agency_responsible>
+<service_notice></service_notice>
+<requested_datetime>2010-04-14T06:37:38-08:00</requested_datetime>
+<updated_datetime>2010-04-14T06:37:38-08:00</updated_datetime>
+<expected_datetime>2010-04-15T06:37:38-08:00</expected_datetime>
+<lat>51.4021</lat>
+<long>0.01578</long>
+</request>
</service_requests>
};
@@ -104,6 +118,13 @@ subtest 'basic parsing checks' => sub {
ok $p2->whensent, 'second problem marked sent';
is $p2->state, 'investigating', 'second problem correct state';
is $p2->category, 'Other', 'category falls back to Other';
+
+ my $p3 = FixMyStreet::DB->resultset('Problem')->search( { external_id => 638346 } )->first;
+ ok $p3, 'third problem found';
+ ok $p3->whensent, 'third problem marked sent';
+ is $p3->state, 'confirmed', 'second problem correct state';
+ is $p3->category, 'Sidewalk and Curb Issues', 'correct problem category';
+ is $p3->detail, 'Sidewalk and Curb Issues problem', 'problem detail based on category name';
};
subtest 'check problems not re-created' => sub {