public function testSearch() { $searchOptions = (new SearchOptions())->withQuery(new Query('Vindicator'))->withSorting(SortField::MINIMUM_LEVEL()); $expectedQueryString = 'query=Vindicator&sortorder=minimum_level_asc'; $expectedUri = (new Uri('items'))->withQuery($expectedQueryString); $request = new Request('GET', $expectedUri); $response = new Response(200, [], json_encode($this->getSingleItemResultSetNormalized())); $this->requestFactory->expects($this->once())->method('create')->with('GET', $expectedUri)->willReturn($request); $this->client->expects($this->once())->method('sendRequest')->with($request)->willReturn($response); $resultSet = $this->service->search($searchOptions); $this->assertEquals($this->getSingleItemResultSet(), $resultSet); }
/** * @return array */ public function searchOptionsDataProvider() { return [[(new SearchOptions())->withPage(new Integer(2)), ['page' => 2]], [(new SearchOptions())->withLimit(new Integer(50)), ['perpage' => 50]], [(new SearchOptions())->withQuery(new Query('Vindicator')), ['query' => 'Vindicator']], [(new SearchOptions())->withSorting(SortField::VALUE(), SortOrder::DESC()), ['sortorder' => 'value_desc']], [(new SearchOptions())->withDetails(), ['moredetailed' => true]], [(new SearchOptions())->withPage(new Integer(2))->withLimit(new Integer(50))->withQuery(new Query('Vindicator'))->withSorting(SortField::DISPLAY_NAME(), SortOrder::DESC())->withDetails(), ['page' => 2, 'perpage' => 50, 'query' => 'Vindicator', 'sortorder' => 'display_name_desc', 'moredetailed' => true]]]; }
$app->get('/items', function (Request $request, Application $app) { $searchOptions = (new SearchOptions())->withLimit(new Integer(10)); $errors = array(); foreach ($request->query->all() as $filter => $value) { switch ($filter) { case 'query': if (empty($value)) { $errors[] = 'Please enter (part of) an item name.'; } else { $query = new Query($value); $searchOptions = $searchOptions->withQuery($query); } break; case 'sortField': try { $sortField = SortField::fromNative($value); } catch (\InvalidArgumentException $e) { $errors[] = 'Please select a valid sort field.'; } break; case 'sortOrder': try { $sortOrder = SortOrder::fromNative($value); } catch (\InvalidArgumentException $e) { $errors[] = 'Please select a valid sort order.'; } break; case 'limit': $value = (int) $value; if ($value < 1 || $value > 30) { $errors[] = 'Please select an amount of items between 1 and 30.';