/** * @test */ public function shouldPassFirstAndCurrentModelsToTemplate() { $firstModel = new \stdClass(); $currentModel = new \stdClass(); $httpRequest = new Request(); $formView = new FormView(); $creditCard = new CreditCard(); $formMock = $this->createFormMock(); $formMock->expects($this->once())->method('handleRequest')->with($this->identicalTo($httpRequest)); $formMock->expects($this->once())->method('isSubmitted')->will($this->returnValue(true)); $formMock->expects($this->once())->method('createView')->will($this->returnValue($formView)); $formMock->expects($this->once())->method('isValid')->will($this->returnValue(false)); $formMock->expects($this->once())->method('getData')->will($this->returnValue($creditCard)); $formFactoryMock = $this->createFormFactoryMock(); $formFactoryMock->expects($this->once())->method('create')->with('payum_credit_card')->will($this->returnValue($formMock)); $gatewayMock = $this->createGatewayMock(); $gatewayMock->expects($this->once())->method('execute')->with($this->isInstanceOf('Payum\\Core\\Request\\RenderTemplate'))->will($this->returnCallback(function (RenderTemplate $request) use($formView, $firstModel, $currentModel) { $this->assertEquals('theTemplateName', $request->getTemplateName()); $this->assertEquals(array('form' => $formView, 'model' => $currentModel, 'firstModel' => $firstModel, 'actionUrl' => null), $request->getParameters()); $request->setResult('theObtainCreditCardPageWithForm'); })); $action = new ObtainCreditCardAction($formFactoryMock, 'theTemplateName'); $action->setRequest($httpRequest); $action->setGateway($gatewayMock); try { $action->execute(new ObtainCreditCard($firstModel, $currentModel)); } catch (HttpResponse $e) { return; } $this->fail('Reply exception was expected to be thrown'); }
/** * @test */ public function shouldRenderFormWhenSubmitedAndValid() { $httpRequest = new Request(); $creditCard = new CreditCard(); $formMock = $this->createFormMock(); $formMock->expects($this->once())->method('handleRequest')->with($this->identicalTo($httpRequest)); $formMock->expects($this->once())->method('isSubmitted')->will($this->returnValue(true)); $formMock->expects($this->once())->method('isValid')->will($this->returnValue(true)); $formMock->expects($this->once())->method('getData')->will($this->returnValue($creditCard)); $formFactoryMock = $this->createFormFactoryMock(); $formFactoryMock->expects($this->once())->method('create')->with('payum_credit_card')->will($this->returnValue($formMock)); $action = new ObtainCreditCardAction($formFactoryMock, 'aTemplate'); $action->setRequest($httpRequest); $obtainCreditCard = new ObtainCreditCard(); $action->execute($obtainCreditCard); $this->assertSame($creditCard, $obtainCreditCard->obtain()); }
/** * @param ArrayObject $config * * @return ObtainCreditCardAction */ public function build(ArrayObject $config) { $action = new ObtainCreditCardAction($this->formFactory, $config['payum.template.obtain_credit_card']); $action->setRequestStack($this->requestStack); return $action; }