/** * @test */ public function shouldPassFirstAndCurrentModelsWithObtainCreditCardSubRequest() { $firstModel = new \stdClass(); $currentModel = new \ArrayObject(array('AMOUNT' => 10, 'CLIENTUSERAGENT' => 'anAgent', 'CLIENTIP' => '127.0.0.1')); $apiMock = $this->createApiMock(); $apiMock->expects($this->once())->method('payment')->will($this->returnValue(array('FOO' => 'FOOVAL', 'BAR' => 'BARVAL'))); $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\ObtainCreditCard'))->will($this->returnCallback(function (ObtainCreditCard $request) use($firstModel, $currentModel) { $this->assertSame($firstModel, $request->getFirstModel()); $this->assertSame($currentModel, $request->getModel()); $card = new CreditCard(); $card->setExpireAt(new \DateTime('2014-10-01')); $request->set($card); })); $action = new CaptureAction(); $action->setApi($apiMock); $action->setGateway($gatewayMock); $capture = new Capture($firstModel); $capture->setModel($currentModel); $action->execute($capture); }
/** * @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']); }