diff options
author | Struan Donald <struan@exo.org.uk> | 2012-03-27 18:05:13 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2012-03-27 18:05:13 +0100 |
commit | 737265d8ac35faf2d9db536e43420fca2f31a38f (patch) | |
tree | 3d6385bc14389d6ab2721e0da66eb10fdf938eb5 | |
parent | bca9cec685852ff1121a692ea09a518ed27540f8 (diff) |
add in start end date limits for get service request updates
-rw-r--r-- | perllib/Open311.pm | 9 | ||||
-rw-r--r-- | perllib/Open311/GetServiceRequestUpdates.pm | 13 | ||||
-rw-r--r-- | t/open311/getservicerequestupdates.t | 46 |
3 files changed, 67 insertions, 1 deletions
diff --git a/perllib/Open311.pm b/perllib/Open311.pm index a01a0528f..368982a2a 100644 --- a/perllib/Open311.pm +++ b/perllib/Open311.pm @@ -136,9 +136,18 @@ sub get_service_request_id_from_token { sub get_service_request_updates { my $self = shift; + my $start_date = shift; + my $end_date = shift; my $params = {}; + if ( $start_date || $end_date ) { + return 0 unless $start_date && $end_date; + + $params->{start_date} = $start_date; + $params->{end_date} = $end_date; + } + my $xml = $self->_get( $self->endpoints->{service_request_updates}, $params || undef ); my $service_requests = $self->_get_xml_object( $xml ); my $requests; diff --git a/perllib/Open311/GetServiceRequestUpdates.pm b/perllib/Open311/GetServiceRequestUpdates.pm index db9fe9436..cb6cf7661 100644 --- a/perllib/Open311/GetServiceRequestUpdates.pm +++ b/perllib/Open311/GetServiceRequestUpdates.pm @@ -6,11 +6,22 @@ use FixMyStreet::App; has council_list => ( is => 'ro' ); has system_user => ( is => 'ro' ); +has start_date => ( is => 'ro', default => undef ); +has end_date => ( is => 'ro', default => undef ); sub update_comments { my ( $self, $open311, $council_details ) = @_; - my $requests = $open311->get_service_request_updates( ); + my @args = (); + + if ( $self->start_date || $self->end_date ) { + return 0 unless $self->start_date && $self->end_date; + + push @args, $self->start_date; + push @args, $self->end_date; + } + + my $requests = $open311->get_service_request_updates( @args ); return 0 unless $open311->success; diff --git a/t/open311/getservicerequestupdates.t b/t/open311/getservicerequestupdates.t index c9f97cd5a..5f32a7537 100644 --- a/t/open311/getservicerequestupdates.t +++ b/t/open311/getservicerequestupdates.t @@ -3,6 +3,7 @@ use strict; use warnings; use Test::More; +use CGI::Simple; use FindBin; use lib "$FindBin::Bin/../perllib"; @@ -255,6 +256,51 @@ for my $test ( is $problem2->comments->count, $test->{p2_comments}, 'comment count for second problem'; }; } + +subtest 'using start and end date' => sub { + my $local_requests_xml = $requests_xml; + my $o = Open311->new( jurisdiction => 'mysociety', endpoint => 'http://example.com', test_mode => 1, test_get_returns => { 'update.xml' => $local_requests_xml } ); + + my $start_dt = DateTime->now(); + $start_dt->subtract( days => 1 ); + my $end_dt = DateTime->now(); + + + my $update = Open311::GetServiceRequestUpdates->new( + system_user => $user, + start_date => $start_dt, + ); + + my $res = $update->update_comments( $o ); + is $res, 0, 'returns 0 if start but no end date'; + + $update = Open311::GetServiceRequestUpdates->new( + system_user => $user, + end_date => $end_dt, + ); + + $res = $update->update_comments( $o ); + is $res, 0, 'returns 0 if end but no start date'; + + $update = Open311::GetServiceRequestUpdates->new( + system_user => $user, + start_date => $start_dt, + end_date => $end_dt, + ); + + my $council_details = { areaid => 2482 }; + $update->update_comments( $o, $council_details ); + + my $start = $start_dt . ''; + my $end = $end_dt . ''; + + my $uri = URI->new( $o->test_uri_used ); + my $c = CGI::Simple->new( $uri->query ); + + is $c->param('start_date'), $start, 'start date used'; + is $c->param('end_date'), $end, 'end date used'; +}; + $problem2->comments->delete(); $problem->comments->delete(); $problem2->delete; |