/** * convert data into transformed array * * @param mixed $data * @param Item|Collection $resource * @param array|string $embeds * @return array */ public function convert($data, Item $resource, $embeds = []) { if (is_string($embeds)) { $embeds = $this->embedManager->getEmbedsFromParam($embeds); } $embeds = $this->embedManager->filter($this->availableEmbeds, $embeds); return $resource->transform($data, $embeds); }
public function testGetEmbedsFromParam() { $embeds = $this->embedManager->getEmbedsFromParam(''); $this->assertEquals([], $embeds); $embeds = $this->embedManager->getEmbedsFromParam('comments'); $this->assertEquals(1, count($embeds)); $this->assertEquals('comments', $embeds[0]->name); $this->assertEquals([], $embeds[0]->children); $embeds = $this->embedManager->getEmbedsFromParam('games.teams.players'); $this->assertEquals(1, count($embeds)); $this->assertEquals('games', $embeds[0]->name); $this->assertEquals(1, count($embeds[0]->children)); $this->assertEquals('teams', $embeds[0]->children[0]->name); $this->assertEquals(1, count($embeds[0]->children[0]->children)); $this->assertEquals('players', $embeds[0]->children[0]->children[0]->name); $embeds = $this->embedManager->getEmbedsFromParam('comments.users,likes.users'); $this->assertEquals(2, count($embeds)); $this->assertEquals('comments', $embeds[0]->name); $this->assertEquals(1, count($embeds[0]->children)); $this->assertEquals('users', $embeds[0]->children[0]->name); $this->assertEquals('likes', $embeds[1]->name); $this->assertEquals(1, count($embeds[1]->children)); $this->assertEquals('users', $embeds[1]->children[0]->name); }