diff options
author | Struan Donald <struan@exo.org.uk> | 2020-08-06 09:43:53 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2020-08-06 13:42:51 +0100 |
commit | 1e7cba67a53eead8cedcbf6aa7af12eb7ff4bf63 (patch) | |
tree | eecc1d98b6e78c8b7695028f5e5dc2cf6c685df2 | |
parent | ae687e6dd042982f2423d4e7e79e41c54d729e7b (diff) |
[Open311] use staff categories when fetching reports
At the moment if you fetch a report in a staff category it will still be
created but will be in the Other category. Given that some staff
categories are marked as private this can allow reports that should be
private to be put in a public category.
-rw-r--r-- | perllib/Open311/GetServiceRequests.pm | 2 | ||||
-rw-r--r-- | t/open311/getservicerequests.t | 40 |
2 files changed, 41 insertions, 1 deletions
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm index 2545f6f29..eea7c0f26 100644 --- a/perllib/Open311/GetServiceRequests.pm +++ b/perllib/Open311/GetServiceRequests.pm @@ -81,7 +81,7 @@ sub create_problems { } my $contacts = $self->schema->resultset('Contact') - ->active + ->not_deleted_admin ->search( { body_id => $body->id } ); for my $request (@$requests) { diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t index 672459f3f..7a69d0ff6 100644 --- a/t/open311/getservicerequests.t +++ b/t/open311/getservicerequests.t @@ -534,6 +534,46 @@ subtest "non_public contacts result in non_public reports" => sub { }; +subtest "staff and non_public contacts result in non_public reports" => sub { + + $contact->update({ + non_public => 1, + state => 'staff' + }); + my $o = Open311->new( + jurisdiction => 'mysociety', + endpoint => 'http://example.com', + test_mode => 1, + test_get_returns => { 'requests.xml' => prepare_xml( {} ) } + ); + + my $update = Open311::GetServiceRequests->new( + system_user => $user, + start_date => $start_date, + end_date => $end_date + ); + + FixMyStreet::override_config { + MAPIT_URL => 'http://mapit.uk/', + }, sub { + $update->create_problems( $o, $body ); + }; + + my $p = FixMyStreet::DB->resultset('Problem')->search( + { external_id => 123456, category => $contact->category } + )->first; + + ok $p, 'problem created'; + is $p->non_public, 1, "report non_public is set correctly"; + + $p->delete; + $contact->update({ + non_public => 0, + state => 'confirmed' + }); + +}; + for my $test ( { test_desc => 'filters out phone numbers', |