aboutsummaryrefslogtreecommitdiffstats
path: root/t/cobrand
diff options
context:
space:
mode:
Diffstat (limited to 't/cobrand')
-rw-r--r--t/cobrand/zurich.t208
1 files changed, 112 insertions, 96 deletions
diff --git a/t/cobrand/zurich.t b/t/cobrand/zurich.t
index 038a2fe35..0a622cb2b 100644
--- a/t/cobrand/zurich.t
+++ b/t/cobrand/zurich.t
@@ -46,6 +46,7 @@ sub reset_report_state {
$report->unset_extra_metadata('moderated_overdue');
$report->unset_extra_metadata('subdiv_overdue');
$report->unset_extra_metadata('closed_overdue');
+ $report->unset_extra_metadata('closure_status');
$report->whensent(undef);
$report->state('unconfirmed');
$report->created($created) if $created;
@@ -122,7 +123,8 @@ FixMyStreet::override_config {
}, sub {
$mech->get_ok( '/report/' . $report->id );
};
-$mech->content_contains('Überprüfung ausstehend');
+$mech->content_contains('Überprüfung ausstehend')
+ or die $mech->content;
# Check logging in to deal with this report
FixMyStreet::override_config {
@@ -215,102 +217,100 @@ sub get_moderated_count {
subtest "report_edit" => sub {
- reset_report_state($report);
-
- ok ( ! $report->get_extra_metadata('moderated_overdue'), 'Report currently unmoderated' );
-
- is get_moderated_count(), 0;
-
FixMyStreet::override_config {
ALLOWED_COBRANDS => [ 'zurich' ],
}, sub {
+
+ reset_report_state($report);
+ ok ( ! $report->get_extra_metadata('moderated_overdue'), 'Report currently unmoderated' );
+ is get_moderated_count(), 0;
+
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->content_contains( 'Unbestätigt' ); # Unconfirmed email
$mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
$mech->get_ok( '/report/' . $report->id );
$report->discard_changes();
- is $report->state, 'confirmed', 'state has been updated to confirmed';
- };
-
- $mech->content_contains('Aufgenommen');
- $mech->content_contains('Test Test');
- $mech->content_lacks('photo/' . $report->id . '.0.jpeg');
- $mech->email_count_is(0);
- $report->discard_changes;
+ $mech->content_contains('Aufgenommen');
+ $mech->content_contains('Test Test');
+ $mech->content_lacks('photo/' . $report->id . '.0.jpeg');
+ $mech->email_count_is(0);
- is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Report now marked moderated' );
- is get_moderated_count(), 1;
+ $report->discard_changes;
+ is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Report now marked moderated' );
+ is get_moderated_count(), 1;
- # Set state back to 10 days ago so that report is overdue
- my $created = $report->created;
- reset_report_state($report, $created->clone->subtract(days => 10));
+ # Set state back to 10 days ago so that report is overdue
+ my $created = $report->created;
+ reset_report_state($report, $created->clone->subtract(days => 10));
- is get_moderated_count(), 0;
+ is get_moderated_count(), 0;
- FixMyStreet::override_config {
- ALLOWED_COBRANDS => [ 'zurich' ],
- }, sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
$mech->get_ok( '/report/' . $report->id );
- };
- $report->discard_changes;
- is ( $report->get_extra_metadata('moderated_overdue'), 1, 'moderated_overdue set correctly when overdue' );
- is get_moderated_count(), 0, 'Moderated count not increased when overdue';
- reset_report_state($report, $created);
+ $report->discard_changes;
+ is ( $report->get_extra_metadata('moderated_overdue'), 1, 'moderated_overdue set correctly when overdue' );
+ is get_moderated_count(), 0, 'Moderated count not increased when overdue';
+
+ reset_report_state($report, $created);
- FixMyStreet::override_config {
- ALLOWED_COBRANDS => [ 'zurich' ],
- }, sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
$mech->get_ok( '/report/' . $report->id );
- };
- $report->discard_changes;
- is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Marking confirmed sets moderated_overdue' );
- is ( $report->get_extra_metadata('closed_overdue'), undef, 'Marking confirmed does NOT set closed_overdue' );
- is get_moderated_count(), 1;
+ $report->discard_changes;
+ is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Marking confirmed sets moderated_overdue' );
+ is ( $report->get_extra_metadata('closed_overdue'), undef, 'Marking confirmed does NOT set closed_overdue' );
+ is get_moderated_count(), 1;
- FixMyStreet::override_config {
- ALLOWED_COBRANDS => [ 'zurich' ],
- }, sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { with_fields => { state => 'hidden' } } );
$mech->get_ok( '/admin/report_edit/' . $report->id );
- };
- $report->discard_changes;
- is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Still marked moderated_overdue' );
- is ( $report->get_extra_metadata('closed_overdue'), 0, 'Marking hidden also set closed_overdue' );
- is get_moderated_count(), 1, 'Check still counted moderated'
- or diag $report->get_column('extra');
- reset_report_state($report);
+ $report->discard_changes;
+ is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Still marked moderated_overdue' );
+ is ( $report->get_extra_metadata('closed_overdue'), undef, "Marking hidden doesn't set closed_overdue..." );
+ is ( $report->state, 'planned', 'Marking hidden actually sets state to planned');
+ is ( $report->get_extra_metadata('closure_status'), 'hidden', 'Marking hidden sets closure_status to hidden');
+ is get_moderated_count(), 1, 'Check still counted moderated'
+ or diag $report->get_column('extra');
+
+ # publishing actually sets hidden
+ $mech->form_with_fields( 'status_update' );
+ $mech->submit_form_ok( { button => 'publish_response' } );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
+ $report->discard_changes;
- is ( $report->get_extra_metadata('moderated_overdue'), undef, 'Sanity check' );
- is get_moderated_count(), 0;
+ is ( $report->get_extra_metadata('closed_overdue'), 0, "Closing as hidden sets closed_overdue..." );
+ is ( $report->state, 'hidden', 'Closing as hidden sets state to hidden');
+ is ( $report->get_extra_metadata('closure_status'), undef, 'Closing as hidden unsets closure_status');
- # Check that setting to 'hidden' also triggers moderation
- FixMyStreet::override_config {
- ALLOWED_COBRANDS => [ 'zurich' ],
- }, sub {
+
+ reset_report_state($report);
+ is ( $report->get_extra_metadata('moderated_overdue'), undef, 'Sanity check' );
+ is get_moderated_count(), 0;
+
+ # Check that setting to 'hidden' also triggers moderation
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { with_fields => { state => 'hidden' } } );
$mech->get_ok( '/admin/report_edit/' . $report->id );
- };
- $report->discard_changes;
- is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Marking hidden from scratch sets moderated_overdue' );
- is ( $report->get_extra_metadata('closed_overdue'), 0, 'Marking hidden from scratch also set closed_overdue' );
- is get_moderated_count(), 1;
+ $mech->form_with_fields( 'status_update' );
+ $mech->submit_form_ok( { button => 'publish_response' } );
+
+ $report->discard_changes;
+ is ( $report->get_extra_metadata('moderated_overdue'), 0, 'Marking hidden from scratch sets moderated_overdue' );
+ is ( $report->get_extra_metadata('closed_overdue'), 0, 'Marking hidden from scratch also set closed_overdue' );
+ is get_moderated_count(), 1;
- is ($cobrand->get_or_check_overdue($report), 0, 'sanity check');
- $report->update({ created => $created->clone->subtract(days => 10) });
- is ($cobrand->get_or_check_overdue($report), 0, 'overdue call not increased');
+ is ($cobrand->get_or_check_overdue($report), 0, 'sanity check');
+ $report->update({ created => $created->clone->subtract(days => 10) });
+ is ($cobrand->get_or_check_overdue($report), 0, 'overdue call not increased');
- reset_report_state($report, $created);
+ reset_report_state($report, $created);
+ }
};
FixMyStreet::override_config {
@@ -335,7 +335,7 @@ FixMyStreet::override_config {
$mech->content_contains( 'Originaltext: “Test Test 1 for ' . $division->id . ' Detail”' );
$mech->get_ok( '/admin/report_edit/' . $report->id );
- $mech->submit_form_ok( { with_fields => { body_subdivision => $subdivision->id, send_rejected_email => 1 } } );
+ $mech->submit_form_ok( { with_fields => { body_subdivision => $subdivision->id } } );
$mech->get_ok( '/report/' . $report->id );
$mech->content_contains('In Bearbeitung');
@@ -421,13 +421,12 @@ subtest 'SDM' => sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { button => 'not_contactable', form_number => 2 } );
$report->discard_changes;
- is $report->state, 'partial', 'Report sent back to partial (not_contactable) state';
+ is $report->state, 'planned', 'Report sent back to Rueckmeldung ausstehend state';
+ is $report->get_extra_metadata('closure_status'), 'partial', 'Report sent back to partial (not_contactable) state';
is $report->bodies_str, $division->id, 'Report sent back to division';
};
};
- $report->update({ state => 'planned' });
-
$mech->log_out_ok;
};
@@ -438,6 +437,9 @@ FixMyStreet::override_config {
$mech->get_ok( '/admin' );
};
+reset_report_state($report);
+$report->update({ state => 'planned' });
+
$mech->content_contains( 'report_edit/' . $report->id );
$mech->content_contains( DateTime->now->strftime("%d.%m.%Y") );
@@ -466,7 +468,7 @@ like $email->header('From'), qr/division\@example.org/, 'from line looks correct
like $email->body, qr/FINAL UPDATE/, 'body looks correct';
$mech->clear_emails_ok;
-# Assign directly to planned, don't confirm email
+# Assign planned (via confirmed), don't confirm email
@reports = $mech->create_problems_for_body( 1, $division->id, 'Second', {
state => 'unconfirmed',
confirmed => undef,
@@ -479,6 +481,8 @@ FixMyStreet::override_config {
ALLOWED_COBRANDS => [ 'zurich' ],
}, sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->submit_form_ok( { with_fields => { state => 'confirmed' } } );
+ $mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->submit_form_ok( { with_fields => { state => 'planned' } } );
$mech->get_ok( '/report/' . $report->id );
};
@@ -490,6 +494,8 @@ FixMyStreet::override_config {
}, sub {
$mech->get_ok( '/admin/report_edit/' . $report->id );
$mech->content_contains( 'Unbestätigt' );
+ $report->discard_changes;
+ $mech->form_with_fields( 'status_update' );
$mech->submit_form_ok( { button => 'publish_response', with_fields => { status_update => 'FINAL UPDATE' } } );
$mech->get_ok( '/report/' . $report->id );
@@ -515,18 +521,28 @@ subtest "external report triggers email" => sub {
FixMyStreet::override_config {
ALLOWED_COBRANDS => [ 'zurich' ],
}, sub {
+
+ # required to see body_external field
+ $report->state('planned');
+ $report->set_extra_metadata('closure_status' => 'closed');
# Set the public_response manually here because the default one will have line breaks that get escaped as HTML, causing the comparison to fail.
$report->set_extra_metadata('public_response' => 'Freundliche Gruesse Ihre Stadt Zuerich');
- $report->update({ state => 'closed' }); # required to see body_external field
+ $report->update;
+
$mech->get_ok( '/admin/report_edit/' . $report->id );
+ $mech->form_with_fields( 'publish_response' );
$mech->submit_form_ok( {
+ button => 'publish_response',
with_fields => {
body_external => $external_body->id,
external_message => $EXTERNAL_MESSAGE,
} });
+ $report->discard_changes;
$mech->get_ok( '/report/' . $report->id );
};
- $mech->content_contains('Extern');
+ is ($report->state, 'closed', 'Report was closed correctly');
+ $mech->content_contains('Extern')
+ or die $mech->content;
$mech->content_contains('Third Test');
$mech->content_contains($report->get_extra_metadata('public_response')) or die $mech->content;
send_reports_for_zurich();
@@ -543,13 +559,24 @@ subtest "external report triggers email" => sub {
ALLOWED_COBRANDS => [ 'zurich' ],
}, sub {
$mech->get_ok( '/admin' );
- $report->update({ state => 'closed' }); # required to see body_external field
+ # required to see body_external field
+ $report->state('planned');
+ $report->set_extra_metadata('closure_status' => 'closed');
+ $report->set_extra_metadata('public_response' => 'Freundliche Gruesse Ihre Stadt Zuerich');
+ $report->update;
+
is $mech->uri->path, '/admin', "am logged in";
$mech->content_contains( 'report_edit/' . $report->id );
$mech->get_ok( '/admin/report_edit/' . $report->id );
- $mech->submit_form_ok( { with_fields => { body_external => $external_body->id, third_personal => 1 } } );
- $mech->get_ok( '/report/' . $report->id );
- };
+ $mech->form_with_fields( 'publish_response' );
+ $mech->submit_form_ok( {
+ button => 'publish_response',
+ with_fields => {
+ body_external => $external_body->id,
+ third_personal => 1,
+ } });
+ $mech->get_ok( '/report/' . $report->id );
+ };
$mech->content_contains('Extern');
$mech->content_contains('Third Test');
$mech->content_contains($report->get_extra_metadata('public_response'));
@@ -566,9 +593,18 @@ subtest "external report triggers email" => sub {
FixMyStreet::override_config {
ALLOWED_COBRANDS => [ 'zurich' ],
}, sub {
- $report->update({ state => 'investigating' }); # Wish
+ # set as wish
+ $report->discard_changes;
+ $report->state('planned');
+ $report->set_extra_metadata('closure_status' => 'investigating');
+ $report->update;
+ is ($report->state, 'planned', 'Sanity check') or die;
+
$mech->get_ok( '/admin/report_edit/' . $report->id );
+
+ $mech->form_with_fields( 'publish_response' );
$mech->submit_form_ok( {
+ button => 'publish_response',
with_fields => {
body_external => $external_body->id,
external_message => $EXTERNAL_MESSAGE,
@@ -702,25 +738,6 @@ subtest "problems can't be assigned to deleted bodies" => sub {
$mech->log_out_ok;
};
-subtest "hidden report email are only sent when requested" => sub {
- $user = $mech->log_in_ok( 'dm1@example.org') ;
- $report->set_extra_metadata(email_confirmed => 1);
- $report->update;
- FixMyStreet::override_config {
- ALLOWED_COBRANDS => [ 'zurich' ],
- }, sub {
- $mech->get_ok( '/admin/report_edit/' . $report->id );
- $mech->submit_form_ok( { with_fields => { state => 'hidden', send_rejected_email => 1 } } );
- $mech->email_count_is(1);
- $mech->clear_emails_ok;
- $mech->get_ok( '/admin/report_edit/' . $report->id );
- $mech->submit_form_ok( { with_fields => { state => 'hidden', send_rejected_email => undef } } );
- $mech->email_count_is(0);
- $mech->clear_emails_ok;
- $mech->log_out_ok;
- };
-};
-
subtest "photo must be supplied for categories that require it" => sub {
FixMyStreet::App->model('DB::Contact')->find_or_create({
body => $division,
@@ -774,7 +791,6 @@ subtest "test stats" => sub {
if (defined $export_count) {
is $export_count - $EXISTING_REPORT_COUNT, 3, 'Correct number of reports';
$mech->content_contains('fixed - council');
- $mech->content_contains(',hidden,');
}
};
};
@@ -788,8 +804,8 @@ subtest "test admin_log" => sub {
# XXX: following is dependent on all of test up till now, rewrite to explicitly
# test which things need to be logged!
- is scalar @entries, 1, 'State changes logged';
- is $entries[-1]->action, 'state change to hidden', 'State change logged as expected';
+ is scalar @entries, 3, 'State changes logged';
+ is $entries[-1]->action, 'state change to investigating', 'State change logged as expected';
};
subtest 'email images to external partners' => sub {