public function testSerializeWithTypeCollectionIdentifiedObject() { $cityPalaiseau = new City(); $cityPalaiseau->setName('Palaiseau'); $cityParis = new City(); $cityParis->setName('Paris'); $country = new Country(); $country->setName('France'); $country->citiesAre([$cityPalaiseau, $cityParis]); $configuration = new Configuration(); $configuration->identifierAttribute('type'); $configurationObject = new Configuration\Object(new ClassName(Country::class)); $configurationObject->attributeUseMethod('name', 'setName', 'getName')->attributeUseCollectionIdentifiedObject('cities', 'citiesAre', 'getCities')->registerToConfigurationWithIdentifier($configuration, 'country'); $configurationObject = new Configuration\Object(new ClassName(City::class)); $configurationObject->attributeUseMethod('name', 'setName', 'getName')->registerToConfigurationWithIdentifier($configuration, 'city'); $this->given($this->newTestedInstance($configuration))->string($this->testedInstance->serialize($country))->isIdenticalTo('{"type":"country","name":"France","cities":[{"type":"city","name":"Palaiseau"},{"type":"city","name":"Paris"}]}'); }
public function testDeserializeForIdentifiedObjectShouldThrowExceptionWhenJsonDontHaveIdentifier() { $configuration = new Configuration(); $configuration->identifierAttribute('type'); $configurationObject = new Configuration\Object(new ClassName(City::class)); $configurationObject->attributeUseMethod('name', 'setName', 'getName')->registerToConfigurationWithIdentifier($configuration, 'city'); $this->given($this->newTestedInstance($configuration))->exception(function () { $this->testedInstance->deserialize('{"name": "Palaiseau"}'); })->isInstanceOf(MissingIdentifierAttribute::class); }