Skip to content

Commit 8cda6ae

Browse files
committed
[Bristol] No service_code on passthrough updates.
The endpoint does not like it being present.
1 parent 7f46037 commit 8cda6ae

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

perllib/Open311/Endpoint/Integration/UK/Bristol/Passthrough.pm

+7
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,11 @@ around BUILDARGS => sub {
2020
return $class->$orig(%args);
2121
};
2222

23+
around post_service_request_update => sub {
24+
my ($orig, $self, $args) = @_;
25+
# Bristol's endpoint gets confused if it receives a service_code on an update
26+
delete $args->{service_code};
27+
return $self->$orig($args);
28+
};
29+
2330
1;
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
use strict;
2+
use warnings;
3+
4+
BEGIN { $ENV{TEST_MODE} = 1; }
5+
6+
use Test::More;
7+
use Test::MockModule;
8+
use JSON::MaybeXS;
9+
use Path::Tiny;
10+
11+
my $pt = Test::MockModule->new('Open311::Endpoint::Integration::UK::Bristol::Passthrough');
12+
$pt->mock(endpoint => sub { '' });
13+
14+
my $expected_update_post = <<XML;
15+
<?xml version="1.0" encoding="utf-8"?>
16+
<service_request_updates>
17+
<request_update>
18+
<update_id>2002</update_id>
19+
</request_update>
20+
</service_request_updates>
21+
XML
22+
23+
my $ua = Test::MockModule->new('LWP::UserAgent');
24+
$ua->mock(post => sub {
25+
my $args = $_[2];
26+
is $args->{service_code}, undef;
27+
return HTTP::Response->new(200, 'OK', [], $expected_update_post);
28+
});
29+
30+
use_ok 'Open311::Endpoint::Integration::UK::Bristol::Passthrough';
31+
32+
my $endpoint = Open311::Endpoint::Integration::UK::Bristol::Passthrough->new;
33+
34+
subtest 'POST update' => sub {
35+
my $res = $endpoint->run_test_request(
36+
POST => '/servicerequestupdates.xml',
37+
api_key => 'test',
38+
service_code => 'SE01',
39+
service_request_id => 1001,
40+
update_id => 123,
41+
# first_name => 'Bob',
42+
# last_name => 'Mould',
43+
description => 'Update here',
44+
status => 'OPEN',
45+
updated_datetime => '2016-09-01T15:00:00Z',
46+
# media_url => 'http://example.org/',
47+
);
48+
ok $res->is_success, 'valid request' or diag $res->content;
49+
is $res->content, $expected_update_post;
50+
};
51+
52+
done_testing;

0 commit comments

Comments
 (0)