def factory(self, response=None, **kwargs): ''' Build a fake SearchResult. ''' response = response or response_factory() query = search.search_for(FakeSearch, **kwargs) return search.SearchResult(query, response)
def test_no_pagination_in_query(self): '''Search results should be paginated even if not asked''' query = search.SearchQuery(FakeSearch) result = search.SearchResult(query, {}) self.assertEqual(result.page, 1), self.assertEqual(result.page_size, search.DEFAULT_PAGE_SIZE) self.assertEqual(result.pages, 0)
def test_pagination_empty(self): '''Search results should be paginated even if empty''' query = search.SearchQuery(FakeSearch, page=2, page_size=3) result = search.SearchResult(query, {}) self.assertEqual(result.page, 1), self.assertEqual(result.page_size, 3) self.assertEqual(result.pages, 0)
def test_pagination(self): '''Search results should be paginated''' kwargs = {'page': 2, 'page_size': 3} query = search.SearchQuery(FakeSearch, **kwargs) result = search.SearchResult(query, es_factory(nb=3, total=11)) self.assertEqual(result.page, 2), self.assertEqual(result.page_size, 3) self.assertEqual(result.pages, 4)
def test_no_failures(self): '''Search result should not fail on missing properties''' query = search.SearchQuery(FakeSearch) result = search.SearchResult(query, {}) self.assertEqual(result.total, 0) self.assertEqual(result.max_score, 0) ids = result.get_ids() self.assertEqual(len(ids), 0)
def test_properties(self): '''Search result should map some properties for easy access''' response = es_factory(nb=10, total=42) max_score = response['hits']['max_score'] query = search.SearchQuery(FakeSearch) result = search.SearchResult(query, response) self.assertEqual(result.total, 42) self.assertEqual(result.max_score, max_score) ids = result.get_ids() self.assertEqual(len(ids), 10)
def factory(self, **kwargs): ''' Build a fake Elasticsearch DSL FacetedResponse and extract the facet form it ''' data = response_factory(**kwargs) class TestSearch(search.SearchQuery): facets = {'test': self.facet} s = TestSearch({}) response = search.SearchResult(s, data) return response.facets.test