public function create(ClassType $classType, array $parameters) { $source = $this->sourceFactory->create($classType); //Add constructor method. $source->addConstructorMethod($this->definitionFactory->createConstructorMethod($parameters)); //Adds Broadway ReadModelInterface. $source->addInterface(InterfaceType::create('Broadway\\ReadModel\\ReadModelInterface')); //Adds Broadway SerializableInterface. $source->addInterface(InterfaceType::create('Broadway\\Serializer\\SerializableInterface')); //Adds serialize() method. $source->addMethod($this->definitionFactory->createSerializeMethod($source)); //Adds static deserialize() method. $source->addMethod($this->definitionFactory->createDeserializeMethod($source)); $source->addMethod($this->definitionFactory->createReadModelIdGetterMethod($parameters[0])); return $source; }
public function it_will_create_source_from_given_class_type_and_constructor_params(ClassSourceFactory $sourceFactory, DefinitionFactory $definitionFactory, ClassType $classType, ImprovedClassSource $classSource, Parameter $parameter1, Parameter $parameter2, ConstructorMethod $constructorMethod, SerializeMethod $serializeMethod, DeserializeMethod $deserializeMethod) { $sourceFactory->create($classType)->willReturn($classSource); $definitionFactory->createConstructorMethod([$parameter1, $parameter2])->shouldBeCalled()->willReturn($constructorMethod); $definitionFactory->createSerializeMethod($classSource)->shouldBeCalled()->willReturn($serializeMethod); $definitionFactory->createDeserializeMethod($classSource)->shouldBeCalled()->willReturn($deserializeMethod); $this->create($classType, [$parameter1, $parameter2])->shouldReturn($classSource); }