diff options
Diffstat (limited to 't/app/controller')
-rw-r--r-- | t/app/controller/about.t | 2 | ||||
-rw-r--r-- | t/app/controller/admin.t | 49 | ||||
-rw-r--r-- | t/app/controller/report_import.t | 2 | ||||
-rw-r--r-- | t/app/controller/report_new.t | 161 | ||||
-rw-r--r-- | t/app/controller/reports.t | 4 |
5 files changed, 189 insertions, 29 deletions
diff --git a/t/app/controller/about.t b/t/app/controller/about.t index ea7b1af20..4e49cdac9 100644 --- a/t/app/controller/about.t +++ b/t/app/controller/about.t @@ -13,7 +13,7 @@ $mech->content_contains('html class="no-js" lang="en-gb"'); SKIP: { skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 8 ) - unless FixMyStreet::App->config->{ALLOWED_COBRANDS} =~ m{emptyhomes}; + unless FixMyStreet::Cobrand->exists('emptyhomes'); # check that geting the page as EHA produces a different page ok $mech->host("reportemptyhomes.co.uk"), 'change host to reportemptyhomes'; diff --git a/t/app/controller/admin.t b/t/app/controller/admin.t index d8a1c24a1..09d99cfdf 100644 --- a/t/app/controller/admin.t +++ b/t/app/controller/admin.t @@ -105,34 +105,39 @@ subtest 'check summary counts' => sub { $mech->content_contains( "$q_count questionnaires sent" ); - ok $mech->host('barnet.fixmystreet.com'); + SKIP: { + skip( "Need 'barnet' in ALLOWED_COBRANDS config", 7 ) + unless FixMyStreet::Cobrand->exists('barnet'); - $mech->get_ok('/admin'); - $mech->title_like(qr/Summary/); + ok $mech->host('barnet.fixmystreet.com'); - my ($num_live) = $mech->content =~ /(\d+)<\/strong> live problems/; - my ($num_alerts) = $mech->content =~ /(\d+) confirmed alerts/; - my ($num_qs) = $mech->content =~ /(\d+) questionnaires sent/; + $mech->get_ok('/admin'); + $mech->title_like(qr/Summary/); - $report->council(2489); - $report->cobrand('barnet'); - $report->update; + my ($num_live) = $mech->content =~ /(\d+)<\/strong> live problems/; + my ($num_alerts) = $mech->content =~ /(\d+) confirmed alerts/; + my ($num_qs) = $mech->content =~ /(\d+) questionnaires sent/; - $alert->cobrand('barnet'); - $alert->update; + $report->council(2489); + $report->cobrand('barnet'); + $report->update; - $mech->get_ok('/admin'); + $alert->cobrand('barnet'); + $alert->update; - $mech->content_contains( ($num_live+1) . "</strong> live problems" ); - $mech->content_contains( ($num_alerts+1) . " confirmed alerts" ); - $mech->content_contains( ($num_qs+1) . " questionnaires sent" ); + $mech->get_ok('/admin'); - $report->council(2504); - $report->cobrand(''); - $report->update; + $mech->content_contains( ($num_live+1) . "</strong> live problems" ); + $mech->content_contains( ($num_alerts+1) . " confirmed alerts" ); + $mech->content_contains( ($num_qs+1) . " questionnaires sent" ); + + $report->council(2504); + $report->cobrand(''); + $report->update; - $alert->cobrand(''); - $alert->update; + $alert->cobrand(''); + $alert->update; + } FixMyStreet::App->model('DB::Problem')->search( { council => 1 } )->update( { council => 2489 } ); ok $mech->host('fixmystreet.com'); @@ -222,6 +227,8 @@ subtest 'check open311 configuring' => sub { api_key => 'api key', endpoint => 'http://example.com/open311', jurisdiction => 'mySociety', + send_comments => 0, + send_method => 'Open311', } } ); @@ -244,6 +251,8 @@ subtest 'check open311 configuring' => sub { api_key => 'new api key', endpoint => 'http://example.org/open311', jurisdiction => 'open311', + send_comments => 0, + send_method => 'Open311', } } ); diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t index 934bf0346..eb686b44e 100644 --- a/t/app/controller/report_import.t +++ b/t/app/controller/report_import.t @@ -266,7 +266,7 @@ subtest "Submit a correct entry (with location) to cobrand" => sub { SKIP: { skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 20 ) - unless FixMyStreet::App->config->{ALLOWED_COBRANDS} =~ m{fiksgatami}; + unless FixMyStreet::Cobrand->exists('fiksgatami'); mySociety::MaPit::configure('http://mapit.nuug.no/'); ok $mech->host("fiksgatami.no"), 'change host to fiksgatami'; diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 625c7531f..5fc6e6a5d 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -48,9 +48,23 @@ my $contact3 = FixMyStreet::App->model('DB::Contact')->find_or_create( { category => 'Trees', email => 'trees@example.com', } ); +my $contact4 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + area_id => 2482, # Bromley + category => 'Trees', + email => 'trees@example.com', +} ); +my $contact5 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + area_id => 2651, # Edinburgh + category => 'Trees', + email => 'trees@example.com', +} ); ok $contact1, "created test contact 1"; ok $contact2, "created test contact 2"; ok $contact3, "created test contact 3"; +ok $contact4, "created test contact 4"; +ok $contact5, "created test contact 5"; # test that the various bit of form get filled in and errors correctly # generated. @@ -293,7 +307,7 @@ foreach my $test ( is_deeply $mech->form_errors, [], "no errors for pc '$test->{pc}'"; # click through to the report page - $mech->follow_link_ok( { text => 'skip this step', }, + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); # submit the main form @@ -473,7 +487,7 @@ subtest "test password errors for a user who is signing in as they report" => su "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'Skip this step', }, + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); $mech->submit_form_ok( @@ -520,7 +534,7 @@ subtest "test report creation for a user who is signing in as they report" => su "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'Skip this step', }, + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); $mech->submit_form_ok( @@ -614,7 +628,7 @@ foreach my $test ( "submit location" ); # click through to the report page - $mech->follow_link_ok( { text => 'Skip this step', }, + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); # check that the fields are correctly prefilled @@ -717,7 +731,7 @@ subtest "check that a lat/lon off coast leads to /around" => sub { is $mech->uri->path, '/around', "redirected to '/around'"; is_deeply # - $mech->page_errors, + $mech->form_errors, [ 'That spot does not appear to be covered by a council. If you have' . ' tried to report an issue past the shoreline, for example, please' . ' specify the closest point on land.' ], # @@ -725,8 +739,145 @@ subtest "check that a lat/lon off coast leads to /around" => sub { }; +for my $test ( + { + desc => 'user title not set if not bromley problem', + host => 'http://www.fixmystreet.com', + postcode => 'EH99 1SP', + fms_extra_title => '', + extra => undef, + user_title => undef, + }, + { + desc => 'title shown for bromley problem on main site', + host => 'http://www.fixmystreet.com', + postcode => 'BR1 3UH', + fms_extra_title => 'MR', + extra => [ + { + name => 'fms_extra_title', + value => 'MR', + description => 'FMS_EXTRA_TITLE', + }, + ], + user_title => 'MR', + }, + { + desc => + 'title, first and last name shown for bromley problem on cobrand', + host => 'http://bromley.fixmystreet.com', + postcode => 'BR1 3UH', + first_name => 'Test', + last_name => 'User', + fms_extra_title => 'MR', + extra => [ + { + name => 'fms_extra_title', + value => 'MR', + description => 'FMS_EXTRA_TITLE', + }, + { + name => 'first_name', + value => 'Test', + description => 'FIRST_NAME', + }, + { + name => 'last_name', + value => 'User', + description => 'LAST_NAME', + }, + ], + user_title => 'MR', + }, + ) +{ + subtest $test->{desc} => sub { + $mech->host( $test->{host} ); + + $mech->log_out_ok; + $mech->clear_emails_ok; + + $mech->get_ok('/'); + $mech->submit_form_ok( { with_fields => { pc => $test->{postcode}, } }, + "submit location" ); + $mech->follow_link_ok( + { text_regex => qr/skip this step/i, }, + "follow 'skip this step' link" + ); + + my $fields = $mech->visible_form_values('mapSkippedForm'); + if ( $test->{fms_extra_title} ) { + ok exists( $fields->{fms_extra_title} ), 'user title field displayed'; + } else { + ok !exists( $fields->{fms_extra_title} ), 'user title field not displayed'; + } + if ( $test->{first_name} ) { + ok exists( $fields->{first_name} ), 'first name field displayed'; + ok exists( $fields->{last_name} ), 'last name field displayed'; + ok !exists( $fields->{name} ), 'no name field displayed'; + } + else { + ok !exists( $fields->{first_name} ), + 'first name field not displayed'; + ok !exists( $fields->{last_name} ), 'last name field not displayed'; + ok exists( $fields->{name} ), 'name field displayed'; + } + + my $submission_fields = { + title => "Test Report", + detail => 'Test report details.', + photo => '', + email => 'firstlast@example.com', + may_show_name => '1', + phone => '07903 123 456', + category => 'Trees', + password_register => '', + }; + + $submission_fields->{fms_extra_title} = $test->{fms_extra_title} + if $test->{fms_extra_title}; + + if ( $test->{first_name} ) { + $submission_fields->{first_name} = $test->{first_name}; + $submission_fields->{last_name} = $test->{last_name}; + } + else { + $submission_fields->{name} = 'Test User'; + } + + $mech->submit_form_ok( { with_fields => $submission_fields }, + "submit good details" ); + + my $email = $mech->get_email; + ok $email, "got an email"; + like $email->body, qr/confirm the problem/i, "confirm the problem"; + + my ($url) = $email->body =~ m{(http://\S+)}; + ok $url, "extracted confirm url '$url'"; + + # confirm token in order to update the user details + $mech->get_ok($url); + + my $user = + FixMyStreet::App->model('DB::User') + ->find( { email => 'firstlast@example.com' } ); + + my $report = $user->problems->first; + ok $report, "Found the report"; + my $extras = $report->extra; + is $user->title, $test->{'user_title'}, 'user title correct'; + is_deeply $extras, $test->{extra}, 'extra contains correct values'; + + $user->problems->delete; + $user->alerts->delete; + $user->delete; + }; +} + $contact1->delete; $contact2->delete; $contact3->delete; +$contact4->delete; +$contact5->delete; done_testing(); diff --git a/t/app/controller/reports.t b/t/app/controller/reports.t index 58803d778..801dbeddb 100644 --- a/t/app/controller/reports.t +++ b/t/app/controller/reports.t @@ -17,14 +17,14 @@ $mech->follow_link_ok( { text_regex => qr/Birmingham/ } ); SKIP: { skip( "Need 'emptyhomes' in ALLOWED_COBRANDS config", 8 ) - unless FixMyStreet::App->config->{ALLOWED_COBRANDS} =~ m{emptyhomes}; + unless FixMyStreet::Cobrand->exists('emptyhomes'); ok $mech->host("reportemptyhomes.com"), 'change host to reportemptyhomes'; $mech->get_ok('/reports'); # EHA lacks one column the others have $mech->content_lacks('state unknown'); skip( "Need 'fiksgatami' in ALLOWED_COBRANDS config", 8 ) - unless FixMyStreet::App->config->{ALLOWED_COBRANDS} =~ m{fiksgatami}; + unless FixMyStreet::Cobrand->exists('fiksgatami'); mySociety::MaPit::configure('http://mapit.nuug.no/'); ok $mech->host("fiksgatami.no"), 'change host to fiksgatami'; $mech->get_ok('/reports'); |