diff options
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Report.pm | 2 | ||||
-rw-r--r-- | perllib/Open311/GetServiceRequestUpdates.pm | 10 | ||||
-rw-r--r-- | perllib/Open311/GetServiceRequests.pm | 8 | ||||
-rw-r--r-- | t/app/controller/report_inspect.t | 2 | ||||
-rw-r--r-- | t/open311/getservicerequests.t | 9 | ||||
-rw-r--r-- | t/open311/getservicerequestupdates.t | 6 |
6 files changed, 20 insertions, 17 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm index e032caa09..7f798f4f4 100644 --- a/perllib/FixMyStreet/App/Controller/Report.pm +++ b/perllib/FixMyStreet/App/Controller/Report.pm @@ -534,7 +534,7 @@ sub inspect : Private { # to have the FMS timezone so we need to add the timezone otherwise # dates come back out the database at time +/- timezone offset. $timestamp = DateTime->from_epoch( - time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone, + time_zone => FixMyStreet->local_time_zone, epoch => $saved_at ); } diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index 263877e0a..3b436aaa7 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -94,7 +94,8 @@ sub update_comments { next unless $request_id || $request->{fixmystreet_id}; my $comment_time = eval { - DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" ); + DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" ) + ->set_time_zone(FixMyStreet->local_time_zone); }; next if $@; my $updated = DateTime::Format::W3CDTF->format_datetime($comment_time->clone->set_time_zone('UTC')); @@ -190,7 +191,12 @@ sub update_comments { $comment->state('hidden') unless $comment->text || $comment->photo || ($comment->problem_state && $state ne $old_state); - $p->lastupdate( $comment->created ); + # As comment->created has been looked at above, its time zone has been shifted + # to TIME_ZONE (if set). We therefore need to set it back to local before + # insertion. We also then need a clone, otherwise the setting of lastupdate + # will *also* reshift comment->created's time zone to TIME_ZONE. + my $created = $comment->created->set_time_zone(FixMyStreet->local_time_zone); + $p->lastupdate($created->clone); $p->update; $comment->insert(); diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm index 215361a10..194d8d296 100644 --- a/perllib/Open311/GetServiceRequests.pm +++ b/perllib/Open311/GetServiceRequests.pm @@ -109,9 +109,7 @@ sub create_problems { my $updated_time = eval { DateTime::Format::W3CDTF->parse_datetime( $request->{updated_datetime} || "" - )->set_time_zone( - FixMyStreet->time_zone || FixMyStreet->local_time_zone - ); + )->set_time_zone(FixMyStreet->local_time_zone); }; if ($@) { warn "Not creating problem $request_id for @{[$body->name]}, bad update time" @@ -125,9 +123,7 @@ sub create_problems { my $created_time = eval { DateTime::Format::W3CDTF->parse_datetime( $request->{requested_datetime} || "" - )->set_time_zone( - FixMyStreet->time_zone || FixMyStreet->local_time_zone - ); + )->set_time_zone(FixMyStreet->local_time_zone); }; $created_time = $updated_time if $@; diff --git a/t/app/controller/report_inspect.t b/t/app/controller/report_inspect.t index 397dd1b00..ef05288c7 100644 --- a/t/app/controller/report_inspect.t +++ b/t/app/controller/report_inspect.t @@ -749,7 +749,7 @@ FixMyStreet::override_config { # set the timezone on this so the date comparison below doesn't fail due to mismatched # timezones my $now = DateTime->now( - time_zone => FixMyStreet->time_zone || FixMyStreet->local_time_zone + time_zone => FixMyStreet->local_time_zone )->subtract(days => 1); $mech->submit_form(button => 'save', form_id => 'report_inspect_form', fields => { include_update => 1, public_update => 'An update', saved_at => $now->epoch }); diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t index f4eae59b1..55bb9ba11 100644 --- a/t/open311/getservicerequests.t +++ b/t/open311/getservicerequests.t @@ -76,13 +76,9 @@ my $o = Open311->new( ); my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00') - ->set_time_zone( - FixMyStreet->time_zone || FixMyStreet->local_time_zone - ); + ->set_time_zone(FixMyStreet->local_time_zone); my $p2_date = $dtf->parse_datetime('2010-04-15T06:37:38-08:00') - ->set_time_zone( - FixMyStreet->time_zone || FixMyStreet->local_time_zone - ); + ->set_time_zone(FixMyStreet->local_time_zone); my $start_date = $p1_date->clone; $start_date->add( hours => -2); my $end_date = $p2_date->clone; @@ -96,6 +92,7 @@ subtest 'basic parsing checks' => sub { end_date => $end_date ); FixMyStreet::override_config { + TIME_ZONE => 'Asia/Tokyo', MAPIT_URL => 'http://mapit.uk/', }, sub { $update->create_problems( $o, $body ); diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t index 573e23cfc..f680985a4 100644 --- a/t/open311/getservicerequestupdates.t +++ b/t/open311/getservicerequestupdates.t @@ -557,7 +557,11 @@ subtest 'date for comment correct' => sub { my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'servicerequestupdates.xml' => $local_requests_xml } ); my $update = Open311::GetServiceRequestUpdates->new( system_user => $user ); - $update->update_comments( $o, $bodies{2482} ); + FixMyStreet::override_config { + TIME_ZONE => 'Australia/Sydney', + }, sub { + $update->update_comments( $o, $bodies{2482} ); + }; my $comment = $problem->comments->first; is $comment->created, $dt, 'created date set to date from XML'; |