aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/controller
diff options
context:
space:
mode:
Diffstat (limited to 't/app/controller')
-rw-r--r--t/app/controller/alert_new.t2
-rw-r--r--t/app/controller/around.t2
-rw-r--r--t/app/controller/auth.t4
-rw-r--r--t/app/controller/contact.t37
-rw-r--r--t/app/controller/dashboard.t6
-rw-r--r--t/app/controller/questionnaire.t23
-rw-r--r--t/app/controller/report_display.t24
-rw-r--r--t/app/controller/report_new.t105
-rw-r--r--t/app/controller/report_new_open311.t8
-rw-r--r--t/app/controller/report_updates.t4
-rw-r--r--t/app/controller/rss.t11
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();