/** * {@inheritDoc} */ public function createConfig(array $config = array()) { $config = ArrayObject::ensureArrayObject($config); $config->defaults(parent::createConfig((array) $config)); $prependActions = array(); foreach ($this->actionsTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.action.$name"] = $this->container->get($id); } if ( isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory'] ) { $config["payum.action.$name"] = $this->container->get($id); } if ( isset($attributes['payment']) && isset($config['payum.payment_name']) && $config['payum.payment_name'] === $attributes['payment'] ) { $config["payum.action.$name"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependActions[] = "payum.action.$name"; } } } $config['payum.prepend_actions'] = $prependActions; $prependExtensions = array(); foreach ($this->extensionsTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.extension.$name"] = $this->container->get($id); } if ( isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory'] ) { $config["payum.extension.$name"] = $this->container->get($id); } if ( isset($attributes['payment']) && isset($config['payum.payment_name']) && $config['payum.payment_name'] === $attributes['payment'] ) { $config["payum.extension.$name"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependExtensions[] = "payum.extension.$name"; } } } $config['payum.prepend_extensions'] = $prependExtensions; $prependApis = array(); foreach ($this->apisTags as $id => $tagAttributes) { foreach ($tagAttributes as $attributes) { $name = isset($attributes['alias']) ? $attributes['alias'] : $id; if (isset($attributes['all']) && $attributes['all']) { $config["payum.api.$name"] = $this->container->get($id); } if ( isset($attributes['factory']) && isset($config['payum.factory_name']) && $config['payum.factory_name'] === $attributes['factory'] ) { $config["payum.api.$name"] = $this->container->get($id); } if ( isset($attributes['payment']) && isset($config['payum.payment_name']) && $config['payum.payment_name'] === $attributes['payment'] ) { $config["payum.api.$name"] = $this->container->get($id); } if (isset($attributes['prepend'])) { $prependApis[] = "payum.api.$name"; } } } $config['payum.prepend_apis'] = $prependApis; return (array) $config; }
/** * @test */ public function shouldAddDefaultConfigPassedInConstructorWhileCreatingPaymentConfig() { $factory = new PaymentFactory(array( 'foo' => 'fooVal', 'bar' => 'barVal', )); $config = $factory->createConfig(); $this->assertInternalType('array', $config); $this->assertArrayHasKey('foo', $config); $this->assertEquals('fooVal', $config['foo']); $this->assertArrayHasKey('bar', $config); $this->assertEquals('barVal', $config['bar']); }