def setUp(self): self.fv = FeedView() self.sq = Search()
class TestFeedViewQueries(BaseTestFeedItemViewSet, amo.tests.TestCase): fixtures = BaseTestFeedItemViewSet.fixtures + FeedTestMixin.fixtures def setUp(self): self.fv = FeedView() self.sq = Search() def test_region_default(self): """Region default to RoW.""" sq = self.fv.get_es_feed_query(self.sq).to_dict() eq_(sq['query']['function_score']['filter']['term']['region'], 1) def test_region(self): """With region only.""" sq = self.fv.get_es_feed_query(self.sq, region=2).to_dict() eq_(sq['query']['function_score']['filter']['term']['region'], 2) def test_carrier_with_region(self): sq = self.fv.get_es_feed_query(self.sq, region=2, carrier=1).to_dict() # Test filter. ok_({'term': {'region': 2}} in sq['query']['function_score']['filter']['bool']['must']) ok_({'bool': {'must_not': [{'term': {'carrier': 1}}], 'must': [{'term': {'item_type': 'shelf'}}]}} in sq['query']['function_score']['filter']['bool']['must_not']) # Test functions. ok_({'filter': {'term': {'item_type': 'shelf'}}, 'boost_factor': 10000.0} in sq['query']['function_score']['functions']) ok_({'filter': {'bool': { 'must_not': [{'term': {'item_type': 'shelf'}}], 'must': [{'term': {'region': 2}}]}}, 'field_value_factor': {'field': 'order', 'modifier': 'reciprocal'}} in sq['query']['function_score']['functions']) def test_carrier_default_region(self): sq = self.fv.get_es_feed_query(self.sq, carrier=1).to_dict() # Test filter. ok_({'term': {'region': 1}} in sq['query']['function_score']['filter']['bool']['must']) def test_order(self): """Order script scoring.""" sq = self.fv.get_es_feed_query(self.sq).to_dict() ok_({'term': {'region': 1}} in sq['query']['function_score']['functions'][0] ['filter']['bool']['must']) ok_({'term': {'item_type': 'shelf'}} in sq['query']['function_score']['functions'][0] ['filter']['bool']['must_not']) eq_(sq['query']['function_score']['functions'][0] ['field_value_factor'], {'field': 'order', 'modifier': 'reciprocal'}) def test_element_query(self): feed_item = self.feed_item_factory() item = feed_item.get_indexer().extract_document(None, obj=feed_item) sq = self.fv.get_es_feed_element_query(self.sq, [item]).to_dict() ok_({'bool': {'must': [{'term': {'id': feed_item.app_id}}, {'term': {'item_type': 'app'}}]}} in sq['query']['filtered']['filter']['bool']['should'])