@@ -35,6 +35,7 @@ use JSON::MaybeXS;
35
35
use_ok ' Open311::Endpoint::Integration::UK::Kingston' ;
36
36
37
37
use constant EVENT_TYPE_SUBSCRIBE => 1638;
38
+ use constant EVENT_TYPE_BULKY => 1636;
38
39
39
40
my $soap_lite = Test::MockModule-> new(' SOAP::Lite' );
40
41
$soap_lite -> mock(call => sub {
@@ -47,7 +48,21 @@ $soap_lite->mock(call => sub {
47
48
my @params = ${$args [3]-> value}-> value;
48
49
if (@params == 5) {
49
50
my $client_ref = $params [1]-> value;
50
- like $client_ref , qr / RBK-2000123|REF-123/ ;
51
+ like $client_ref , qr / RBK-2000123|REF-123|bulky-cc|bulky-phone/ ;
52
+ my $event_type_id = $params [3]-> value;
53
+ if ($event_type_id == 1636) {
54
+ my @data = ${$params [0]-> value}-> value-> value;
55
+ my @payment = ${$data [0]-> value}-> value;
56
+ is $payment [0]-> value, 1011;
57
+ is $payment [1]-> value, 1;
58
+ my $val = $client_ref eq ' bulky-cc' ? 2 : 1;
59
+ @payment = ${$data [1]-> value}-> value;
60
+ is $payment [0]-> value, 1012;
61
+ is $payment [1]-> value, 1; # Always 1
62
+ @payment = ${$data [2]-> value}-> value;
63
+ is $payment [0]-> value, 1013;
64
+ is $payment [1]-> value, $val ;
65
+ }
51
66
} elsif (@params == 2) {
52
67
is $params [0]-> value, ' 123pay' ;
53
68
my @data = ${$params [1]-> value}-> value-> value;
@@ -69,7 +84,7 @@ $soap_lite->mock(call => sub {
69
84
} elsif ($args [0]-> name eq ' GetEvent' ) {
70
85
return SOAP::Result-> new(result => {
71
86
Id => ' 123pay' ,
72
- EventTypeId => 1636 ,
87
+ EventTypeId => EVENT_TYPE_BULKY ,
73
88
EventStateId => 4002,
74
89
});
75
90
} elsif ($method eq ' GetEventType' ) {
@@ -82,6 +97,9 @@ $soap_lite->mock(call => sub {
82
97
] },
83
98
},
84
99
{ Id => 1008, Name => " Notes" },
100
+ { Id => 1011, Name => " Payment Type" },
101
+ { Id => 1012, Name => " Payment Taken By" },
102
+ { Id => 1013, Name => " Payment Method" },
85
103
] },
86
104
});
87
105
} elsif ($method eq ' PerformEventAction' ) {
@@ -102,7 +120,6 @@ my $endpoint = Open311::Endpoint::Integration::Echo::Dummy->new;
102
120
my @params = (
103
121
POST => ' /requests.json' ,
104
122
api_key => ' test' ,
105
- service_code => EVENT_TYPE_SUBSCRIBE,
106
123
first_name => ' Bob' ,
107
124
last_name => ' Mould' ,
108
125
description => " This is the details" ,
@@ -116,7 +133,9 @@ my @params = (
116
133
);
117
134
118
135
subtest " POST subscription request OK" => sub {
119
- my $res = $endpoint -> run_test_request(@params );
136
+ my $res = $endpoint -> run_test_request(@params ,
137
+ service_code => EVENT_TYPE_SUBSCRIBE,
138
+ );
120
139
ok $res -> is_success, ' valid request'
121
140
or diag $res -> content;
122
141
@@ -128,6 +147,7 @@ subtest "POST subscription request OK" => sub {
128
147
129
148
subtest " POST subscription request with client ref provided OK" => sub {
130
149
my $res = $endpoint -> run_test_request(@params ,
150
+ service_code => EVENT_TYPE_SUBSCRIBE,
131
151
' attribute[client_reference]' => ' REF-123' ,
132
152
);
133
153
ok $res -> is_success, ' valid request'
@@ -139,6 +159,36 @@ subtest "POST subscription request with client ref provided OK" => sub {
139
159
} ], ' correct json returned' ;
140
160
};
141
161
162
+ subtest " POST bulky request card payment OK" => sub {
163
+ my $res = $endpoint -> run_test_request(@params ,
164
+ service_code => EVENT_TYPE_BULKY,
165
+ ' attribute[payment_method]' => ' credit_card' ,
166
+ ' attribute[client_reference]' => ' bulky-cc' ,
167
+ );
168
+ ok $res -> is_success, ' valid request'
169
+ or diag $res -> content;
170
+
171
+ is_deeply decode_json($res -> content),
172
+ [ {
173
+ " service_request_id" => ' 1234' ,
174
+ } ], ' correct json returned' ;
175
+ };
176
+
177
+ subtest " POST bulky request phone payment OK" => sub {
178
+ my $res = $endpoint -> run_test_request(@params ,
179
+ service_code => EVENT_TYPE_BULKY,
180
+ ' attribute[payment_method]' => ' csc' ,
181
+ ' attribute[client_reference]' => ' bulky-phone' ,
182
+ );
183
+ ok $res -> is_success, ' valid request'
184
+ or diag $res -> content;
185
+
186
+ is_deeply decode_json($res -> content),
187
+ [ {
188
+ " service_request_id" => ' 1234' ,
189
+ } ], ' correct json returned' ;
190
+ };
191
+
142
192
subtest " POST a successful payment" => sub {
143
193
my $res = $endpoint -> run_test_request(
144
194
POST => ' /servicerequestupdates.json' ,
0 commit comments