diff options
Diffstat (limited to 't')
-rw-r--r-- | t/app/model/problem.t | 65 | ||||
-rw-r--r-- | t/open311/getupdates.t | 31 |
2 files changed, 45 insertions, 51 deletions
diff --git a/t/app/model/problem.t b/t/app/model/problem.t index 661a8827f..be949054b 100644 --- a/t/app/model/problem.t +++ b/t/app/model/problem.t @@ -2,6 +2,7 @@ use FixMyStreet::TestMech; use FixMyStreet; use FixMyStreet::DB; use FixMyStreet::Script::Reports; +use Open311::GetUpdates; use Sub::Override; my $problem_rs = FixMyStreet::DB->resultset('Problem'); @@ -133,6 +134,7 @@ $problem->anonymous(1); $problem->insert; my $tz_local = DateTime::TimeZone->new( name => 'local' ); +my $comment_time = DateTime->now->set_time_zone( $tz_local ); my $body = FixMyStreet::DB->resultset('Body')->new({ name => 'Edinburgh City Council' @@ -140,52 +142,32 @@ my $body = FixMyStreet::DB->resultset('Body')->new({ for my $test ( { - desc => 'request older than problem ignored', - lastupdate => '', + desc => 'request after problem created', request => { - updated_datetime => DateTime::Format::W3CDTF->new()->format_datetime( DateTime->now()->set_time_zone( $tz_local )->subtract( days => 2 ) ), - }, - created => 0, - }, - { - desc => 'request newer than problem created', - lastupdate => '', - request => { - updated_datetime => DateTime::Format::W3CDTF->new()->format_datetime( DateTime->now()->set_time_zone( $tz_local ) ), status => 'open', - status_notes => 'this is an update from the council', + comment_time => $comment_time, + description => 'this is an update from the council', }, - created => 1, state => 'confirmed', - mark_fixed => 0, - mark_open => 0, }, { desc => 'update with state of closed fixes problem', - lastupdate => '', request => { - updated_datetime => DateTime::Format::W3CDTF->new()->format_datetime( DateTime->now()->set_time_zone( $tz_local ) ), + comment_time => $comment_time, status => 'closed', - status_notes => 'the council have fixed this', + description => 'the council have fixed this', }, - created => 1, - state => 'fixed', - mark_fixed => 1, - mark_open => 0, + state => 'fixed - council', }, { - desc => 'update with state of open leaves problem as fixed', - lastupdate => '', + desc => 'update with state of open reopens problem', request => { - updated_datetime => DateTime::Format::W3CDTF->new()->format_datetime( DateTime->now()->set_time_zone( $tz_local ) ), + comment_time => $comment_time, status => 'open', - status_notes => 'the council do not think this is fixed', + description => 'the council do not think this is fixed', }, - created => 1, - start_state => 'fixed', - state => 'fixed', - mark_fixed => 0, - mark_open => 0, + start_state => 'fixed - council', + state => 'confirmed', }, ) { subtest $test->{desc} => sub { @@ -197,23 +179,20 @@ for my $test ( $problem->update; my $w3c = DateTime::Format::W3CDTF->new(); - my $ret = $problem->update_from_open311_service_request( $test->{request}, $body, $user ); - is $ret, $test->{created}, 'return value'; - - return unless $test->{created}; + my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1 ); + my $updates = Open311::GetUpdates->new( + current_open311 => $o, + current_body => $body, + system_user => $user, + ); + my $update = $updates->process_update($test->{request}, $problem); $problem->discard_changes; - is $problem->lastupdate, $w3c->parse_datetime($test->{request}->{updated_datetime}), 'lastupdate time'; - - my $update = $problem->comments->first; + is $problem->lastupdate, $test->{request}->{comment_time}, 'lastupdate time'; ok $update, 'updated created'; - is $problem->state, $test->{state}, 'problem state'; - - is $update->text, $test->{request}->{status_notes}, 'update text'; - is $update->mark_open, $test->{mark_open}, 'update mark_open flag'; - is $update->mark_fixed, $test->{mark_fixed}, 'update mark_fixed flag'; + is $update->text, $test->{request}->{description}, 'update text'; }; } diff --git a/t/open311/getupdates.t b/t/open311/getupdates.t index 351f17f6f..c1e51d380 100644 --- a/t/open311/getupdates.t +++ b/t/open311/getupdates.t @@ -18,9 +18,6 @@ my $body = FixMyStreet::DB->resultset('Body')->new( { name => 'Test Body', } ); -my $updates = Open311::GetUpdates->new( system_user => $user ); -ok $updates, 'created object'; - my $requests_xml = qq{<?xml version="1.0" encoding="utf-8"?> <service_requests> <request> @@ -101,7 +98,12 @@ for my $test ( my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'requests.xml' => $local_requests_xml } ); - ok $updates->update_reports( [ 638344 ], $o, $body ), 'Updated reports'; + my $updates = Open311::GetUpdates->new( + system_user => $user, + current_open311 => $o, + current_body => $body, + ); + $updates->update_reports( [ $problem ] ); my @parts = uri_split($o->test_uri_used); is $parts[2], '/requests.xml', 'path matches'; my @qs = sort split '&', $parts[3]; @@ -179,7 +181,13 @@ subtest 'update with two requests' => sub { my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'requests.xml' => $local_requests_xml } ); - ok $updates->update_reports( [ 638344,638345 ], $o, $body ), 'Updated reports'; + my $updates = Open311::GetUpdates->new( + system_user => $user, + current_open311 => $o, + current_body => $body, + ); + + $updates->update_reports( [ $problem, $problem2 ] ); my @parts = uri_split($o->test_uri_used); is $parts[2], '/requests.xml', 'path matches'; my @qs = sort split '&', $parts[3]; @@ -227,7 +235,7 @@ my $problem3 = $problem_rs->create( { external_id => 638346, } ); -subtest 'test translation of auto-added comment from old-style Open311 update' => sub { +subtest 'test auto-added comment from old-style Open311 update' => sub { my $dt = sprintf( '<updated_datetime>%s</updated_datetime>', DateTime->now ); $requests_xml =~ s/UPDATED_DATETIME/$dt/; @@ -236,7 +244,13 @@ subtest 'test translation of auto-added comment from old-style Open311 update' = FixMyStreet::override_config { ALLOWED_COBRANDS => [ 'fixamingata' ], }, sub { - ok $updates->update_reports( [ 638346 ], $o, $body ), 'Updated reports'; + my $updates = Open311::GetUpdates->new( + system_user => $user, + current_open311 => $o, + current_body => $body, + blank_updates_permitted => 1, + ); + $updates->update_reports( [ $problem3 ] ); }; my @parts = uri_split($o->test_uri_used); is $parts[2], '/requests.xml', 'path matches'; @@ -244,7 +258,8 @@ subtest 'test translation of auto-added comment from old-style Open311 update' = is_deeply(\@qs, [ 'jurisdiction_id=mysociety', 'service_request_id=638346' ], 'query string matches'); is $problem3->comments->count, 1, 'added a comment'; - is $problem3->comments->first->text, "Stängd av kommunen", 'correct comment text'; + is $problem3->comments->first->problem_state, 'fixed - council'; + is $problem3->comments->first->text, '', 'correct comment text'; }; END { |