aboutsummaryrefslogtreecommitdiffstats
path: root/t
diff options
context:
space:
mode:
Diffstat (limited to 't')
-rw-r--r--t/cobrand/tfl.t10
-rw-r--r--t/script/inactive.t77
2 files changed, 83 insertions, 4 deletions
diff --git a/t/cobrand/tfl.t b/t/cobrand/tfl.t
index 33506e8c4..e1990c946 100644
--- a/t/cobrand/tfl.t
+++ b/t/cobrand/tfl.t
@@ -556,6 +556,16 @@ subtest 'check report age on /around' => sub {
});
};
+subtest 'check report age in general' => sub {
+ my $report = FixMyStreet::DB->resultset("Problem")->find({ title => 'Test Report 1'});
+ $report->update({ state => 'confirmed' });
+ $mech->get_ok('/report/' . $report->id);
+ $report->update({ lastupdate => \"current_timestamp-'4 years'::interval" });
+ $mech->get('/report/' . $report->id);
+ is $mech->res->code, 404;
+ $report->update({ lastupdate => \"current_timestamp" });
+};
+
subtest 'TfL admin allows inspectors to be assigned to borough areas' => sub {
$mech->log_in_ok($superuser->email);
diff --git a/t/script/inactive.t b/t/script/inactive.t
index 489ff55ca..5ef4073dd 100644
--- a/t/script/inactive.t
+++ b/t/script/inactive.t
@@ -1,4 +1,5 @@
use FixMyStreet::TestMech;
+use Test::Output;
use_ok 'FixMyStreet::Script::Inactive';
@@ -22,6 +23,7 @@ for (my $m = 1; $m <= 12; $m++) {
dt => $t,
lastupdate => "$t",
state => $m % 2 ? 'fixed - user' : 'confirmed',
+ cobrand => $m % 3 ? 'default' : 'bromley',
});
}
@@ -50,23 +52,90 @@ subtest 'Anonymization of inactive fixed/closed reports' => sub {
is $comment->user->email, 'removed-automatically@example.org', 'Comment user anonymized';
};
+subtest 'Test operating on one cobrand only' => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => 'bromley'
+ }, sub {
+ my $in = FixMyStreet::Script::Inactive->new( cobrand => 'bromley', close => 1 );
+ $in->reports;
+ # Reports not a multiple of 2 are fixed, reports a multiple of 3 are bromley
+ $problems[2]->discard_changes;
+ is $problems[2]->get_extra_metadata('closed_updates'), 1, 'Closed to updates';
+ $problems[4]->discard_changes;
+ is $problems[4]->get_extra_metadata('closed_updates'), undef, 'Not closed to updates';
+ $problems[6]->discard_changes;
+ is $problems[6]->get_extra_metadata('closed_updates'), undef, 'Not closed to updates';
+ $problems[8]->discard_changes;
+ is $problems[8]->get_extra_metadata('closed_updates'), 1, 'Closed to updates';
+ };
+};
+
subtest 'Closing updates on inactive fixed/closed reports' => sub {
my $in = FixMyStreet::Script::Inactive->new( close => 1 );
$in->reports;
- $problems[2]->discard_changes;
- is $problems[2]->get_extra_metadata('closed_updates'), 1, 'Closed to updates';
- $mech->get_ok("/report/" . $problems[2]->id);
+ $problems[4]->discard_changes;
+ is $problems[4]->get_extra_metadata('closed_updates'), 1, 'Closed to updates';
+ $mech->get_ok("/report/" . $problems[4]->id);
$mech->content_contains('now closed to updates');
};
+subtest 'Deleting reports' => sub {
+ my $in = FixMyStreet::Script::Inactive->new( delete => 6 );
+ $in->reports;
+
+ my $count = FixMyStreet::DB->resultset("Problem")->count;
+ is $count, 6, 'Six left';
+
+ $mech->get("/report/" . $problems[2]->id);
+ is $mech->res->code, 404;
+};
+
subtest 'Anonymization of inactive users' => sub {
- $in->users;
+ my $in = FixMyStreet::Script::Inactive->new( anonymize => 6, email => 3, verbose => 1 );
+ stdout_is { $in->users } "Anonymizing user #" . $user->id . "\nEmailing user #" . $user_inactive->id . "\n", 'users dealt with first time';
my $email = $mech->get_email;
like $email->as_string, qr/inactive\@example.com/, 'Inactive email sent';
+ $mech->clear_emails_ok;
$user->discard_changes;
is $user->email, 'removed-' . $user->id . '@example.org', 'User has been anonymized';
+
+ stdout_is { $in->users } '', 'No output second time';
+
+ $mech->email_count_is(0); # No further email sent
+
+ $user->discard_changes;
+ is $user->email, 'removed-' . $user->id . '@example.org', 'User has been anonymized';
+};
+
+subtest 'Test TfL deletion of safety critical reports' => sub {
+ FixMyStreet::override_config {
+ ALLOWED_COBRANDS => 'tfl'
+ }, sub {
+ for (my $y = 2; $y <= 10; $y+=2) {
+ # 2 years, not safety; 4 years safety, 6 years not safety, 8 years safety, 10 years not safety
+ my $t = DateTime->now->subtract(years => $y);
+ my ($problem) = $mech->create_problems_for_body(1, 2237, 'Title', {
+ dt => $t,
+ lastupdate => "$t",
+ state => 'fixed - user',
+ cobrand => 'tfl',
+ });
+ $problem->update_extra_field({ name => 'safety_critical', value => $y % 4 ? 'no' : 'yes' });
+ $problem->update;
+ }
+
+ my $in = FixMyStreet::Script::Inactive->new( cobrand => 'tfl', delete => 36 );
+ $in->reports;
+ my $count = FixMyStreet::DB->resultset("Problem")->search({ cobrand => 'tfl' })->count;
+ is $count, 3, 'Three reports left, one too recent, two safety critical';
+
+ $in = FixMyStreet::Script::Inactive->new( cobrand => 'tfl', delete => 84 );
+ $in->reports;
+ $count = FixMyStreet::DB->resultset("Problem")->search({ cobrand => 'tfl' })->count;
+ is $count, 2, 'Two reports left, two too recent';
+ }
};
done_testing;