/** * @param object $object * @param SerializationContext $context * @return Embedded[] */ public function create($object, SerializationContext $context) { $embeddeds = array(); foreach ($this->relationsRepository->getRelations($object) as $relation) { if ($this->exclusionManager->shouldSkipEmbedded($object, $relation, $context)) { continue; } $rel = $this->expressionEvaluator->evaluate($relation->getName(), $object); $data = $this->expressionEvaluator->evaluate($relation->getEmbedded()->getContent(), $object); $xmlElementName = $this->expressionEvaluator->evaluate($relation->getEmbedded()->getXmlElementName(), $object); $embeddeds[] = new Embedded($rel, $data, $xmlElementName); } return $embeddeds; }
/** * @dataProvider getTestSkipExcludeIfData */ public function testSkipExcludeIf($exclude) { $object = (object) array('name' => 'adrien'); $exclusion = new Exclusion(null, null, null, null, 'expr(stuff)'); $relation = new Relation('foo', 'foo', 'foo', array(), $exclusion); $context = SerializationContext::create(); $expressionEvaluatorProphecy = $this->prophesizeExpressionEvaluator(); $expressionEvaluatorProphecy->evaluate('expr(stuff)', $object)->willReturn($exclude); $exclusionManager = new ExclusionManager($expressionEvaluatorProphecy->reveal()); $this->boolean($exclusionManager->shouldSkipLink($object, $relation, $context))->isEqualTo($exclude)->boolean($exclusionManager->shouldSkipEmbedded($object, $relation, $context))->isEqualTo($exclude); }