8 use Omnipay\Tests\TestCase;
14 $this->request = m::mock(
'\Omnipay\Common\Message\AbstractRequest')->makePartial();
15 $this->request->initialize();
24 private function changeProtectedProperty($property, $value =
true)
26 $reflection = new \ReflectionClass($this->request);
28 $reflection_property = $reflection->getProperty($property);
29 $reflection_property->setAccessible(
true);
30 $reflection_property->setValue($this->request, $value);
31 $reflection_property->setAccessible(
false);
37 $this->assertSame(array(), $this->request->getParameters());
42 $this->assertSame($this->request, $this->request->initialize(array(
'amount' =>
'1.23')));
43 $this->assertSame(
'1.23', $this->request->getAmount());
53 $this->request->send();
55 $this->request->initialize();
62 $this->assertSame($this->request, $this->request->setCard($card));
63 $this->assertSame($card, $this->request->getCard());
69 $this->assertSame($this->request, $this->request->setCard(array(
'number' =>
'1234')));
71 $card = $this->request->getCard();
72 $this->assertInstanceOf(
'\Omnipay\Common\CreditCard', $card);
73 $this->assertSame(
'1234', $card->getNumber());
78 $this->assertSame($this->request, $this->request->setToken(
'12345'));
79 $this->assertSame(
'12345', $this->request->getToken());
84 $this->assertSame($this->request, $this->request->setCardReference(
'12345'));
85 $this->assertSame(
'12345', $this->request->getCardReference());
90 $this->assertSame($this->request, $this->request->setAmount(
'2.00'));
91 $this->assertSame(
'2.00', $this->request->getAmount());
96 $this->assertSame($this->request, $this->request->setAmount(2.0));
97 $this->assertSame(
'2.00', $this->request->getAmount());
102 $this->assertSame($this->request, $this->request->setAmount(
null));
103 $this->assertSame(
null, $this->request->getAmount());
108 $this->assertSame($this->request, $this->request->setAmount(0.0));
109 $this->assertSame(
'0.00', $this->request->getAmount());
114 $this->assertSame($this->request, $this->request->setAmount(
'0.000000'));
115 $this->assertSame(
'0.00', $this->request->getAmount());
124 $this->changeProtectedProperty(
'zeroAmountAllowed',
false);
125 $this->request->setAmount(
'0.00');
126 $this->request->getAmount();
133 ini_set(
'precision', 6);
134 $this->assertSame($this->request, $this->request->setAmount(
'67.10'));
135 $this->assertSame(
'67.10', $this->request->getAmount());
139 ini_set(
'precision', 17);
140 $this->assertSame(
'67.10', $this->request->getAmount());
142 $this->assertSame($this->request, $this->request->setAmount(
'67.01'));
143 $this->assertSame(
'67.01', $this->request->getAmount());
145 $this->assertSame($this->request, $this->request->setAmount(
'0.10'));
146 $this->assertSame(
'0.10', $this->request->getAmount());
148 $this->assertSame($this->request, $this->request->setAmount(
'0.01'));
149 $this->assertSame(
'0.01', $this->request->getAmount());
160 $this->assertSame($this->request, $this->request->setAmount(
'123.005'));
161 $this->assertSame(
'123.005', $this->request->getAmount());
166 $this->assertSame($this->request, $this->request->setCurrency(
'JPY'));
167 $this->assertSame($this->request, $this->request->setAmount(
'1366'));
168 $this->assertSame(
'1366', $this->request->getAmount());
177 $this->assertSame($this->request, $this->request->setAmount(
'136.5'));
178 $this->assertSame($this->request, $this->request->setCurrency(
'JPY'));
179 $this->request->getAmount();
188 $this->assertSame($this->request, $this->request->setAmount(10));
189 $this->request->getAmount();
199 $this->assertSame($this->request, $this->request->setAmount(
'10'));
200 $this->request->getAmount();
205 $this->assertSame($this->request, $this->request->setAmount(
'13.66'));
206 $this->assertSame(1366, $this->request->getAmountInteger());
211 $this->assertSame($this->request, $this->request->setCurrency(
'JPY'));
212 $this->assertSame($this->request, $this->request->setAmount(
'1366'));
213 $this->assertSame(1366, $this->request->getAmountInteger());
221 $this->assertSame($this->request, $this->request->setAmount(
'1,234.00'));
222 $this->request->getAmount();
230 $this->assertSame($this->request, $this->request->setAmount(
'1.234.00'));
231 $this->request->getAmount();
239 $this->assertSame($this->request, $this->request->setAmount(
true));
240 $this->request->getAmount();
248 $this->assertSame($this->request, $this->request->setAmount(
'-123.00'));
249 $this->request->getAmount();
257 $this->assertSame($this->request, $this->request->setAmount(-123.00));
258 $this->request->getAmount();
263 $this->assertSame($this->request, $this->request->setCurrency(
'USD'));
264 $this->assertSame(
'USD', $this->request->getCurrency());
269 $this->assertSame($this->request, $this->request->setCurrency(
'usd'));
270 $this->assertSame(
'USD', $this->request->getCurrency());
275 $this->assertSame($this->request, $this->request->setCurrency(
null));
276 $this->assertNull($this->request->getCurrency());
281 $this->assertSame($this->request, $this->request->setCurrency(
'USD'));
282 $this->assertSame(
'840', $this->request->getCurrencyNumeric());
287 $this->assertSame($this->request, $this->request->setCurrency(
'JPY'));
288 $this->assertSame(0, $this->request->getCurrencyDecimalPlaces());
293 $this->assertSame(
'1234.00', $this->request->formatCurrency(1234));
298 $this->request->setCurrency(
'JPY');
299 $this->assertSame(
'1234', $this->request->formatCurrency(1234));
304 $this->assertSame($this->request, $this->request->setDescription(
'Cool product'));
305 $this->assertSame(
'Cool product', $this->request->getDescription());
310 $this->assertSame($this->request, $this->request->setTransactionId(87));
311 $this->assertSame(87, $this->request->getTransactionId());
316 $this->assertSame($this->request, $this->request->setTransactionReference(
'xyz'));
317 $this->assertSame(
'xyz', $this->request->getTransactionReference());
322 $this->assertSame($this->request, $this->request->setItems(array(
323 array(
'name' =>
'Floppy Disk'),
324 array(
'name' =>
'CD-ROM'),
327 $itemBag = $this->request->getItems();
328 $this->assertInstanceOf(
'\Omnipay\Common\ItemBag', $itemBag);
330 $items = $itemBag->all();
331 $this->assertSame(
'Floppy Disk', $items[0]->getName());
332 $this->assertSame(
'CD-ROM', $items[1]->getName());
338 $itemBag->
add(array(
'name' =>
'Floppy Disk'));
340 $this->assertSame($this->request, $this->request->setItems($itemBag));
341 $this->assertSame($itemBag, $this->request->getItems());
346 $this->assertSame($this->request, $this->request->setClientIp(
'127.0.0.1'));
347 $this->assertSame(
'127.0.0.1', $this->request->getClientIp());
352 $this->assertSame($this->request, $this->request->setReturnUrl(
'https://www.example.com/return'));
353 $this->assertSame(
'https://www.example.com/return', $this->request->getReturnUrl());
358 $this->assertSame($this->request, $this->request->setCancelUrl(
'https://www.example.com/cancel'));
359 $this->assertSame(
'https://www.example.com/cancel', $this->request->getCancelUrl());
364 $this->assertSame($this->request, $this->request->setNotifyUrl(
'https://www.example.com/notify'));
365 $this->assertSame(
'https://www.example.com/notify', $this->request->getNotifyUrl());
370 $this->assertSame($this->request, $this->request->setIssuer(
'some-bank'));
371 $this->assertSame(
'some-bank', $this->request->getIssuer());
376 $this->assertSame($this->request, $this->request->setPaymentMethod(
'ideal'));
377 $this->assertSame(
'ideal', $this->request->getPaymentMethod());
382 $params = array(
'testMode' =>
'success');
384 $this->request->initialize($params);
386 $this->assertSame($this->request->getTestMode(),
'success');
391 $this->request->setTestMode(
true);
392 $this->request->setToken(
'asdf');
398 $this->assertEquals($expected, $this->request->getParameters());
408 $this->request->send();
410 $this->request->setCurrency(
'PHP');
415 $this->request->setTestMode(
true);
416 $this->request->setToken(
'asdf');
418 $this->assertNull($this->request->validate(
'testMode',
'token'));
426 $this->request->setTestMode(
true);
428 $this->request->validate(
'testMode',
'token');
433 $this->assertNull($this->request->getCurrencyNumeric());
438 $response = m::mock(
'\Omnipay\Common\Message\ResponseInterface');
439 $data = array(
'request data');
441 $this->request->shouldReceive(
'getData')->once()->andReturn($data);
442 $this->request->shouldReceive(
'sendData')->once()->with($data)->andReturn($response);
444 $this->assertSame($response, $this->request->send());
454 $this->request->getResponse();
460 $this->request->send();
462 $response = $this->request->getResponse();
463 $this->assertInstanceOf(
'\Omnipay\Common\Message\ResponseInterface', $response);
473 $this->response = m::mock(
'\Omnipay\Common\Message\AbstractResponse');