function it_should_return_recommendations(GuzzleClient $client, ResponseParser $parser, RecommendationFactory $factory, Command $command) { $parameters = ['id' => '1', 'limit' => 30]; $client->getCommand('recommendations', $parameters)->willReturn($command); $results = [['id' => '1', 'uuid' => 'abc', ['score' => ['totalScore' => 0, 'scoreParts' => []]]]]; $client->execute($command)->willReturn($results); $parser->parse($results)->willReturn($results); $factory->getRecommendation(['id' => '1', 'uuid' => 'abc', ['score' => ['totalScore' => 0, 'scoreParts' => []]]])->willReturn(new Recommendation('1', 'abc', new Score())); $recommendationResult = $this->getRecommendations($parameters); $recommendationResult->shouldBeArray(); }
/** * @param array $parameters * @return \GraphAwareReco\Domain\Model\Recommendation[] * @throws ServerErrorException * @throws UnFoundItemException */ public function getRecommendations(array $parameters) { $command = $this->client->getCommand('recommendations', $parameters); try { $result = $this->client->execute($command); } catch (CommandClientException $ex) { if ($ex->getResponse()->getStatusCode() == 404) { throw new UnFoundItemException($parameters, $ex->getResponse()->getBody()); } elseif ($ex->getResponse()->getStatusCode() == 500) { throw new ServerErrorException($parameters, $ex->getResponse()->getBody()); } else { throw new ServerErrorException($parameters, $ex->getResponse()->getBody()); } } $recommendationResults = $this->parser->parse($result); $recommendations = []; foreach ($recommendationResults as $recommendation) { $recommendations[] = $this->factory->getRecommendation($recommendation); } return $recommendations; }