Example #1
0
 def setUp(self):
     self.fv = FeedView()
     self.sq = Search()
Example #2
0
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'])