diff options
author | Dave Arter <davea@mysociety.org> | 2019-04-12 16:04:04 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2019-06-04 14:54:29 +0100 |
commit | 6ac6941ab96de883dfc101578444a2d1c76e1545 (patch) | |
tree | fe0fd4d3659412cbd5c6bfeca6b046e3125f3322 | |
parent | 383e82be540be35a81c36f3d74400f2457c52454 (diff) |
[Open311] Always mark fetched reports non_public for non_public contacts
This change ensures that a report fetched via Open311 for a non_public category
will always be marked as non_public even if its Open311 XML doesn’t explicitly
include the non_public tag.
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | perllib/Open311/GetServiceRequests.pm | 1 | ||||
-rw-r--r-- | t/open311/getservicerequests.t | 38 |
3 files changed, 41 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index ea2d6cd56..9cfc0e5f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ - Open311 improvements: - Support use of 'private' service definition <keywords> to mark reports made in that category private. + - Ensure any reports fetched in a category marked private are also + marked private on the site. * v2.6 (3rd May 2019) - New features: diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm index 194d8d296..09a51319e 100644 --- a/perllib/Open311/GetServiceRequests.pm +++ b/perllib/Open311/GetServiceRequests.pm @@ -157,6 +157,7 @@ sub create_problems { my $state = $open311->map_state($request->{status}); my $non_public = $request->{non_public} ? 1 : 0; + $non_public ||= $contacts[0] ? $contacts[0]->non_public : 0; my $problem = $self->schema->resultset('Problem')->new( { diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t index 55bb9ba11..01613cb58 100644 --- a/t/open311/getservicerequests.t +++ b/t/open311/getservicerequests.t @@ -469,6 +469,44 @@ for my $test ( }; } +subtest "non_public contacts result in non_public reports" => sub { + + $contact->update({ + non_public => 1 + }); + 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 } + )->first; + + ok $p, 'problem created'; + is $p->non_public, 1, "report non_public is set correctly"; + + $p->delete; + $contact->update({ + non_public => 0 + }); + +}; + for my $test ( { test_desc => 'filters out phone numbers', |