aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2018-03-16 16:22:13 +0000
committerMatthew Somerville <matthew-github@dracos.co.uk>2018-03-16 16:22:13 +0000
commita0a9ee69129480f9bd0026665b71e94ec4f2b311 (patch)
treea429718d8f4683cbb4305d13bf27785917529c10
parent9d9352ca6bbd757b30796d3cebd42f3ba06f6ddc (diff)
parentb10ef57fc439648be3caaf44d7cbe117bf1fb521 (diff)
Merge branch '2023-bad-open311-dates'
-rw-r--r--CHANGELOG.md1
-rw-r--r--perllib/FixMyStreet/App/Controller/Open311.pm8
-rw-r--r--t/app/controller/open311.t13
3 files changed, 18 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 20a7ce037..a0e8bb1d6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@
- Don't delete hidden field values when inspecting reports. #1999
- Fix text layout issues in /reports/…/summary dashboard charts.
- Fix post-edit issues on admin report edit page.
+ - Truncate dates in Open311 output to the second. #2023
- Admin improvements:
- Inspectors can set non_public status of reports. #1992
- Default start date is shown on the dashboard.
diff --git a/perllib/FixMyStreet/App/Controller/Open311.pm b/perllib/FixMyStreet/App/Controller/Open311.pm
index 50f082e39..b50728b77 100644
--- a/perllib/FixMyStreet/App/Controller/Open311.pm
+++ b/perllib/FixMyStreet/App/Controller/Open311.pm
@@ -231,14 +231,15 @@ sub output_requests : Private {
$problem->state( $statusmap{$problem->state} );
+ my ($lat, $lon) = map { Utils::truncate_coordinate($_) } $problem->latitude, $problem->longitude;
my $request =
{
'service_request_id' => $id,
'title' => $problem->title, # Not in Open311 v2
'detail' => $problem->detail, # Not in Open311 v2
'description' => $problem->title .': ' . $problem->detail,
- 'lat' => $problem->latitude,
- 'long' => $problem->longitude,
+ 'lat' => $lat,
+ 'long' => $lon,
'status' => $problem->state,
# 'status_notes' => {},
# Zurich has visible unconfirmed reports
@@ -443,11 +444,10 @@ sub is_jurisdiction_id_ok : Private {
# Input: DateTime object
# Output: 2011-04-23T10:28:55+02:00
-# FIXME Need generic solution to find time zone
sub w3date : Private {
my $datestr = shift;
return unless $datestr;
- return DateTime::Format::W3CDTF->format_datetime($datestr);
+ return DateTime::Format::W3CDTF->format_datetime($datestr->truncate(to => 'second'));
}
=head1 AUTHOR
diff --git a/t/app/controller/open311.t b/t/app/controller/open311.t
index 29cd38129..9f4f594fe 100644
--- a/t/app/controller/open311.t
+++ b/t/app/controller/open311.t
@@ -1,3 +1,4 @@
+use JSON::MaybeXS;
use FixMyStreet::TestMech;
my $mech = FixMyStreet::TestMech->new;
@@ -5,4 +6,16 @@ my $mech = FixMyStreet::TestMech->new;
$mech->get_ok('/open311.cgi/v2/requests.rss?jurisdiction_id=fiksgatami.no&status=open&agency_responsible=1854');
like $mech->uri, qr[/open311/v2/requests\.rss\?.{65}]; # Don't know order parameters will be in now
+$mech->create_problems_for_body(2, 2237, 'Around page');
+$mech->get_ok('/open311/v2/requests.xml?jurisdiction_id=foo&status=open&agency_responsible=2237');
+$mech->content_contains('<description>Around page Test 2 for 2237: Around page Test 2 for 2237 Detail</description>');
+$mech->content_contains('<interface_used>Web interface</interface_used>');
+$mech->content_contains('<status>open</status>');
+
+$mech->get_ok('/open311/v2/requests.json?jurisdiction_id=foo&status=open&agency_responsible=2237');
+my $json = decode_json($mech->content);
+my $problems = $json->{requests}[0]{request};
+is @$problems, 2;
+like $problems->[0]{description}, qr/Around page Test/;
+
done_testing();