diff options
-rw-r--r-- | perllib/FixMyStreet/Cobrand/Buckinghamshire.pm | 19 | ||||
-rw-r--r-- | t/cobrand/bucks.t | 52 |
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(); |