diff options
Diffstat (limited to 't/app/controller')
-rw-r--r-- | t/app/controller/alert_new.t | 2 | ||||
-rw-r--r-- | t/app/controller/around.t | 2 | ||||
-rw-r--r-- | t/app/controller/auth.t | 4 | ||||
-rw-r--r-- | t/app/controller/contact.t | 37 | ||||
-rw-r--r-- | t/app/controller/dashboard.t | 6 | ||||
-rw-r--r-- | t/app/controller/questionnaire.t | 23 | ||||
-rw-r--r-- | t/app/controller/report_display.t | 24 | ||||
-rw-r--r-- | t/app/controller/report_new.t | 105 | ||||
-rw-r--r-- | t/app/controller/report_new_open311.t | 8 | ||||
-rw-r--r-- | t/app/controller/report_updates.t | 4 | ||||
-rw-r--r-- | t/app/controller/rss.t | 11 |
11 files changed, 167 insertions, 59 deletions
diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t index 7ba887824..d66590c57 100644 --- a/t/app/controller/alert_new.t +++ b/t/app/controller/alert_new.t @@ -448,7 +448,7 @@ subtest "Test normal alert signups and that alerts are sent" => sub { $count++ if $_->body =~ /The following updates have been left on this problem:/; $count++ if $_->body =~ /The following new problems have been reported to City of\s*Edinburgh Council:/; $count++ if $_->body =~ /The following nearby problems have been added:/; - $count++ if $_->body =~ /\s+-\s+Testing,\s+EH1\s+1BB/; + $count++ if $_->body =~ /\s+-\s+Testing/; } is $count, 5, 'Five emails with the right things in them'; diff --git a/t/app/controller/around.t b/t/app/controller/around.t index ca1694b49..db03e00f4 100644 --- a/t/app/controller/around.t +++ b/t/app/controller/around.t @@ -72,7 +72,7 @@ foreach my $test ( $mech->get_ok('/'); $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } }, "good location" ); - is_deeply $mech->form_errors, [], "no errors for pc '$test->{pc}'"; + is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'"; is_deeply $mech->extract_location, $test, "got expected location for pc '$test->{pc}'"; }; diff --git a/t/app/controller/auth.t b/t/app/controller/auth.t index efc5e60e6..67466e959 100644 --- a/t/app/controller/auth.t +++ b/t/app/controller/auth.t @@ -33,7 +33,7 @@ for my $test ( my ( $email, $error_message ) = @$test; pass "--- testing bad email '$email' gives error '$error_message'"; $mech->get_ok('/auth'); - is_deeply $mech->form_errors, [], 'no errors initially'; + is_deeply $mech->page_errors, [], 'no errors initially'; $mech->submit_form_ok( { form_name => 'general_auth', @@ -43,7 +43,7 @@ for my $test ( "try to create an account with email '$email'" ); is $mech->uri->path, '/auth', "still on auth page"; - is_deeply $mech->form_errors, [ $error_message ], 'no errors initially'; + is_deeply $mech->page_errors, [ $error_message ], 'errors match'; } # create a new account diff --git a/t/app/controller/contact.t b/t/app/controller/contact.t index 970241d12..11e0d30cf 100644 --- a/t/app/controller/contact.t +++ b/t/app/controller/contact.t @@ -131,8 +131,7 @@ for my $test ( message => '', }, page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ + [ 'There were problems with your report. Please see below.', 'Please enter your name', 'Please enter your email', 'Please enter a subject', @@ -147,8 +146,7 @@ for my $test ( message => '', }, page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ + [ 'There were problems with your report. Please see below.', 'Please enter your name', 'Please enter a valid email address', 'Please enter a subject', @@ -162,9 +160,10 @@ for my $test ( subject => '', message => '', }, - page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ 'Please enter a subject', 'Please write a message', ] + page_errors => [ + 'There were problems with your report. Please see below.', + 'Please enter a subject', 'Please write a message', + ] }, { fields => { @@ -173,9 +172,10 @@ for my $test ( subject => 'A subject', message => '', }, - page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ 'Please write a message', ] + page_errors => [ + 'There were problems with your report. Please see below.', + 'Please write a message', + ] }, { fields => { @@ -184,9 +184,11 @@ for my $test ( subject => ' ', message => '', }, - page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ 'Please enter a subject', 'Please write a message', ] + page_errors => [ + 'There were problems with your report. Please see below.', + 'Please enter a subject', + 'Please write a message', + ] }, { fields => { @@ -195,9 +197,10 @@ for my $test ( subject => 'A subject', message => ' ', }, - page_errors => - [ 'There were problems with your report. Please see below.', ], - field_errors => [ 'Please write a message', ] + page_errors => [ + 'There were problems with your report. Please see below.', + 'Please write a message', + ] }, { url => '/contact?id=' . $problem_main->id, @@ -209,7 +212,6 @@ for my $test ( id => 'invalid', }, page_errors => [ 'Illegal ID' ], - field_errors => [] }, ) { @@ -217,7 +219,6 @@ for my $test ( $mech->get_ok( $test->{url} ? $test->{url} : '/contact' ); $mech->submit_form_ok( { with_fields => $test->{fields} } ); is_deeply $mech->page_errors, $test->{page_errors}, 'page errors'; - is_deeply $mech->form_errors, $test->{field_errors}, 'field_errors'; # we santise this when we submit so need to remove it delete $test->{fields}->{id} diff --git a/t/app/controller/dashboard.t b/t/app/controller/dashboard.t index 472c6d9bd..47d10ff5c 100644 --- a/t/app/controller/dashboard.t +++ b/t/app/controller/dashboard.t @@ -42,14 +42,14 @@ $mech->submit_form_ok( { with_fields => { email => $test_user, password_sign_in => $test_pass } } ); -$mech->content_contains( 'Summary Statistics for City of Edinburgh' ); +$mech->content_contains( 'City of Edinburgh' ); FixMyStreet::App->model('DB::Contact')->search( { area_id => $test_council } ) ->delete; delete_problems(); -my @cats = qw( Grafitti Litter Potholes ); +my @cats = qw( Grafitti Litter Potholes Other ); for my $contact ( @cats ) { FixMyStreet::App->model('DB::Contact')->create( { @@ -90,7 +90,7 @@ my $categories = scraper { }, }; -my $expected_cats = [ 'All', '-- Pick a category --', @cats, 'Other' ]; +my $expected_cats = [ 'All', '-- Pick a category --', @cats ]; my $res = $categories->scrape( $mech->content ); is_deeply( $res->{cats}, $expected_cats, 'correct list of categories' ); diff --git a/t/app/controller/questionnaire.t b/t/app/controller/questionnaire.t index 2d4fdb711..3475307fb 100644 --- a/t/app/controller/questionnaire.t +++ b/t/app/controller/questionnaire.t @@ -8,6 +8,12 @@ use FixMyStreet::App::Controller::Questionnaire; ok( my $mech = FixMyStreet::TestMech->new, 'Created mech object' ); +# Make sure there's no outstanding questionnaire emails to be sent +FixMyStreet::App->model('DB::Questionnaire')->send_questionnaires( { + site => 'fixmystreet' +} ); +$mech->clear_emails_ok; + # create a test user and report $mech->delete_user('test@example.com'); @@ -273,6 +279,23 @@ foreach my $test ( }; } +my $comment = FixMyStreet::App->model('DB::Comment')->find_or_create( + { + problem_id => $report->id, + user_id => $user->id, + name => 'A User', + mark_fixed => 'false', + text => 'This is some update text', + state => 'confirmed', + confirmed => $sent_time, + anonymous => 'f', + } +); +subtest 'Check updates are shown correctly on questionnaire page' => sub { + $mech->get_ok("/Q/" . $token->token); + $mech->content_contains( 'updates that have been left' ); + $mech->content_contains( 'This is some update text' ); +}; for my $test ( { diff --git a/t/app/controller/report_display.t b/t/app/controller/report_display.t index 548580fe1..6c2733e36 100644 --- a/t/app/controller/report_display.t +++ b/t/app/controller/report_display.t @@ -209,7 +209,7 @@ for my $test ( ), state => 'confirmed', banner_id => 'unknown', - banner_text => 'This problem is old and of unknown status.', + banner_text => 'unknown', fixed => 0 }, { @@ -224,7 +224,7 @@ for my $test ( ), state => 'fixed', banner_id => 'fixed', - banner_text => 'This problem has been fixed.', + banner_text => 'fixed', fixed => 1 }, { @@ -232,7 +232,7 @@ for my $test ( date => DateTime->now, state => 'fixed', banner_id => 'fixed', - banner_text => 'This problem has been fixed.', + banner_text => 'fixed', fixed => 1 }, { @@ -240,7 +240,7 @@ for my $test ( date => DateTime->now, state => 'fixed - user', banner_id => 'fixed', - banner_text => 'This problem has been fixed.', + banner_text => 'fixed', fixed => 1 }, { @@ -248,7 +248,7 @@ for my $test ( date => DateTime->now, state => 'fixed - council', banner_id => 'fixed', - banner_text => 'This problem has been fixed.', + banner_text => 'fixed', fixed => 1 }, { @@ -256,7 +256,7 @@ for my $test ( date => DateTime->now, state => 'closed', banner_id => 'closed', - banner_text => 'This problem has been closed.', + banner_text => 'closed', fixed => 0 }, { @@ -264,7 +264,7 @@ for my $test ( date => DateTime->now, state => 'investigating', banner_id => 'progress', - banner_text => 'This problem is in progress.', + banner_text => 'progress', fixed => 0 }, { @@ -272,7 +272,7 @@ for my $test ( date => DateTime->now, state => 'planned', banner_id => 'progress', - banner_text => 'This problem is in progress.', + banner_text => 'progress', fixed => 0 }, { @@ -280,7 +280,7 @@ for my $test ( date => DateTime->now, state => 'in progress', banner_id => 'progress', - banner_text => 'This problem is in progress.', + banner_text => 'progress', fixed => 0 }, ) { @@ -299,7 +299,11 @@ for my $test ( } is $banner->{id}, $test->{banner_id}, 'banner id'; - is $banner->{text}, $test->{banner_text}, 'banner text'; + if ($test->{banner_text}) { + ok $banner->{text} =~ /$test->{banner_text}/i, 'banner text'; + } else { + is $banner->{text}, $test->{banner_text}, 'banner text'; + } my $update_form = $mech->form_name( 'updateForm' ); if ( $test->{fixed} ) { diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t index 29fb650e5..88236a1c3 100644 --- a/t/app/controller/report_new.t +++ b/t/app/controller/report_new.t @@ -34,6 +34,9 @@ my %contact_params = ( note => 'Created for test', ); # Let's make some contacts to send things to! +FixMyStreet::App->model('DB::Contact')->search( { + email => { 'like', '%example.com' }, +} )->delete; my $contact1 = FixMyStreet::App->model('DB::Contact')->find_or_create( { %contact_params, area_id => 2651, # Edinburgh @@ -64,11 +67,25 @@ my $contact5 = FixMyStreet::App->model('DB::Contact')->find_or_create( { category => 'Trees', email => 'trees@example.com', } ); +my $contact6 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + area_id => 2434, # Lichfield + category => 'Trees', + email => 'trees@example.com', +} ); +my $contact7 = FixMyStreet::App->model('DB::Contact')->find_or_create( { + %contact_params, + area_id => 2240, # Lichfield + category => 'Street lighting', + email => 'highways@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"; +ok $contact6, "created test contact 6"; +ok $contact7, "created test contact 7"; # test that the various bit of form get filled in and errors correctly # generated. @@ -371,7 +388,7 @@ foreach my $test ( # submit initial pc form $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } }, "submit location" ); - is_deeply $mech->form_errors, [], "no errors for pc '$test->{pc}'"; + is_deeply $mech->page_errors, [], "no errors for pc '$test->{pc}'"; # click through to the report page $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, @@ -382,7 +399,7 @@ foreach my $test ( "submit form" ); # check that we got the errors expected - is_deeply $mech->form_errors, $test->{errors}, "check errors"; + is_deeply $mech->page_errors, $test->{errors}, "check errors"; # check that fields have changed as expected my $new_values = { @@ -463,7 +480,7 @@ foreach my $test ( ); # check that we got the errors expected - is_deeply $mech->form_errors, [], "check there were no errors"; + is_deeply $mech->page_errors, [], "check there were no errors"; # check that the user has been created/ not changed my $user = @@ -573,7 +590,7 @@ subtest "test password errors for a user who is signing in as they report" => su ); # check that we got the errors expected - is_deeply $mech->form_errors, [ + is_deeply $mech->page_errors, [ "There was a problem with your email/password combination. If you cannot remember your password, or do not have one, please fill in the \x{2018}sign in by email\x{2019} section of the form.", ], "check there were errors"; }; @@ -620,7 +637,7 @@ subtest "test report creation for a user who is signing in as they report" => su ); # check that we got the errors expected - is_deeply $mech->form_errors, [ + is_deeply $mech->page_errors, [ 'You have successfully signed in; please check and confirm your details are accurate:', ], "check there were errors"; @@ -798,10 +815,8 @@ subtest "check that a lat/lon off coast leads to /around" => sub { is $mech->uri->path, '/around', "redirected to '/around'"; is_deeply # - $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.' ], # + $mech->page_errors, + [ 'That location does not appear to be covered by a council; perhaps it is offshore or outside the country. Please try again.' ], "Found location error"; }; @@ -859,6 +874,10 @@ for my $test ( ) { subtest $test->{desc} => sub { + if ( $test->{host} =~ /bromley/ && !FixMyStreet::Cobrand->exists('bromley') ) { + plan skip_all => 'Skipping Bromley tests without Bromley cobrand'; + } + $mech->host( $test->{host} ); $mech->log_out_ok; @@ -941,10 +960,78 @@ for my $test ( }; } +SKIP: { + skip( "Need 'lichfielddc' in ALLOWED_COBRANDS config", 100 ) + unless FixMyStreet::Cobrand->exists('lichfielddc'); + + my $test_email = 'test-22@example.com'; + $mech->host( 'http://lichfielddc.fixmystreet.com/' ); + $mech->clear_emails_ok; + $mech->log_out_ok; + + $mech->get_ok('/around'); + $mech->submit_form_ok( { with_fields => { pc => 'WS13 7RD' } }, "submit location" ); + $mech->follow_link_ok( { text_regex => qr/skip this step/i, }, "follow 'skip this step' link" ); + $mech->submit_form_ok( + { + button => 'submit_register', + with_fields => { + title => 'Test Report', + detail => 'Test report details.', + photo => '', + name => 'Joe Bloggs', + may_show_name => '1', + email => $test_email, + phone => '07903 123 456', + category => 'Street lighting', + } + }, + "submit good details" + ); + is_deeply $mech->page_errors, [], "check there were no errors"; + + # check that the user has been created/ not changed + my $user = + FixMyStreet::App->model('DB::User')->find( { email => $test_email } ); + ok $user, "user found"; + + # find the report + my $report = $user->problems->first; + ok $report, "Found the report"; + + # Check the report has been assigned appropriately + is $report->council, 2240; + + # receive token + 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 + $mech->get_ok($url); + $report->discard_changes; + is $report->state, 'confirmed', "Report is now confirmed"; + + # Shouldn't be found, as it was a county problem + is $mech->get( '/report/' . $report->id )->code, 404, "report not found"; + + # But should be on the main site + $mech->host( 'www.fixmystreet.com' ); + $mech->get_ok( '/report/' . $report->id ); + is $report->name, 'Joe Bloggs', 'name updated correctly'; + + $mech->delete_user($user); +} + $contact1->delete; $contact2->delete; $contact3->delete; $contact4->delete; $contact5->delete; +$contact6->delete; +$contact7->delete; done_testing(); diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t index dc3583e6b..863571ad0 100644 --- a/t/app/controller/report_new_open311.t +++ b/t/app/controller/report_new_open311.t @@ -113,10 +113,10 @@ foreach my $test ( # submit initial pc form $mech->submit_form_ok( { with_fields => { pc => $test->{pc} } }, "submit location" ); - is_deeply $mech->form_errors, [], "no errors for pc '$test->{pc}'"; + is_deeply $mech->page_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 @@ -124,7 +124,7 @@ foreach my $test ( "submit form" ); # check that we got the errors expected - is_deeply $mech->form_errors, $test->{errors}, "check errors"; + is_deeply $mech->page_errors, $test->{errors}, "check errors"; # check that fields have changed as expected my $new_values = { @@ -136,7 +136,7 @@ foreach my $test ( if ( $test->{fields}->{category} eq 'Street lighting' ) { my $result = scraper { - process 'div#category_meta div select#form_type option', 'option[]' => '@value'; + process 'select#form_type option', 'option[]' => '@value'; } ->scrape( $mech->response ); diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t index 0337a881b..cf6af16cb 100644 --- a/t/app/controller/report_updates.t +++ b/t/app/controller/report_updates.t @@ -271,7 +271,7 @@ for my $test ( $mech->submit_form_ok( { with_fields => $test->{fields} }, 'submit update' ); - is_deeply $mech->form_errors, $test->{field_errors}, 'field errors'; + is_deeply $mech->page_errors, $test->{field_errors}, 'field errors'; my $values = { %{ $test->{fields} }, @@ -640,7 +640,7 @@ for my $test ( 'submit update' ); - is_deeply $mech->form_errors, $test->{field_errors}, 'check there were errors'; + is_deeply $mech->page_errors, $test->{field_errors}, 'check there were errors'; SKIP: { skip( "Incorrect password", 5 ) unless $test->{form_values}{password_sign_in} eq $pw; diff --git a/t/app/controller/rss.t b/t/app/controller/rss.t index c6ab20574..77e2c7ee1 100644 --- a/t/app/controller/rss.t +++ b/t/app/controller/rss.t @@ -41,7 +41,7 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( { $mech->get_ok("/rss/pc/EH11BB/2"); -$mech->content_contains( "Testing, 10th October, EH1 1BB" ); +$mech->content_contains( "Testing, 10th October" ); $mech->content_lacks( 'Nearest road to the pin' ); $report->geocode( @@ -106,19 +106,12 @@ $report->geocode( 'authenticationResultCode' => 'ValidCredentials' } ); -$report->postcode('eh11bb'); $report->update(); $mech->get_ok("/rss/pc/EH11BB/2"); -$mech->content_contains( "Testing, 10th October, EH1 1BB" ); +$mech->content_contains( "Testing, 10th October" ); $mech->content_contains( '18 North Bridge, Edinburgh' ); -$report->postcode('Princes St, Edinburgh'); -$report->update(); - -$mech->get_ok("/rss/pc/EH11BB/2"); -$mech->content_contains( "Testing, 10th October, Princes St, Edinburgh" ); - $report->delete(); $user1->delete(); |