/** * @test */ public function shouldCaptureWithObtainedCreditCardWhenTokenReturned() { $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\ObtainCreditCard'))->will($this->returnCallback(function (ObtainCreditCard $request) { $card = new CreditCard(); $card->setToken('theCreditCardToken'); $request->set($card); })); $apiMock = $this->createApiMock(); $apiMock->expects($this->once())->method('payment')->will($this->returnValue(array('FOO' => 'FOOVAL', 'BAR' => 'BARVAL'))); $action = new CaptureAction(); $action->setApi($apiMock); $action->setGateway($gatewayMock); $request = new Capture(array('AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1')); //guard $this->assertTrue($action->supports($request)); $action->execute($request); $model = iterator_to_array($request->getModel()); $this->assertEquals(['AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1', 'ALIAS' => 'theCreditCardToken', 'FOO' => 'FOOVAL', 'BAR' => 'BARVAL'], $model); }
/** * @test */ public function shouldCaptureWithObtainedCreditCard() { $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\ObtainCreditCard'))->will($this->returnCallback(function (ObtainCreditCard $request) { $card = new CreditCard(); $card->setNumber('1234567812345678'); $card->setExpireAt(new \DateTime('2014-10-01')); $card->setHolder('John Doe'); $card->setSecurityCode('123'); $request->set($card); })); $apiMock = $this->createApiMock(); $apiMock->expects($this->once())->method('payment')->will($this->returnValue(array('FOO' => 'FOOVAL', 'BAR' => 'BARVAL'))); $action = new CaptureAction(); $action->setApi($apiMock); $action->setGateway($gatewayMock); $request = new Capture(array('AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1')); //guard $this->assertTrue($action->supports($request)); $action->execute($request); $model = iterator_to_array($request->getModel()); $this->assertArrayHasKey('AMOUNT', $model); $this->assertEquals(10, $model['AMOUNT']); $this->assertArrayHasKey('FOO', $model); $this->assertEquals('FOOVAL', $model['FOO']); }