diff --git a/src/Serializer/FiasSerializer.php b/src/Serializer/FiasSerializer.php index 3103231..49c85a9 100644 --- a/src/Serializer/FiasSerializer.php +++ b/src/Serializer/FiasSerializer.php @@ -14,13 +14,10 @@ use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor; use Symfony\Component\Serializer\Encoder\DecoderInterface; use Symfony\Component\Serializer\Encoder\EncoderInterface; -use Symfony\Component\Serializer\Encoder\JsonEncoder; -use Symfony\Component\Serializer\Encoder\XmlEncoder; use Symfony\Component\Serializer\Normalizer\DateTimeNormalizer; use Symfony\Component\Serializer\Normalizer\DenormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; -use Symfony\Component\Serializer\Serializer; use Symfony\Component\Serializer\SerializerInterface; /** @@ -28,7 +25,7 @@ */ final class FiasSerializer implements SerializerInterface { - private readonly Serializer $nestedSerializer; + private readonly SerializerInterface $nestedSerializer; /** * @param array|null $normalizers @@ -57,18 +54,7 @@ public function __construct(?array $normalizers = null, ?array $encoders = null) ]; } - if ($encoders === null) { - $encoders = [ - new XmlEncoder( - [ - XmlEncoder::TYPE_CAST_ATTRIBUTES => false, - ] - ), - new JsonEncoder(), - ]; - } - - $this->nestedSerializer = new Serializer($normalizers, $encoders); + $this->nestedSerializer = new \Liquetsoft\Fias\Component\Serializer\FiasSerializer($normalizers, $encoders); } /** diff --git a/tests/MockModel/FiasSerializerMock.php b/tests/MockModel/FiasSerializerMock.php index d70a74f..c609fb0 100644 --- a/tests/MockModel/FiasSerializerMock.php +++ b/tests/MockModel/FiasSerializerMock.php @@ -7,7 +7,7 @@ use Illuminate\Database\Eloquent\Model; /** - * Мок для проверки десериалищации. + * Мок для проверки десериализации. */ class FiasSerializerMock extends Model { diff --git a/tests/MockModel/FiasSerializerMockJson.php b/tests/MockModel/FiasSerializerMockJson.php new file mode 100644 index 0000000..1b48576 --- /dev/null +++ b/tests/MockModel/FiasSerializerMockJson.php @@ -0,0 +1,16 @@ +assertNull($model->nullableCast); } + /** + * Проверяет, что json верно конвертируется в модель. + */ + public function testDeserializeJson(): void + { + $data = json_encode( + [ + 'id' => '10', + 'name' => 'test', + 'floatNum' => '10.1', + 'date' => '10.10.2019 10:10:10', + ] + ); + + $type = FiasSerializerMockJson::class; + + $serializer = new FiasSerializer(); + $model = $serializer->deserialize($data, $type, 'json'); + + $this->assertInstanceOf($type, $model); + $this->assertSame(10, $model->id); + $this->assertSame('test', $model->name); + $this->assertSame(10.1, $model->floatNum); + $this->assertSame('2019-10-10 10:10', $model->date?->format('Y-m-d H:i')); + } + /** * Проверяет, что xml верно конвертируется в указанный объект. */ @@ -125,19 +152,4 @@ public function testDeserializeWrongObjectToPopulate(): void ] ); } - - /** - * Проверяет, что пустая строка вернется как пустая строка, а не null. - */ - public function testDeserializeEmptyString(): void - { - $data = ''; - $type = FiasSerializerMock::class; - - $serializer = new FiasSerializer(); - $model = $serializer->deserialize($data, $type, 'xml'); - - $this->assertInstanceOf(FiasSerializerMock::class, $model); - $this->assertSame('', $model->getAttribute('name')); - } }