diff options
Diffstat (limited to 't')
-rw-r--r-- | t/app/controller/reports.t | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/t/app/controller/reports.t b/t/app/controller/reports.t index 42e69fd03..36af2f36a 100644 --- a/t/app/controller/reports.t +++ b/t/app/controller/reports.t @@ -11,15 +11,19 @@ ok( my $mech = FixMyStreet::TestMech->new, 'Created mech object' ); $mech->create_body_ok(2514, 'Birmingham City Council'); $mech->create_body_ok(2651, 'City of Edinburgh Council'); $mech->create_body_ok(2504, 'Westminster City Council'); +$mech->create_body_ok(2649, 'Fife Council'); $mech->delete_problems_for_body( 2504 ); $mech->delete_problems_for_body( 2651 ); +$mech->delete_problems_for_body( 2649 ); my @edinburgh_problems = $mech->create_problems_for_body(3, 2651, 'All reports'); my @westminster_problems = $mech->create_problems_for_body(5, 2504, 'All reports'); +my @fife_problems = $mech->create_problems_for_body(15, 2649, 'All reports'); is scalar @westminster_problems, 5, 'correct number of westminster problems created'; is scalar @edinburgh_problems, 3, 'correct number of edinburgh problems created'; +is scalar @fife_problems, 15, 'correct number of fife problems created'; $edinburgh_problems[1]->update( { state => 'in progress', @@ -27,6 +31,59 @@ $edinburgh_problems[1]->update( { lastupdate => DateTime->now()->subtract( weeks => 5 ), } ); +$fife_problems[1]->update( { + state => 'fixed - user', + confirmed => DateTime->now()->subtract( weeks => 6 ), + lastupdate => DateTime->now()->subtract( weeks => 5 ), +}); + +$fife_problems[2]->update( { + state => 'fixed - user', + confirmed => DateTime->now()->subtract( weeks => 2 ), + lastupdate => DateTime->now()->subtract( weeks => 1 ), +}); + +$fife_problems[3]->update( { + state => 'fixed - user', + confirmed => DateTime->now()->subtract( weeks => 10 ), + lastupdate => DateTime->now()->subtract( weeks => 9 ), +}); + +$fife_problems[4]->update( { + confirmed => DateTime->now()->subtract( weeks => 10 ), + lastupdate => DateTime->now()->subtract( weeks => 9 ), +}); + +$fife_problems[5]->update( { + confirmed => DateTime->now()->subtract( weeks => 7 ), + lastupdate => DateTime->now()->subtract( weeks => 5 ), +}); + +$fife_problems[6]->update( { + confirmed => DateTime->now()->subtract( weeks => 7 ), + lastupdate => DateTime->now()->subtract( weeks => 2 ), +}); + +$fife_problems[7]->update( { + confirmed => DateTime->now()->subtract( weeks => 10 ), + lastupdate => DateTime->now()->subtract( weeks => 6 ), +}); + +$fife_problems[8]->update( { + confirmed => DateTime->now()->subtract( weeks => 10 ), + lastupdate => DateTime->now()->subtract( weeks => 2 ), +}); + +$fife_problems[9]->update( { + state => 'fixed - user', + confirmed => DateTime->now()->subtract( weeks => 10 ), + lastupdate => DateTime->now()->subtract( weeks => 7 ), +}); + +$fife_problems[10]->update( { + state => 'hidden', +}); + # Run the cron script that makes the data for /reports so we don't get an error. system( "bin/cron-wrapper update-all-reports" ); @@ -42,6 +99,12 @@ is $stats->{'City of Edinburgh Council'}->[2], 1, 'correct number of older repor is $stats->{'Westminster City Council'}->[1], 5, 'correct number of reports for Westminster'; +is $stats->{'Fife Council'}->[1], 5, 'correct number of new reports for Fife'; +is $stats->{'Fife Council'}->[2], 4, 'correct number of old reports for Fife'; +is $stats->{'Fife Council'}->[3], 1, 'correct number of unknown reports for Fife'; +is $stats->{'Fife Council'}->[4], 3, 'correct number of fixed reports for Fife'; +is $stats->{'Fife Council'}->[5], 1, 'correct number of older fixed reports for Fife'; + FixMyStreet::override_config { MAPIT_URL => 'http://mapit.mysociety.org/', }, sub { @@ -56,6 +119,61 @@ $mech->content_contains('All reports Test 3 for 2504', 'problem to be marked non my $problems = $mech->extract_problem_list; is scalar @$problems, 5, 'correct number of problems displayed'; +FixMyStreet::override_config { + MAPIT_URL => 'http://mapit.mysociety.org/', +}, sub { + $mech->get_ok('/reports/City+of+Edinburgh?t=new'); +}; +$problems = $mech->extract_problem_list; +is scalar @$problems, 2, 'correct number of new problems displayed'; + +FixMyStreet::override_config { + MAPIT_URL => 'http://mapit.mysociety.org/', +}, sub { + $mech->get_ok('/reports/City+of+Edinburgh?t=older'); +}; +$problems = $mech->extract_problem_list; +is scalar @$problems, 1, 'correct number of older problems displayed'; + +for my $test ( + { + desc => 'new fife problems on report page', + type => 'new', + expected => 5 + }, + { + desc => 'older fife problems on report page', + type => 'older', + expected => 4 + }, + { + desc => 'unknown fife problems on report page', + type => 'unknown', + expected => 1 + }, + { + desc => 'fixed fife problems on report page', + type => 'fixed', + expected => 3 + }, + { + desc => 'older_fixed fife problems on report page', + type => 'older_fixed', + expected => 1 + }, +) { + subtest $test->{desc} => sub { + FixMyStreet::override_config { + MAPIT_URL => 'http://mapit.mysociety.org/', + }, sub { + $mech->get_ok('/reports/Fife+Council?t=' . $test->{type}); + }; + + $problems = $mech->extract_problem_list; + is scalar @$problems, $test->{expected}, 'correct number of ' . $test->{type} . ' problems displayed'; + }; +} + my $private = $westminster_problems[2]; ok $private->update( { non_public => 1 } ), 'problem marked non public'; |