aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/SendReport/Email/Highways.pm7
-rw-r--r--t/app/sendreport/email/highways.t8
2 files changed, 14 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/SendReport/Email/Highways.pm b/perllib/FixMyStreet/SendReport/Email/Highways.pm
index 918ac896d..3ace07b6a 100644
--- a/perllib/FixMyStreet/SendReport/Email/Highways.pm
+++ b/perllib/FixMyStreet/SendReport/Email/Highways.pm
@@ -12,8 +12,13 @@ sub build_recipient_list {
my $contact = $self->fetch_category($body, $row) or return;
my $email = $contact->email;
my $area_name = $row->get_extra_field_value('area_name') || '';
+
+ # config is read-only, so must step through one-by-one to prevent
+ # vivification
my $area_email = FixMyStreet->config('COBRAND_FEATURES') || {};
- $area_email = $area_email->{open311_email}->{highwaysengland}->{$area_name};
+ $area_email = $area_email->{open311_email} || {};
+ $area_email = $area_email->{highwaysengland} || {};
+ $area_email = $area_email->{$area_name};
$email = $area_email if $area_email;
@{$self->to} = map { [ $_, $body->name ] } split /,/, $email;
diff --git a/t/app/sendreport/email/highways.t b/t/app/sendreport/email/highways.t
index 22913a7e6..6f6c65eb5 100644
--- a/t/app/sendreport/email/highways.t
+++ b/t/app/sendreport/email/highways.t
@@ -34,6 +34,14 @@ is $e->build_recipient_list($row), 1, 'correct recipient list count';
is_deeply $e->to, [ [ 'highways@example.com', 'Highways England' ] ], 'correct To line';
FixMyStreet::override_config {
+ COBRAND_FEATURES => {}
+}, sub {
+ $row->set_extra_fields( { name => 'area_name', value => 'Area 7' } );
+ is $e->build_recipient_list($row), 1, 'correct recipient list count';
+ is_deeply $e->to, [ [ 'highways@example.com', 'Highways England' ] ], 'correct To line';
+};
+
+FixMyStreet::override_config {
COBRAND_FEATURES => { open311_email => { highwaysengland => { 'Area 7' => 'a7@example.com' } } }
}, sub {
$row->set_extra_fields( { name => 'area_name', value => 'Area 7' } );