/**
  * {@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);
 }