diff options
author | Dave Arter <davea@mysociety.org> | 2019-11-06 11:46:56 +0000 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2019-12-09 12:50:07 +0000 |
commit | 9efd2981c85b3fae48118071e12058413f46a73c (patch) | |
tree | 9377238eeac76bd7853a851db44521f3f8c674eb /t/cobrand | |
parent | 64d09262cabeac85704067d03a358b86265ef27b (diff) |
[TfL] Set safety critical flag on reports
Adds a cobrand feature that can mark entire categories or just specific
answers to extra questions as safety critical. When reports are made
in those categories or with those answers, marks the report as
safety critical.
Diffstat (limited to 't/cobrand')
-rw-r--r-- | t/cobrand/tfl.t | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/t/cobrand/tfl.t b/t/cobrand/tfl.t index 1c3b7e25b..24305727b 100644 --- a/t/cobrand/tfl.t +++ b/t/cobrand/tfl.t @@ -35,6 +35,90 @@ my $contact2 = $mech->create_contact_ok( category => 'Traffic lights', email => 'trafficlights@example.com', ); +$contact2->set_extra_fields({ + code => "safety_critical", + description => "Safety critical", + automated => "hidden_field", + order => 1, + datatype => "singlevaluelist", + values => [ + { + name => "Yes", + key => "yes" + }, + { + name => "No", + key => "no" + } + ] +}); +$contact2->update; +my $contact3 = $mech->create_contact_ok( + body_id => $body->id, + category => 'Pothole', + email => 'pothole@example.com', +); +$contact3->set_extra_fields({ + code => "safety_critical", + description => "Safety critical", + automated => "hidden_field", + order => 1, + datatype => "singlevaluelist", + values => [ + { + name => "Yes", + key => "yes" + }, + { + name => "No", + key => "no" + } + ] +}); +$contact3->update; +my $contact4 = $mech->create_contact_ok( + body_id => $body->id, + category => 'Flooding', + email => 'flooding@example.com', +); +$contact4->set_extra_fields( + { + code => "safety_critical", + description => "Safety critical", + automated => "hidden_field", + order => 1, + datatype => "singlevaluelist", + values => [ + { + name => "Yes", + key => "yes" + }, + { + name => "No", + key => "no" + } + ] + }, + { + code => "location", + description => "Where is the flooding?", + variable => "true", + order => 1, + required => "true", + datatype => "singlevaluelist", + values => [ + { + name => "Carriageway", + key => "carriageway" + }, + { + name => "Footway", + key => "footway" + } + ] + } +); +$contact4->update; FixMyStreet::override_config { ALLOWED_COBRANDS => 'tfl', @@ -200,6 +284,96 @@ subtest 'Bromley staff cannot access TfL admin' => sub { }; FixMyStreet::override_config { + ALLOWED_COBRANDS => [ 'tfl', 'bromley', 'fixmystreet' ], + MAPIT_URL => 'http://mapit.uk/', + COBRAND_FEATURES => { + internal_ips => { tfl => [ '127.0.0.1' ] }, + safety_critical_categories => { tfl => { + Pothole => 1, + Flooding => { + location => [ "carriageway" ], + }, + } }, + }, +}, sub { + +for my $host ( 'tfl.fixmystreet.com', 'www.fixmystreet.com', 'bromley.fixmystreet.com' ) { + for my $test ( + { + name => "test non-safety critical category", + safety_critical => 'no', + category => "Traffic lights" + }, + { + name => "test safety critical category", + safety_critical => 'yes', + category => "Pothole" + }, + { + name => "test category extra field - safety critical", + safety_critical => 'yes', + category => "Flooding", + extra_fields => { + location => "carriageway", + } + }, + { + name => "test category extra field - non-safety critical", + safety_critical => 'no', + category => "Flooding", + extra_fields => { + location => "footway", + } + }, + ) { + subtest $test->{name} . ' on ' . $host => sub { + $mech->log_in_ok( $user->email ); + $mech->host($host); + $mech->get_ok('/around'); + $mech->submit_form_ok( { with_fields => { pc => 'BR1 3UH', } }, "submit location" ); + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); + $mech->submit_form_ok( + { + with_fields => { + category => $test->{category} + }, + button => 'submit_category_part_only', + } + ); + $mech->submit_form_ok( + { + with_fields => { + title => 'Test Report', + detail => 'Test report details.', + may_show_name => '1', + category => $test->{category}, + %{ $test->{extra_fields} || {} }, + $host eq 'bromley.fixmystreet.com' ? ( + fms_extra_title => 'DR', + first_name => "Joe", + last_name => "Bloggs", + ) : ( + name => 'Joe Bloggs', + ), + } + }, + "submit report form" + ); + + my $report = FixMyStreet::App->model('DB::Problem')->to_body( $body->id )->search(undef, { + order_by => { -desc => 'id' }, + })->first; + ok $report, "Found the report"; + + is $report->get_extra_field_value('safety_critical'), $test->{safety_critical}, "safety critical flag set to " . $test->{safety_critical}; + + $mech->log_out_ok; + }; + } +} +}; + +FixMyStreet::override_config { ALLOWED_COBRANDS => 'tfl', MAPIT_URL => 'http://mapit.uk/', COBRAND_FEATURES => { internal_ips => { tfl => [ '127.0.0.1' ] } }, |