aboutsummaryrefslogtreecommitdiffstats
path: root/t/app
diff options
context:
space:
mode:
authorChris Mytton <self@hecticjeff.net>2013-09-13 12:12:14 +0100
committerChris Mytton <self@hecticjeff.net>2013-09-13 12:12:14 +0100
commitb44f9edab53f59fb442e5ee4db28cb25408c652c (patch)
treee7cd62bd148a5332e1ec625dda6c3bc6b09ceb62 /t/app
parent2099ac31a4410f2cf8e1c7d31dc35cdd9ac1e070 (diff)
parent94ac7786132a538a5742ba325eb7fe9eff89cfc9 (diff)
Merge branch 'master' into oxfordshire-usability-recommendations
Diffstat (limited to 't/app')
-rw-r--r--t/app/controller/about.t2
-rw-r--r--t/app/controller/alert_new.t25
-rw-r--r--t/app/controller/report_display.t4
-rw-r--r--t/app/controller/report_import.t5
-rw-r--r--t/app/controller/report_new.t5
-rw-r--r--t/app/controller/report_new_open311.t5
-rw-r--r--t/app/controller/report_updates.t5
-rw-r--r--t/app/controller/rss.t9
-rw-r--r--t/app/model/problem.t91
-rw-r--r--t/app/model/questionnaire.t2
-rw-r--r--t/app/model/rabx_column.t23
-rw-r--r--t/app/model/token.t46
12 files changed, 196 insertions, 26 deletions
diff --git a/t/app/controller/about.t b/t/app/controller/about.t
index 4e49cdac9..ed28eb584 100644
--- a/t/app/controller/about.t
+++ b/t/app/controller/about.t
@@ -24,7 +24,7 @@ SKIP: {
# check that geting the page as EHA in welsh produces a different page
ok $mech->host("cy.reportemptyhomes.co.uk"), 'host to cy.reportemptyhomes';
$mech->get_ok('/about');
- $mech->content_like(qr{Amdanom ni ::\s+Adrodd am Eiddo Gwag});
+ $mech->content_like(qr{Amdanom ni ::\s+Rhoi gwybod am eiddo gwag});
$mech->content_contains('html lang="cy"');
}
diff --git a/t/app/controller/alert_new.t b/t/app/controller/alert_new.t
index 43d90c0ba..23240c3b9 100644
--- a/t/app/controller/alert_new.t
+++ b/t/app/controller/alert_new.t
@@ -3,6 +3,7 @@ use warnings;
use Test::More;
use FixMyStreet::TestMech;
+use FixMyStreet::App;
my $mech = FixMyStreet::TestMech->new;
@@ -362,6 +363,8 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
my $dt = DateTime->now()->add( days => 2);
+ my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser;
+
my $report_time = '2011-03-01 12:00:00';
my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
postcode => 'EH1 1BB',
@@ -374,9 +377,9 @@ subtest "Test normal alert signups and that alerts are sent" => sub {
name => $user1->name,
anonymous => 0,
state => 'fixed - user',
- confirmed => $dt,
- lastupdate => $dt,
- whensent => $dt->clone->add( minutes => 5 ),
+ confirmed => $dt_parser->format_datetime($dt),
+ lastupdate => $dt_parser->format_datetime($dt),
+ whensent => $dt_parser->format_datetime($dt->clone->add( minutes => 5 )),
lang => 'en-gb',
service => '',
cobrand => 'default',
@@ -514,6 +517,8 @@ for my $test (
my $alert_user1 = FixMyStreet::App->model('DB::Alert')->create( $alert_params );
ok $alert_user1, "alert created";
+ my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser;
+
my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
postcode => 'EH1 1BB',
bodies_str => '2651',
@@ -525,9 +530,9 @@ for my $test (
name => $user2->name,
anonymous => 0,
state => 'confirmed',
- confirmed => $r_dt,
- lastupdate => $r_dt,
- whensent => $r_dt->clone->add( minutes => 5 ),
+ confirmed => $dt_parser->format_datetime($r_dt),
+ lastupdate => $dt_parser->format_datetime($r_dt),
+ whensent => $dt_parser->format_datetime($r_dt->clone->add( minutes => 5 )),
lang => 'en-gb',
service => '',
cobrand => 'default',
@@ -573,6 +578,8 @@ subtest 'check new updates alerts for non public reports only go to report owner
my $dt = DateTime->now->add( minutes => -30 );
my $r_dt = $dt->clone->add( minutes => 20 );
+ my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser;
+
my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
postcode => 'EH1 1BB',
bodies_str => '2651',
@@ -584,9 +591,9 @@ subtest 'check new updates alerts for non public reports only go to report owner
name => $user2->name,
anonymous => 0,
state => 'confirmed',
- confirmed => $r_dt,
- lastupdate => $r_dt,
- whensent => $r_dt->clone->add( minutes => 5 ),
+ confirmed => $dt_parser->format_datetime($r_dt),
+ lastupdate => $dt_parser->format_datetime($r_dt),
+ whensent => $dt_parser->format_datetime($r_dt->clone->add( minutes => 5 )),
lang => 'en-gb',
service => '',
cobrand => 'default',
diff --git a/t/app/controller/report_display.t b/t/app/controller/report_display.t
index 7904b6736..62a5b3667 100644
--- a/t/app/controller/report_display.t
+++ b/t/app/controller/report_display.t
@@ -100,7 +100,7 @@ subtest "Zurich unconfirmeds are 200" => sub {
if ( !FixMyStreet::Cobrand->exists('zurich') ) {
plan skip_all => 'Skipping Zurich test without Zurich cobrand';
}
- $mech->host( 'zurich.fixmystreet.com' );
+ $mech->host( 'zurich.example.com' );
ok $report->update( { state => 'unconfirmed' } ), 'unconfirm report';
$mech->get_ok("/report/$report_id");
$mech->content_contains( '&Uuml;berpr&uuml;fung ausstehend' );
@@ -403,7 +403,7 @@ subtest "Zurich banners are displayed correctly" => sub {
if ( !FixMyStreet::Cobrand->exists('zurich') ) {
plan skip_all => 'Skipping Zurich test without Zurich cobrand';
}
- $mech->host( 'zurich.fixmystreet.com' );
+ $mech->host( 'zurich.example.com' );
for my $test (
{
diff --git a/t/app/controller/report_import.t b/t/app/controller/report_import.t
index eb686b44e..e25764c4b 100644
--- a/t/app/controller/report_import.t
+++ b/t/app/controller/report_import.t
@@ -3,6 +3,7 @@ use warnings;
use Test::More;
use FixMyStreet::TestMech;
+use FixMyStreet::App;
use Web::Scraper;
use Path::Class;
@@ -12,6 +13,10 @@ $mech->get_ok('/import');
my $sample_file = file(__FILE__)->parent->file("sample.jpg")->stringify;
ok -e $sample_file, "sample file $sample_file exists";
+# disable info logs for this test run
+FixMyStreet::App->log->disable('info');
+END { FixMyStreet::App->log->enable('info'); }
+
# submit an empty report to import - check we get all errors
subtest "Test creating bad partial entries" => sub {
diff --git a/t/app/controller/report_new.t b/t/app/controller/report_new.t
index 8e129a41c..d1f246e95 100644
--- a/t/app/controller/report_new.t
+++ b/t/app/controller/report_new.t
@@ -5,9 +5,14 @@ use Test::More;
use utf8;
use FixMyStreet::TestMech;
+use FixMyStreet::App;
use Web::Scraper;
use Path::Class;
+# disable info logs for this test run
+FixMyStreet::App->log->disable('info');
+END { FixMyStreet::App->log->enable('info'); }
+
my $mech = FixMyStreet::TestMech->new;
$mech->get_ok('/report/new');
diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t
index 22d2d1f97..ed26d58d5 100644
--- a/t/app/controller/report_new_open311.t
+++ b/t/app/controller/report_new_open311.t
@@ -3,8 +3,13 @@ use warnings;
use Test::More;
use FixMyStreet::TestMech;
+use FixMyStreet::App;
use Web::Scraper;
+# disable info logs for this test run
+FixMyStreet::App->log->disable('info');
+END { FixMyStreet::App->log->enable('info'); }
+
my $mech = FixMyStreet::TestMech->new;
my $body = $mech->create_body_ok(2651, 'City of Edinburgh Council');
diff --git a/t/app/controller/report_updates.t b/t/app/controller/report_updates.t
index c99a54743..3356867bb 100644
--- a/t/app/controller/report_updates.t
+++ b/t/app/controller/report_updates.t
@@ -537,6 +537,7 @@ for my $test (
state => 'internal referral',
},
state => 'internal referral',
+ meta => "an internal referral",
},
{
desc => 'from authority user marks report as not responsible',
@@ -562,7 +563,7 @@ for my $test (
state => 'duplicate',
},
state => 'duplicate',
- meta => 'duplicate report',
+ meta => 'a duplicate report',
},
{
desc => 'from authority user marks report as internal referral',
@@ -575,7 +576,7 @@ for my $test (
state => 'internal referral',
},
state => 'internal referral',
- meta => 'internal referral',
+ meta => 'an internal referral',
},
{
desc => 'from authority user marks report sent to two councils as fixed',
diff --git a/t/app/controller/rss.t b/t/app/controller/rss.t
index f04a17151..ec6a01b50 100644
--- a/t/app/controller/rss.t
+++ b/t/app/controller/rss.t
@@ -3,6 +3,7 @@ use warnings;
use Test::More;
use FixMyStreet::TestMech;
+use FixMyStreet::App;
my $mech = FixMyStreet::TestMech->new;
@@ -15,6 +16,8 @@ my $dt = DateTime->new(
my $user1 = FixMyStreet::App->model('DB::User')
->find_or_create( { email => 'reporter-rss@example.com', name => 'Reporter User' } );
+my $dt_parser = FixMyStreet::App->model('DB')->schema->storage->datetime_parser;
+
my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
postcode => 'eh1 1BB',
bodies_str => '2651',
@@ -26,9 +29,9 @@ my $report = FixMyStreet::App->model('DB::Problem')->find_or_create( {
name => $user1->name,
anonymous => 0,
state => 'confirmed',
- confirmed => $dt,
- lastupdate => $dt,
- whensent => $dt->clone->add( minutes => 5 ),
+ confirmed => $dt_parser->format_datetime($dt),
+ lastupdate => $dt_parser->format_datetime($dt),
+ whensent => $dt_parser->format_datetime($dt->clone->add( minutes => 5 )),
lang => 'en-gb',
service => '',
cobrand => 'default',
diff --git a/t/app/model/problem.t b/t/app/model/problem.t
index 7daa653fc..9138c11a8 100644
--- a/t/app/model/problem.t
+++ b/t/app/model/problem.t
@@ -9,6 +9,7 @@ use FixMyStreet;
use FixMyStreet::App;
use FixMyStreet::TestMech;
use mySociety::Locale;
+use Sub::Override;
mySociety::Locale::gettext_domain('FixMyStreet');
@@ -583,9 +584,10 @@ foreach my $test ( {
}
subtest 'check can turn on report sent email alerts' => sub {
- eval 'use Test::MockModule; 1' or
- plan skip_all => 'Skipping tests that rely on Test::MockModule';
-
+ my $send_confirmation_mail_override = Sub::Override->new(
+ "FixMyStreet::Cobrand::Default::report_sent_confirmation_email",
+ sub { return 1; }
+ );
$mech->clear_emails_ok;
FixMyStreet::App->model('DB::Problem')->search(
@@ -606,9 +608,6 @@ subtest 'check can turn on report sent email alerts' => sub {
send_fail_count => 0,
} );
- my $m = new Test::MockModule(
- 'FixMyStreet::Cobrand::FixMyStreet' );
- $m->mock( report_sent_confirmation_email => 1 );
FixMyStreet::App->model('DB::Problem')->send_reports();
$mech->email_count_is( 2 );
@@ -628,8 +627,88 @@ subtest 'check can turn on report sent email alerts' => sub {
$email = $emails[1];
like $email->header('Subject'), qr/Problem Report Sent/, 'report sent email title correct';
like $email->body, qr/Your report about/, 'report sent body correct';
+
+ $send_confirmation_mail_override->restore();
+};
+
+
+subtest 'check iOS app store test reports not sent' => sub {
+ $mech->clear_emails_ok;
+
+ FixMyStreet::App->model('DB::Problem')->search(
+ {
+ whensent => undef
+ }
+ )->update( { whensent => \'ms_current_timestamp()' } );
+
+ $problem->discard_changes;
+ $problem->update( {
+ bodies_str => 2651,
+ title => 'App store test',
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ category => 'potholes',
+ send_fail_count => 0,
+ } );
+
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 0 );
+
+ $problem->discard_changes();
+ is $problem->state, 'hidden', 'iOS test reports are hidden automatically';
+ is $problem->whensent, undef, 'iOS test reports are not sent';
};
+subtest 'check reports from abuser not sent' => sub {
+ $mech->clear_emails_ok;
+
+ FixMyStreet::App->model('DB::Problem')->search(
+ {
+ whensent => undef
+ }
+ )->update( { whensent => \'ms_current_timestamp()' } );
+
+ $problem->discard_changes;
+ $problem->update( {
+ bodies_str => 2651,
+ title => 'Report',
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ category => 'potholes',
+ send_fail_count => 0,
+ } );
+
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 1 );
+
+ $problem->discard_changes();
+ ok $problem->whensent, 'Report has been sent';
+
+ $problem->update( {
+ state => 'confirmed',
+ confirmed => \'ms_current_timestamp()',
+ whensent => undef,
+ } );
+
+ my $abuse = FixMyStreet::App->model('DB::Abuse')->create( { email => $problem->user->email } );
+
+ $mech->clear_emails_ok;
+ FixMyStreet::App->model('DB::Problem')->send_reports();
+
+ $mech->email_count_is( 0 );
+
+ $problem->discard_changes();
+ is $problem->state, 'hidden', 'reports from abuse user are hidden automatically';
+ is $problem->whensent, undef, 'reports from abuse user are not sent';
+
+ ok $abuse->delete(), 'user removed from abuse table';
+};
+
+
$problem->comments->delete;
$problem->delete;
$mech->delete_user( $user );
diff --git a/t/app/model/questionnaire.t b/t/app/model/questionnaire.t
index 86af51c42..be5b433c1 100644
--- a/t/app/model/questionnaire.t
+++ b/t/app/model/questionnaire.t
@@ -32,8 +32,6 @@ my $problem = FixMyStreet::App->model('DB::Problem')->create(
}
);
-diag $problem->id;
-
my $mech = FixMyStreet::TestMech->new;
for my $test (
diff --git a/t/app/model/rabx_column.t b/t/app/model/rabx_column.t
new file mode 100644
index 000000000..607d578ce
--- /dev/null
+++ b/t/app/model/rabx_column.t
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+use_ok "FixMyStreet::DB::RABXColumn";
+
+# Test that the class names are correctly normalised
+my @tests = (
+ ["FixMyStreet::DB::Result::Token", "Token"],
+ ["FixMyStreet::App::Model::DB::Token", "Token"],
+);
+
+foreach my $test (@tests) {
+ my ($input, $expected) = @$test;
+ is(
+ FixMyStreet::DB::RABXColumn::_get_class_identifier($input),
+ $expected,
+ "$input -> $expected"
+ );
+}
+
+done_testing();
diff --git a/t/app/model/token.t b/t/app/model/token.t
index 12945975e..637477fa3 100644
--- a/t/app/model/token.t
+++ b/t/app/model/token.t
@@ -3,7 +3,7 @@
use strict;
use warnings;
-use Test::More tests => 45;
+use Test::More;
use FixMyStreet;
use FixMyStreet::App;
@@ -94,3 +94,47 @@ foreach my $test_data_name ( sort keys %tests ) {
undef, "token gone with m::AT";
}
+
+
+
+# Test that the inflation and deflation works as expected
+{
+ my $token =
+ $token_rs->create( { scope => 'testing', data => {} } );
+ END { $token->delete() };
+
+ # Add in temporary check to test that the data is updated as expected.
+ is_deeply($token->data, {}, "data is empty");
+
+ # store something in it
+ $token->update({ data => { foo => 'bar' } });
+ $token->discard_changes();
+ is_deeply($token->data, { foo => 'bar' }, "data has content");
+
+ # change the hash stored
+ $token->update({ data => { baz => 'bundy' } });
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'bundy' }, "data has new content");
+
+ # change the hashref in place
+ {
+ my $data = $token->data;
+ $data->{baz} = 'new';
+ $token->data( $data );
+ $token->update();
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'new' }, "data has been updated");
+ }
+
+ # change the hashref in place
+ {
+ my $data = $token->data;
+ $data->{baz} = 'new';
+ $token->update({ data => $data });
+ $token->discard_changes();
+ is_deeply($token->data, { baz => 'new' }, "data has been updated");
+ }
+
+}
+
+done_testing();