/** * {@inheritdoc} */ public function transform($json) { if (!$this->validatorChain->isValid($json)) { throw new TransformationFailedException('None of the chained validators were able to validate the data!'); } /** @var PackageInterface $package */ $package = $this->serializer->deserialize($json, Package::class, 'json'); /** @var ItemInterface $item */ foreach ($package->getItems()->toArray() as $item) { $item->setPackage($package); } return $package; }
public function it_should_transform_json_to_package(PackageInterface $package, SerializerInterface $serializer, ValidatorInterface $validator) { $json = '{ "language": "en", "slugline": "slugline", "headline": "headline" }'; $package->getHeadline()->willReturn('headline'); $package->getSlugline()->willReturn('slugline'); $package->getLanguage()->willReturn('en'); $items = new ArrayCollection(); $package->getItems()->willReturn($items); $validator->isValid($json)->willReturn(true); $serializer->deserialize($json, Argument::exact(Package::class), Argument::exact('json'))->willReturn($package); $this->transform($json)->shouldReturn($package); }