aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perllib/FixMyStreet/Cobrand/Buckinghamshire.pm19
-rw-r--r--t/cobrand/bucks.t52
2 files changed, 70 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
index 22213e45c..9b4445460 100644
--- a/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
+++ b/perllib/FixMyStreet/Cobrand/Buckinghamshire.pm
@@ -89,6 +89,23 @@ sub open311_config {
$row->set_extra_fields(@$extra);
}
+# This provides a similar functionality to open311_config, but for email.
+sub munge_sendreport_params {
+ my ($self, $row, $vars, $hdrs) = @_;
+
+ return unless $row->category eq 'Flytipping';
+
+ # Reports made via FMS.com or the app probably won't have a site code
+ # value because we don't display the adopted highways layer on those
+ # frontends. Instead we'll look up the closest asset from the WFS
+ # service at the point we're sending the report by email.
+ my $site_code = $row->get_extra_field_value('site_code') || $self->lookup_site_code($row, 10);
+ if ($site_code) {
+ my $e = join('', 'internaltfb', '@', $self->admin_user_domain);
+ push @{$hdrs->{To}}, [ $e, 'TfB' ];
+ }
+}
+
sub map_type { 'Buckinghamshire' }
sub default_map_zoom { 3 }
@@ -323,8 +340,8 @@ sub categories_restriction {
sub lookup_site_code {
my $self = shift;
my $row = shift;
+ my $buffer = shift || 200; # metres
- my $buffer = 200; # metres
my ($x, $y) = $row->local_coords;
my ($w, $s, $e, $n) = ($x-$buffer, $y-$buffer, $x+$buffer, $y+$buffer);
diff --git a/t/cobrand/bucks.t b/t/cobrand/bucks.t
new file mode 100644
index 000000000..1dee8b47e
--- /dev/null
+++ b/t/cobrand/bucks.t
@@ -0,0 +1,52 @@
+use Test::MockModule;
+use FixMyStreet::TestMech;
+use FixMyStreet::Script::Reports;
+
+my $mech = FixMyStreet::TestMech->new;
+
+my $body = $mech->create_body_ok(2217, 'Buckinghamshire');
+$mech->create_contact_ok(body_id => $body->id, category => 'Flytipping', email => "flytipping\@example.org");
+
+my $cobrand = Test::MockModule->new('FixMyStreet::Cobrand::Buckinghamshire');
+$cobrand->mock('lookup_site_code', sub {
+ my ($self, $row, $buffer) = @_;
+ return "Road ID" if $row->latitude == 51.812244;
+});
+
+FixMyStreet::override_config {
+ ALLOWED_COBRANDS => [ 'buckinghamshire', 'fixmystreet' ],
+ MAPIT_URL => 'http://mapit.uk/',
+}, sub {
+
+subtest 'cobrand displays council name' => sub {
+ ok $mech->host("buckinghamshire.fixmystreet.com"), "change host to bucks";
+ $mech->get_ok('/');
+ $mech->content_contains('Buckinghamshire');
+};
+
+$mech->create_problems_for_body(1, $body->id, 'On Road', {
+ category => 'Flytipping', cobrand => 'fixmystreet',
+ latitude => 51.812244, longitude => -0.827363,
+});
+
+subtest 'flytipping on road sent to extra email' => sub {
+ FixMyStreet::Script::Reports::send();
+ my $email = $mech->get_email;
+ my $tfb = join('', 'internaltfb', '@', 'buckscc.gov.uk');
+ is $email->header('To'), '"Buckinghamshire" <flytipping@example.org>, "TfB" <' . $tfb . '>';
+};
+
+$mech->create_problems_for_body(1, $body->id, 'Off Road', {
+ category => 'Flytipping', cobrand => 'fixmystreet',
+ latitude => 51.813173, longitude => -0.826741,
+});
+subtest 'flytipping on road sent to extra email' => sub {
+ $mech->clear_emails_ok;
+ FixMyStreet::Script::Reports::send();
+ my $email = $mech->get_email;
+ is $email->header('To'), '"Buckinghamshire" <flytipping@example.org>';
+};
+
+};
+
+done_testing();