aboutsummaryrefslogtreecommitdiffstats
path: root/t/app
diff options
context:
space:
mode:
Diffstat (limited to 't/app')
-rw-r--r--t/app/controller/report_display.t24
-rw-r--r--t/app/model/problem.t140
-rw-r--r--t/app/model/questionnaire.t106
3 files changed, 270 insertions, 0 deletions
diff --git a/t/app/controller/report_display.t b/t/app/controller/report_display.t
index 1f857a387..5c66200c8 100644
--- a/t/app/controller/report_display.t
+++ b/t/app/controller/report_display.t
@@ -235,6 +235,30 @@ for my $test (
banner_text => 'This problem has been fixed.',
fixed => 1
},
+ {
+ description => 'user fixed report',
+ date => DateTime->now,
+ state => 'fixed - user',
+ banner_id => 'fixed',
+ banner_text => 'This problem has been fixed.',
+ fixed => 1
+ },
+ {
+ description => 'council fixed report',
+ date => DateTime->now,
+ state => 'fixed - council',
+ banner_id => 'fixed',
+ banner_text => 'This problem has been fixed.',
+ fixed => 1
+ },
+ {
+ description => 'closed report',
+ date => DateTime->now,
+ state => 'closed',
+ banner_id => '',
+ banner_text => '',
+ fixed => 0
+ },
) {
subtest "banner for $test->{description}" => sub {
$report->confirmed( $test->{date}->ymd . ' ' . $test->{date}->hms );
diff --git a/t/app/model/problem.t b/t/app/model/problem.t
index 1b8804fce..43f15dbde 100644
--- a/t/app/model/problem.t
+++ b/t/app/model/problem.t
@@ -152,4 +152,144 @@ for my $test (
};
}
+for my $test (
+ {
+ state => 'unconfirmed',
+ is_open => 1,
+ },
+ {
+ state => 'confirmed',
+ is_open => 1,
+ },
+ {
+ state => 'investigating',
+ is_open => 1,
+ },
+ {
+ state => 'planned',
+ is_open => 1,
+ },
+ {
+ state => 'in progress',
+ is_open => 1,
+ },
+ {
+ state => 'fixed',
+ is_open => 0,
+ },
+ {
+ state => 'fixed - council',
+ is_open => 0,
+ },
+ {
+ state => 'fixed - user',
+ is_open => 0,
+ },
+ {
+ state => 'closed',
+ is_open => 0,
+ },
+) {
+ subtest $test->{state} . ' is open/closed' => sub {
+ $problem->state( $test->{state} );
+ is $problem->is_open, $test->{is_open}, 'is_open';
+ };
+}
+
+for my $test (
+ {
+ state => 'unconfirmed',
+ is_fixed => 0,
+ },
+ {
+ state => 'confirmed',
+ is_fixed => 0,
+ },
+ {
+ state => 'investigating',
+ is_fixed => 0,
+ },
+ {
+ state => 'planned',
+ is_fixed => 0,
+ },
+ {
+ state => 'in progress',
+ is_fixed => 0,
+ },
+ {
+ state => 'fixed',
+ is_fixed => 1,
+ },
+ {
+ state => 'fixed - council',
+ is_fixed => 1,
+ },
+ {
+ state => 'fixed - user',
+ is_fixed => 1,
+ },
+ {
+ state => 'closed',
+ is_fixed => 0,
+ },
+) {
+ subtest $test->{state} . ' is fixed/open' => sub {
+ $problem->state( $test->{state} );
+ is $problem->is_fixed, $test->{is_fixed}, 'is_fixed';
+ };
+}
+
+for my $test (
+ {
+ state => 'partial',
+ is_visible => 0,
+ },
+ {
+ state => 'hidden',
+ is_visible => 0,
+ },
+ {
+ state => 'unconfirmed',
+ is_visible => 0,
+ },
+ {
+ state => 'confirmed',
+ is_visible => 1,
+ },
+ {
+ state => 'investigating',
+ is_visible => 1,
+ },
+ {
+ state => 'planned',
+ is_visible => 1,
+ },
+ {
+ state => 'in progress',
+ is_visible => 1,
+ },
+ {
+ state => 'fixed',
+ is_visible => 1,
+ },
+ {
+ state => 'fixed - council',
+ is_visible => 1,
+ },
+ {
+ state => 'fixed - user',
+ is_visible => 1,
+ },
+ {
+ state => 'closed',
+ is_visible => 1,
+ },
+) {
+ subtest $test->{state} . ' is fixed/open' => sub {
+ $problem->state( $test->{state} );
+ is $problem->is_visible, $test->{is_visible}, 'is_visible';
+ };
+}
+
done_testing();
diff --git a/t/app/model/questionnaire.t b/t/app/model/questionnaire.t
new file mode 100644
index 000000000..60b52043a
--- /dev/null
+++ b/t/app/model/questionnaire.t
@@ -0,0 +1,106 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use FixMyStreet;
+use FixMyStreet::TestMech;
+
+my $user = FixMyStreet::App->model('DB::User')->find_or_create( { email => 'test@example.com' } );
+
+my $problem = FixMyStreet::App->model('DB::Problem')->create(
+ {
+ postcode => 'EH99 1SP',
+ latitude => 1,
+ longitude => 1,
+ areas => 1,
+ title => 'to be sent',
+ detail => 'detail',
+ used_map => 1,
+ user_id => 1,
+ name => 'A Name',
+ state => 'confirmed',
+ service => '',
+ cobrand => 'default',
+ cobrand_data => '',
+ confirmed => \"ms_current_timestamp() - '5 weeks'::interval",
+ whensent => \"ms_current_timestamp() - '5 weeks'::interval",
+ user => $user,
+ anonymous => 0,
+ }
+);
+
+diag $problem->id;
+
+my $mech = FixMyStreet::TestMech->new;
+
+for my $test (
+ {
+ state => 'unconfirmed',
+ send_email => 0,
+ },
+ {
+ state => 'partial',
+ send_email => 0,
+ },
+ {
+ state => 'hidden',
+ send_email => 0,
+ },
+ {
+ state => 'confirmed',
+ send_email => 1,
+ },
+ {
+ state => 'investigating',
+ send_email => 1,
+ },
+ {
+ state => 'planned',
+ send_email => 1,
+ },
+ {
+ state => 'in progress',
+ send_email => 1,
+ },
+ {
+ state => 'fixed',
+ send_email => 1,
+ },
+ {
+ state => 'fixed - council',
+ send_email => 1,
+ },
+ {
+ state => 'fixed - user',
+ send_email => 1,
+ },
+ {
+ state => 'closed',
+ send_email => 1,
+ },
+) {
+ subtest "correct questionnaire behviour for state $test->{state}" => sub {
+ $problem->discard_changes;
+ $problem->state( $test->{state} );
+ $problem->send_questionnaire( 1 );
+ $problem->update;
+
+ $problem->questionnaires->delete;
+
+ $mech->email_count_is(0);
+
+ FixMyStreet::App->model('DB::Questionnaire')
+ ->send_questionnaires( { site => 'fixmystreet' } );
+
+ $mech->email_count_is( $test->{send_email} );
+
+ $mech->clear_emails_ok();
+ }
+}
+
+$mech->delete_user( $user );
+
+done_testing();