public function testCanCreateInjectionMethodsAndPopulateFromFluentInterface() { $builder = new BuilderDefinition(); $foo = $builder->createClass('Foo'); $foo->setName('Foo'); $foo->createInjectionMethod('setBar')->addParameter('bar', 'Bar'); $foo->createInjectionMethod('setConfig')->addParameter('config', null); $this->assertTrue($builder->hasClass('Foo')); $this->assertTrue($builder->hasInjectionMethod('Foo', 'setBar')); $this->assertTrue($builder->hasInjectionMethod('Foo', 'setConfig')); $this->assertEquals(array('bar' => array('Bar', false, true)), $builder->getInjectionMethodParameters('Foo', 'setBar')); $this->assertEquals(array('config' => array(null, false, null)), $builder->getInjectionMethodParameters('Foo', 'setConfig')); }
public function testBuilderCanBuildClassWithMethods() { $class = new Builder\PhpClass(); $class->setName('Foo'); $class->addSuperType('Parent'); $injectionMethod = new Builder\InjectionMethod(); $injectionMethod->setName('injectBar'); $injectionMethod->addParameter('bar', 'Bar'); $class->addInjectionMethod($injectionMethod); $definition = new BuilderDefinition(); $definition->addClass($class); $this->assertTrue($definition->hasClass('Foo')); $this->assertEquals('__construct', $definition->getInstantiator('Foo')); $this->assertContains('Parent', $definition->getClassSupertypes('Foo')); $this->assertTrue($definition->hasInjectionMethods('Foo')); $this->assertTrue($definition->hasInjectionMethod('Foo', 'injectBar')); $this->assertContains('injectBar', $definition->getInjectionMethods('Foo')); $this->assertEquals(array('bar' => 'Bar'), $definition->getInjectionMethodParameters('Foo', 'injectBar')); }