/** * @test */ public function shouldAddConfigFieldsIfPaymentConfigHasFactorySet() { $this->fooPaymentFactoryMock ->expects($this->once()) ->method('createConfig') ->with(array()) ->willReturn(array( 'payum.default_options' => array( 'username' => 'defaultName', 'password' => 'defaultPass', 'sandbox' => true, ), 'payum.required_options' => array(), )) ; $paymentConfig = new PaymentConfig(); $paymentConfig->setFactoryName('foo'); $paymentConfig->setPaymentName('theName'); $paymentConfig->setConfig(array( 'username' => 'modelName', 'password' => 'modelPass', 'sandbox' => false, )); $form = $this->formFactory->create('payum_payment_config', $paymentConfig); $this->assertTrue($form->has('config')); $this->assertTrue($form->get('config')->has('username')); $this->assertEquals('modelName', $form->get('config')->get('username')->getData()); $this->assertTrue($form->get('config')->has('password')); $this->assertEquals('modelPass', $form->get('config')->get('password')->getData()); $this->assertTrue($form->get('config')->has('sandbox')); $this->assertEquals(false, $form->get('config')->get('sandbox')->getData()); }
/** * @test * * @dataProvider providePayments */ public function shouldLoadExtensionWithPayment($config, PaymentFactoryInterface $paymentFactory) { $config = array( 'security' => array( 'token_storage' => array( 'Payum\Core\Model\Token' => array( 'filesystem' => array( 'storage_dir' => sys_get_temp_dir(), 'id_property' => 'hash' ) ) ) ), 'payments' => array( 'a_payment' => array( $paymentFactory->getName() => $config, ) ) ); $configs = array($config); $container = new ContainerBuilder(); $container->setParameter('kernel.debug', false); $extension = new PayumExtension; $extension->addPaymentFactory($paymentFactory); $extension->addStorageFactory(new FilesystemStorageFactory); $extension->load($configs, $container); $this->assertTrue($container->hasDefinition('payum.'.$paymentFactory->getName().'.factory')); $this->assertTrue($container->hasDefinition('payum.'.$paymentFactory->getName().'.a_payment.payment')); $this->assertEquals( 'payum.'.$paymentFactory->getName().'.factory', $container->getDefinition('payum.'.$paymentFactory->getName().'.a_payment.payment')->getFactoryService() ); $this->assertEquals('create', $container->getDefinition('payum.'.$paymentFactory->getName().'.a_payment.payment')->getFactoryMethod()); }
/** * @param Factory\Payment\PaymentFactoryInterface $factory * * @throws \Payum\Core\Exception\InvalidArgumentException */ public function addPaymentFactory(PaymentFactoryInterface $factory) { $factoryName = $factory->getName(); if (empty($factoryName)) { throw new InvalidArgumentException(sprintf('The payment factory %s has empty name', get_class($factory))); } if (isset($this->paymentFactories[$factoryName])) { throw new InvalidArgumentException(sprintf('The payment factory with such name %s already registered', $factoryName)); } $this->paymentFactories[$factory->getName()] = $factory; }