diff options
| -rw-r--r-- | perllib/Open311/GetServiceRequestUpdates.pm | 5 | ||||
| -rw-r--r-- | t/open311/getservicerequestupdates.t | 42 | 
2 files changed, 47 insertions, 0 deletions
| diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index 20212bc95..60b37736c 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -9,6 +9,7 @@ use DateTime::Format::W3CDTF;  has system_user => ( is => 'rw' );  has start_date => ( is => 'ro', default => sub { undef } );  has end_date => ( is => 'ro', default => sub { undef } ); +has body => ( is => 'ro', default => sub { undef } );  has suppress_alerts => ( is => 'rw', default => 0 );  has verbose => ( is => 'ro', default => 0 );  has schema => ( is =>'ro', lazy => 1, default => sub { FixMyStreet::DB->schema->connect } ); @@ -29,6 +30,10 @@ sub fetch {          }      ); +    if ( $self->body ) { +        $bodies = $bodies->search( { name => $self->body } ); +    } +      while ( my $body = $bodies->next ) {          my %open311_conf = ( diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t index 7ebab3b3f..b9e29c99e 100644 --- a/t/open311/getservicerequestupdates.t +++ b/t/open311/getservicerequestupdates.t @@ -725,6 +725,48 @@ subtest 'check that existing comments are not duplicated' => sub {      is $problem->comments->count, 2, 'if comments are deleted then they are added';  }; +subtest 'check that can limit fetching to a body' => sub { +    my $requests_xml = qq{<?xml version="1.0" encoding="utf-8"?> +    <service_requests_updates> +    <request_update> +    <update_id>638344</update_id> +    <service_request_id>@{[ $problem->external_id ]}</service_request_id> +    <status>open</status> +    <description>This is a note</description> +    <updated_datetime>UPDATED_DATETIME</updated_datetime> +    </request_update> +    </service_requests_updates> +    }; + +    $problem->comments->delete; + +    is $problem->comments->count, 0, 'one comment before fetching updates'; + +    $requests_xml =~ s/UPDATED_DATETIME/$dt/; + +    my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'servicerequestupdates.xml' => $requests_xml } ); + +    my $update = Open311::GetServiceRequestUpdates->new( +        body => 'Oxfordshire', +        system_user => $user, +    ); + +    $update->fetch( $o ); + +    $problem->discard_changes; +    is $problem->comments->count, 0, 'no comments after fetching updates'; + +    $update = Open311::GetServiceRequestUpdates->new( +        body => 'Bromley', +        system_user => $user, +    ); + +    $update->fetch( $o ); + +    $problem->discard_changes; +    is $problem->comments->count, 1, '1 comment after fetching updates'; +}; +  subtest 'check that external_status_code is stored correctly' => sub {      my $requests_xml = qq{<?xml version="1.0" encoding="utf-8"?>      <service_requests_updates> | 
