public function build() { $serializerDeserializer = new ChainSerializerDeserializer(); foreach ($this->serializers as $serializer) { $serializerDeserializer->addSerializer($serializer); } foreach ($this->deserializers as $deserializer) { $serializerDeserializer->addDeserializer($deserializer); } return $serializerDeserializer; }
/** * @expectedException \Giftcards\Encryption\CipherText\Serializer\FailedToDeserializeException */ public function testDeserializeWithNoSerializerAbleToDeserialize() { $string = $this->getFaker()->word; $this->deserializer1->shouldReceive('canDeserialize')->once()->with($string)->andReturn(false); $this->deserializer2->shouldReceive('canDeserialize')->once()->with($string)->andReturn(false)->getMock(); $this->deserializer3->shouldReceive('canDeserialize')->once()->with($string)->andReturn(false)->getMock(); $this->chain->deserialize($string); }
public function testBuild() { $serializer1 = \Mockery::mock('Giftcards\\Encryption\\CipherText\\Serializer\\SerializerInterface'); $deserializer1 = \Mockery::mock('Giftcards\\Encryption\\CipherText\\Serializer\\DeserializerInterface'); $serializer2 = \Mockery::mock('Giftcards\\Encryption\\CipherText\\Serializer\\SerializerInterface'); $deserializer2 = \Mockery::mock('Giftcards\\Encryption\\CipherText\\Serializer\\DeserializerInterface'); $serializerFactoryName = $this->getFaker()->unique()->word; $serializerFactoryOptions = array($this->getFaker()->unique()->word => $this->getFaker()->unique()->word, $this->getFaker()->unique()->word => $this->getFaker()->unique()->word, $this->getFaker()->unique()->word => $this->getFaker()->unique()->word); $this->serializerFactory->shouldReceive('create')->once()->with($serializerFactoryName, $serializerFactoryOptions)->andReturn($serializer2); $deserializerFactoryName = $this->getFaker()->unique()->word; $deserializerFactoryOptions = array($this->getFaker()->unique()->word => $this->getFaker()->unique()->word, $this->getFaker()->unique()->word => $this->getFaker()->unique()->word, $this->getFaker()->unique()->word => $this->getFaker()->unique()->word); $this->deserializerFactory->shouldReceive('create')->once()->with($deserializerFactoryName, $deserializerFactoryOptions)->andReturn($deserializer2); $this->builder->addSerializer($serializer1)->addDeserializer($deserializer1)->addSerializer($serializerFactoryName, $serializerFactoryOptions)->addDeserializer($deserializerFactoryName, $deserializerFactoryOptions); $serializerDeserializer = new ChainSerializerDeserializer(); $serializerDeserializer->addSerializer($serializer1)->addDeserializer($deserializer1)->addSerializer($serializer2)->addDeserializer($deserializer2); $this->assertEquals($serializerDeserializer, $this->builder->build()); }
protected function sortDeserializers() { $container = $this->container; $this->deserializers = array_map(function (array $serializers) use($container) { return array_map(function ($serializer) use($container) { if (!$serializer instanceof DeserializerInterface) { $serializer = $container->get($serializer); } return $serializer; }, $serializers); }, $this->deserializers); parent::sortDeserializers(); }