aboutsummaryrefslogtreecommitdiffstats
path: root/t/app/controller/report_inspect.t
diff options
context:
space:
mode:
authorDave Arter <davea@mysociety.org>2017-02-01 11:40:38 +0000
committerDave Arter <davea@mysociety.org>2017-02-15 17:36:40 +0000
commit0b1bc26366811481b322c322f2414514bb7c2166 (patch)
tree6e2827a4958dcd48f2aa97871d2bf426d1ce3fc2 /t/app/controller/report_inspect.t
parent71e4186cefa356f240870cd5edf0e15b27e5e044 (diff)
Allow cobrands to control which states affect reputation
Rather than assigning +1 to a user's reputation every time a report is inspected, this allows cobrands to specify which states should increment or decrement the reputation value when a report is inspected. The default behaviour is for reputation to never be changed, but the Oxfordshire cobrand will increment the reputation when a report is marked as 'action scheduled'. For mysociety/fixmystreetforcouncils#119
Diffstat (limited to 't/app/controller/report_inspect.t')
-rw-r--r--t/app/controller/report_inspect.t21
1 files changed, 18 insertions, 3 deletions
diff --git a/t/app/controller/report_inspect.t b/t/app/controller/report_inspect.t
index be2240cd2..cc98f2b64 100644
--- a/t/app/controller/report_inspect.t
+++ b/t/app/controller/report_inspect.t
@@ -67,18 +67,20 @@ FixMyStreet::override_config {
$report->unset_extra_metadata('inspected');
$report->state('confirmed');
$report->update;
- my $reputation = $report->user->get_extra_metadata("reputation") || 0;
+ $report->inspection_log_entry->delete;
+ my $reputation = $report->user->get_extra_metadata("reputation");
$mech->get_ok("/report/$report_id");
$mech->submit_form_ok({ button => 'save', with_fields => { public_update => "This is a public update.", include_update => "1", state => 'action scheduled' } });
$report->discard_changes;
is $report->comments->first->text, "This is a public update.", 'Update was created';
is $report->get_extra_metadata('inspected'), 1, 'report marked as inspected';
- is $report->user->get_extra_metadata('reputation'), $reputation+1, "User reputation was increased";
+ is $report->user->get_extra_metadata('reputation'), $reputation, "User reputation wasn't changed";
};
subtest "test update is required when instructing" => sub {
$report->unset_extra_metadata('inspected');
$report->update;
+ $report->inspection_log_entry->delete;
$report->comments->delete_all;
$mech->get_ok("/report/$report_id");
$mech->submit_form_ok({ button => 'save', with_fields => { public_update => undef, include_update => "1" } });
@@ -179,13 +181,26 @@ FixMyStreet::override_config {
ALLOWED_COBRANDS => 'oxfordshire',
}, sub {
subtest "test negative reputation" => sub {
- my $reputation = $report->user->get_extra_metadata("reputation");
+ my $reputation = $report->user->get_extra_metadata("reputation") || 0;
$mech->get_ok("/report/$report_id");
$mech->submit_form( button => 'remove_from_site' );
$report->discard_changes;
is $report->user->get_extra_metadata('reputation'), $reputation-1, "User reputation was decreased";
+ $report->update({ state => 'confirmed' });
+ };
+
+ subtest "test positive reputation" => sub {
+ $report->unset_extra_metadata('inspected');
+ $report->update;
+ $report->inspection_log_entry->delete if $report->inspection_log_entry;
+ my $reputation = $report->user->get_extra_metadata("reputation") || 0;
+ $mech->get_ok("/report/$report_id");
+ $mech->submit_form_ok({ button => 'save', with_fields => { state => 'action scheduled', include_update => undef } });
+ $report->discard_changes;
+ is $report->get_extra_metadata('inspected'), 1, 'report marked as inspected';
+ is $report->user->get_extra_metadata('reputation'), $reputation+1, "User reputation was increased";
};
subtest "Oxfordshire-specific traffic management options are shown" => sub {