aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Arter <davea@mysociety.org>2019-04-12 16:04:04 +0100
committerDave Arter <davea@mysociety.org>2019-06-04 14:54:29 +0100
commit6ac6941ab96de883dfc101578444a2d1c76e1545 (patch)
treefe0fd4d3659412cbd5c6bfeca6b046e3125f3322
parent383e82be540be35a81c36f3d74400f2457c52454 (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.md2
-rw-r--r--perllib/Open311/GetServiceRequests.pm1
-rw-r--r--t/open311/getservicerequests.t38
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',