Exemple #1
0
 def test_keywords(self):
     website_factory()
     self.website.keywords.add(Tag.objects.create(tag_text='hodor'))
     self.website.keywords.add(Tag.objects.create(tag_text='radar'))
     self.website.save()
     self.refresh('website')
     res = self.anon.get(self.url, data={'q': 'hodor'})
     eq_(res.status_code, 200)
     objs = res.json['objects']
     eq_(len(objs), 1)
     eq_(sorted(objs[0]['keywords']), sorted(['hodor', 'radar']))
Exemple #2
0
 def test_keywords(self):
     website_factory()
     self.website.keywords.add(Tag.objects.create(tag_text='hodor'))
     self.website.keywords.add(Tag.objects.create(tag_text='radar'))
     self.website.save()
     self.refresh('website')
     res = self.anon.get(self.url, data={'q': 'hodor'})
     eq_(res.status_code, 200)
     objs = res.json['objects']
     eq_(len(objs), 1)
     eq_(sorted(objs[0]['keywords']), sorted(['hodor', 'radar']))
Exemple #3
0
    def test_q_relevency(self):
        # Add 2 websites - the last one has 'something' appearing in both its
        # title and its description, so it should be booster and appear higher
        # in the results.
        website_factory(title='something')
        boosted_website = website_factory(title='something',
                                          description='something')
        self._reindex()

        res = self.anon.get(self.url, data={'q': 'something'})
        eq_(res.status_code, 200)
        eq_(len(res.json['objects']), 3)
        obj = res.json['objects'][0]
        eq_(obj['id'], boosted_website.pk)
Exemple #4
0
    def test_q_relevancy(self):
        # Add 2 websites - the last one has 'something' appearing in both its
        # title and its description, so it should be booster and appear higher
        # in the results.
        website_factory(title='something')
        boosted_website = website_factory(title='something',
                                          description='something')
        self.reindex(Website)

        res = self.anon.get(self.url, data={'q': 'something'})
        eq_(res.status_code, 200)
        eq_(len(res.json['objects']), 3)
        obj = res.json['objects'][0]
        eq_(obj['id'], boosted_website.pk)
Exemple #5
0
 def test_search_ordering_relevancy(self):
     website1 = website_factory(
         name='Blah', description='Blah', devices=[mkt.DEVICE_TV.id])
     website2 = website_factory(name='Blah', devices=[mkt.DEVICE_TV.id],
                                tv_featured=1)
     website3 = website_factory(name='Blah', devices=[mkt.DEVICE_TV.id])
     self.reindex(Website)
     self.reindex(Webapp)
     url = reverse('tv-multi-search-api')
     res = self.client.get(url, {'q': 'blah'})
     objects = res.json['objects']
     eq_(len(objects), 3)
     eq_(objects[0]['id'], website2.pk)
     eq_(objects[1]['id'], website1.pk)
     eq_(objects[2]['id'], website3.pk)
Exemple #6
0
 def setUp(self):
     super(TestWebsiteReviewerActions, self).setUp()
     self.website = website_factory(
         title='something',
         categories=json.dumps(['books', 'sports']))
     self.user = UserProfile.objects.get(pk=2519)
     self.grant_permission(self.user, 'Websites:Review')
Exemple #7
0
    def _create_group_of_games(self):
        content = [app_factory(), website_factory(), app_factory(),
                   website_factory()]
        # Add tags.
        for i, cat in enumerate(GAME_CATEGORIES):
            tag = Tag.objects.get_or_create(tag_text=GAME_CATEGORIES[i])[0]
            if hasattr(content[i], 'tags'):
                content[i].tags.add(tag)
            else:
                content[i].keywords.add(tag)

        self.reindex(Webapp)
        self.reindex(Website)
        self.refresh(('webapp', 'website'))

        return content
Exemple #8
0
    def test_extract_with_translations(self):
        self.obj = website_factory()
        title = {
            'en-US': u'Site Tîtle',
            'fr': u'Titrè du sïte',
        }
        self.obj.title = title
        name = {
            'en-US': u'Namé Site',
            'fr': u'Nom du sïte',
        }
        self.obj.name = name
        self.obj.save()
        doc = self._get_doc()

        eq_(sorted(doc['title']), [title['en-US'], title['fr']])
        eq_(sorted(doc['title_translations']),
            [{'lang': 'en-US', 'string': title['en-US']},
             {'lang': 'fr', 'string': title['fr']}])

        eq_(sorted(doc['name']), [name['en-US'], name['fr']])
        eq_(sorted(doc['name_translations']),
            [{'lang': 'en-US', 'string': name['en-US']},
             {'lang': 'fr', 'string': name['fr']}])
        eq_(doc['name_l10n_french'], [name['fr']])
        eq_(doc['name_l10n_english'], [name['en-US']])
        eq_(doc['name_sort'], name['en-US'].lower())
Exemple #9
0
    def test_extract_with_translations(self):
        self.obj = website_factory()
        title = {
            'en-US': u'Site Tîtle',
            'fr': u'Titrè du sïte',
        }
        self.obj.title = title
        name = {
            'en-US': u'Namé Site',
            'fr': u'Nom du sïte',
        }
        self.obj.name = name
        self.obj.save()
        doc = self._get_doc()

        eq_(sorted(doc['title']), [title['en-US'], title['fr']])
        eq_(sorted(doc['title_translations']), [{
            'lang': 'en-US',
            'string': title['en-US']
        }, {
            'lang': 'fr',
            'string': title['fr']
        }])

        eq_(sorted(doc['name']), [name['en-US'], name['fr']])
        eq_(sorted(doc['name_translations']), [{
            'lang': 'en-US',
            'string': name['en-US']
        }, {
            'lang': 'fr',
            'string': name['fr']
        }])
        eq_(doc['name_l10n_french'], [name['fr']])
        eq_(doc['name_l10n_english'], [name['en-US']])
        eq_(doc['name_sort'], name['en-US'].lower())
Exemple #10
0
 def test_list(self):
     self.website2 = website_factory(url='http://www.lol.com/')
     self.refresh('website')
     with self.assertNumQueries(0):
         response = self.anon.get(self.url)
     eq_(response.status_code, 200)
     eq_(len(response.json['objects']), 2)
Exemple #11
0
 def setUp(self):
     super(TestWebsiteReviewerActions, self).setUp()
     self.website = website_factory(title='something',
                                    categories=json.dumps(
                                        ['books', 'sports']))
     self.user = UserProfile.objects.get(pk=2519)
     self.grant_permission(self.user, 'Websites:Review')
Exemple #12
0
 def test_list(self):
     self.website2 = website_factory(url='http://www.lol.com/')
     self._reindex()
     with self.assertNumQueries(0):
         response = self.anon.get(self.url)
     eq_(response.status_code, 200)
     eq_(len(response.json['objects']), 2)
Exemple #13
0
 def test_extract(self):
     self.obj = website_factory(
         **{
             "categories": ["books", "sports"],
             # This assumes devices and region_exclusions are stored as a json
             # array of ids, not slugs.
             "devices": [DEVICE_GAIA.id, DEVICE_DESKTOP.id],
             "region_exclusions": [BRA.id, GTM.id, URY.id],
             "icon_type": "png",
             "icon_hash": "f4k3h4sh",
         }
     )
     doc = self._get_doc()
     eq_(doc["id"], self.obj.id)
     eq_(doc["category"], self.obj.categories)
     eq_(doc["last_updated"], self.obj.last_updated)
     eq_(doc["description"], [unicode(self.obj.description)])
     eq_(doc["description_translations"], [{"lang": u"en-US", "string": unicode(self.obj.description)}])
     eq_(doc["description_l10n_english"], [unicode(self.obj.description)])
     eq_(doc["default_locale"], self.obj.default_locale)
     eq_(doc["icon_hash"], self.obj.icon_hash)
     eq_(doc["icon_type"], self.obj.icon_type)
     eq_(doc["default_locale"], self.obj.default_locale)
     eq_(doc["created"], self.obj.created)
     eq_(doc["modified"], self.obj.modified)
     eq_(doc["url"], unicode(self.obj.url))
     eq_(doc["name"], [unicode(self.obj.name)])
     eq_(doc["name_translations"], [{"lang": u"en-US", "string": unicode(self.obj.name)}])
     eq_(doc["short_name"], [unicode(self.obj.short_name)])
     eq_(doc["short_name_translations"], [{"lang": u"en-US", "string": unicode(self.obj.short_name)}])
     eq_(doc["title"], [unicode(self.obj.title)])
     eq_(doc["title_translations"], [{"lang": u"en-US", "string": unicode(self.obj.title)}])
     eq_(doc["device"], self.obj.devices)
     eq_(doc["region_exclusions"], self.obj.region_exclusions)
Exemple #14
0
 def test_search_ordering_relevancy(self):
     website1 = website_factory(name='Blah',
                                description='Blah',
                                devices=[mkt.DEVICE_TV.id])
     website2 = website_factory(name='Blah',
                                devices=[mkt.DEVICE_TV.id],
                                tv_featured=1)
     website3 = website_factory(name='Blah', devices=[mkt.DEVICE_TV.id])
     self.reindex(Website)
     self.reindex(Webapp)
     url = reverse('tv-multi-search-api')
     res = self.client.get(url, {'q': 'blah'})
     objects = res.json['objects']
     eq_(len(objects), 3)
     eq_(objects[0]['id'], website2.pk)
     eq_(objects[1]['id'], website1.pk)
     eq_(objects[2]['id'], website3.pk)
Exemple #15
0
    def test_empty(self):
        self.webapp = app_factory()
        self.website = website_factory()
        self.refresh(('webapp', 'website'))

        res = self.anon.get(self.url)
        eq_(res.status_code, 200)
        eq_(len(res.json['objects']), 0)
Exemple #16
0
 def setUp(self):
     super(TestMultiSearchView, self).setUp()
     self.url = reverse('fireplace-multi-search-api')
     self.website = website_factory()
     self.website.popularity.add(WebsitePopularity(region=0, value=666))
     self.webapp = Webapp.objects.get(pk=337141)
     self.reindex(Webapp)
     self.reindex(Website)
Exemple #17
0
 def setUp(self):
     self.website = website_factory(**{
         'categories': json.dumps(['books', 'sports']),
         # This assumes devices and region_exclusions are stored as a json
         # array of ids, not slugs.
         'devices': json.dumps([DEVICE_GAIA.id, DEVICE_DESKTOP.id]),
         'region_exclusions': json.dumps([BRA.id, GTM.id, URY.id]),
     })
Exemple #18
0
    def test_empty(self):
        self.webapp = app_factory()
        self.website = website_factory()
        self.refresh(('webapp', 'website'))

        res = self.anon.get(self.url)
        eq_(res.status_code, 200)
        eq_(len(res.json['objects']), 0)
Exemple #19
0
 def setUp(self):
     super(TestMultiSearchView, self).setUp()
     self.url = reverse('fireplace-multi-search-api')
     self.website = website_factory()
     self.website.popularity.add(WebsitePopularity(region=0, value=666))
     self.webapp = Webapp.objects.get(pk=337141)
     self.reindex(Webapp)
     self.reindex(Website)
Exemple #20
0
 def setUp(self):
     self.app = app_factory(status=mkt.STATUS_PENDING)
     self.website = website_factory()
     self.user = user_factory(email='editor')
     self.grant_permission(self.user, 'Apps:Review')
     self.admin_user = user_factory(email='admin')
     self.grant_permission(self.admin_user, '*:*', name='Admins')
     user_factory(email='regular')
Exemple #21
0
 def setUp(self):
     self.app = app_factory(status=mkt.STATUS_PENDING)
     self.website = website_factory()
     self.user = user_factory(email='editor')
     self.grant_permission(self.user, 'Apps:Review')
     self.admin_user = user_factory(email='admin')
     self.grant_permission(self.admin_user, '*:*', name='Admins')
     user_factory(email='regular')
Exemple #22
0
 def setUp(self):
     super(TestWebsiteAbuseResource, self).setUp()
     self.website = website_factory()
     self.default_data = {
         'text': 'This website is weird.',
         'sprout': 'potato',
         'website': self.website.pk
     }
Exemple #23
0
 def setUp(self):
     super(TestWebsiteAbuseResource, self).setUp()
     self.website = website_factory()
     self.default_data = {
         'text': 'This website is weird.',
         'sprout': 'potato',
         'website': self.website.pk
     }
Exemple #24
0
 def test_search_ordering(self):
     website1 = website_factory(name='A', devices=[mkt.DEVICE_TV.id])
     website2 = website_factory(name='B', devices=[mkt.DEVICE_TV.id],
                                tv_featured=1)
     website3 = website_factory(name='C', devices=[mkt.DEVICE_TV.id],
                                tv_featured=2)
     website4 = website_factory(name='D', devices=[mkt.DEVICE_TV.id])
     self.reindex(Website)
     self.reindex(Webapp)
     self.refresh()
     url = reverse('tv-multi-search-api')
     res = self.client.get(url)
     objects = res.json['objects']
     eq_(len(objects), 4)
     eq_(objects[0]['id'], website3.pk)
     eq_(objects[1]['id'], website2.pk)
     eq_(objects[2]['id'], website1.pk)
     eq_(objects[3]['id'], website4.pk)
Exemple #25
0
    def test_get_multi(self):
        website = website_factory()
        app = app_factory()
        website_factory(devices=[mkt.DEVICE_DESKTOP.id, mkt.DEVICE_GAIA.id])
        app.addondevicetype_set.create(device_type=mkt.DEVICE_TV.id)
        self.reindex(Webapp)
        self.reindex(Website)
        self.refresh()
        url = reverse('tv-multi-search-api')
        res = self.client.get(url)
        objects = res.json['objects']
        eq_(len(objects), 2)
        eq_(objects[0]['doc_type'], 'webapp')
        assert_tvplace_app(objects[0])
        eq_(objects[0]['id'], app.pk)

        eq_(objects[1]['doc_type'], 'website')
        assert_tvplace_website(objects[1])
        eq_(objects[1]['id'], website.pk)
Exemple #26
0
 def setUp(self):
     super(TestWebsiteView, self).setUp()
     self.website = website_factory(**{
         'categories': json.dumps(['books-comics', 'sports']),
         # Preferred_regions are stored as a json array of ids.
         'preferred_regions': json.dumps([URY.id, USA.id]),
         'icon_type': 'image/png',
         'icon_hash': 'fakehash',
     })
     self.url = reverse('api-v2:website-detail',
                        kwargs={'pk': self.website.pk})
Exemple #27
0
 def setUp(self):
     self.website = website_factory(**{
         'title': 'something',
         'categories': json.dumps(['books-comics', 'sports']),
         'status': STATUS_PENDING,
     })
     self.url = reverse('api-v2:reviewers-website-search-api')
     self.user = UserProfile.objects.get(pk=2519)
     self.grant_permission(self.user, 'Apps:Review')
     super(TestReviewerSearch, self).setUp()
     self.refresh('website')
Exemple #28
0
    def test_get_multi(self):
        website = website_factory()
        app = app_factory()
        website_factory(devices=[mkt.DEVICE_DESKTOP.id,
                                 mkt.DEVICE_GAIA.id])
        app.addondevicetype_set.create(device_type=mkt.DEVICE_TV.id)
        self.reindex(Webapp)
        self.reindex(Website)
        self.refresh()
        url = reverse('tv-multi-search-api')
        res = self.client.get(url)
        objects = res.json['objects']
        eq_(len(objects), 2)
        eq_(objects[0]['doc_type'], 'webapp')
        assert_tvplace_app(objects[0])
        eq_(objects[0]['id'], app.pk)

        eq_(objects[1]['doc_type'], 'website')
        assert_tvplace_website(objects[1])
        eq_(objects[1]['id'], website.pk)
Exemple #29
0
 def setUp(self):
     self.website = website_factory(**{
         'title': 'something',
         'categories': json.dumps(['books', 'sports']),
         'status': STATUS_PENDING,
     })
     self.url = reverse('api-v2:reviewers-website-search-api')
     self.user = UserProfile.objects.get(pk=2519)
     self.grant_permission(self.user, 'Apps:Review')
     super(TestReviewerSearch, self).setUp()
     self.refresh('website')
Exemple #30
0
    def test_attach_tags_websites(self):
        tag1 = Tag.objects.create(tag_text='abc', blocked=False)
        tag2 = Tag.objects.create(tag_text='xyz', blocked=False)
        tag3 = Tag.objects.create(tag_text='swearword', blocked=True)

        website1 = website_factory()
        website1.keywords.add(tag1)
        website1.keywords.add(tag2)
        website1.keywords.add(tag3)

        website2 = website_factory()
        website2.keywords.add(tag2)
        website2.keywords.add(tag3)

        website3 = website_factory()

        ok_(not hasattr(website1, 'keywords_list'))
        attach_tags([website3, website2, website1])
        eq_(website1.keywords_list, ['abc', 'xyz'])
        eq_(website2.keywords_list, ['xyz'])
        ok_(not hasattr(website3, 'keywords_list'))
Exemple #31
0
 def test_extract(self):
     self.obj = website_factory(
         **{
             'categories': ['books', 'sports'],
             # Preferred_regions and devices are stored as a json array of ids.
             'devices': [DEVICE_GAIA.id, DEVICE_DESKTOP.id],
             'preferred_regions': [URY.id, USA.id],
             'icon_type': 'png',
             'icon_hash': 'f4k3h4sh',
         })
     self.obj.keywords.add(Tag.objects.create(tag_text='hodor'))
     self.obj.keywords.add(Tag.objects.create(tag_text='radar'))
     doc = self._get_doc()
     eq_(doc['id'], self.obj.id)
     eq_(doc['category'], self.obj.categories)
     eq_(doc['last_updated'], self.obj.last_updated)
     eq_(doc['description'], [unicode(self.obj.description)])
     eq_(doc['description_translations'],
         [{
             'lang': u'en-US',
             'string': unicode(self.obj.description)
         }])
     eq_(doc['description_l10n_english'], [unicode(self.obj.description)])
     eq_(doc['default_locale'], self.obj.default_locale)
     eq_(doc['device'], self.obj.devices)
     eq_(doc['icon_hash'], self.obj.icon_hash)
     eq_(doc['icon_type'], self.obj.icon_type)
     eq_(doc['default_locale'], self.obj.default_locale)
     eq_(doc['created'], self.obj.created)
     eq_(doc['modified'], self.obj.modified)
     eq_(doc['name'], [unicode(self.obj.name)])
     eq_(doc['name_translations'], [{
         'lang': u'en-US',
         'string': unicode(self.obj.name)
     }])
     eq_(doc['preferred_regions'], self.obj.preferred_regions)
     eq_(doc['promo_img_hash'], self.obj.promo_img_hash)
     eq_(doc['reviewed'], self.obj.last_updated)
     eq_(doc['short_name'], [unicode(self.obj.short_name)])
     eq_(doc['short_name_translations'],
         [{
             'lang': u'en-US',
             'string': unicode(self.obj.short_name)
         }])
     eq_(sorted(doc['tags']), sorted(['hodor', 'radar']))
     eq_(doc['title'], [unicode(self.obj.title)])
     eq_(doc['title_translations'], [{
         'lang': u'en-US',
         'string': unicode(self.obj.title)
     }])
     eq_(doc['url'], self.obj.url)
     eq_(doc['url_tokenized'],
         unicode(self.indexer.strip_url(self.obj.url)))
Exemple #32
0
 def test_search_ordering(self):
     website1 = website_factory(name='A', devices=[mkt.DEVICE_TV.id])
     website1.update(last_updated=self.days_ago(1))
     website2 = website_factory(name='B',
                                devices=[mkt.DEVICE_TV.id],
                                tv_featured=1)
     website3 = website_factory(name='C',
                                devices=[mkt.DEVICE_TV.id],
                                tv_featured=2)
     website4 = website_factory(name='D', devices=[mkt.DEVICE_TV.id])
     website4.update(last_updated=self.days_ago(2))
     self.reindex(Website)
     self.reindex(Webapp)
     url = reverse('tv-multi-search-api')
     res = self.client.get(url)
     objects = res.json['objects']
     eq_(len(objects), 4)
     eq_(objects[0]['id'], website3.pk)
     eq_(objects[1]['id'], website2.pk)
     eq_(objects[2]['id'], website1.pk)
     eq_(objects[3]['id'], website4.pk)
Exemple #33
0
    def test_attach_tags_websites(self):
        tag1 = Tag.objects.create(tag_text="abc", blocked=False)
        tag2 = Tag.objects.create(tag_text="xyz", blocked=False)
        tag3 = Tag.objects.create(tag_text="swearword", blocked=True)

        website1 = website_factory()
        website1.keywords.add(tag1)
        website1.keywords.add(tag2)
        website1.keywords.add(tag3)

        website2 = website_factory()
        website2.keywords.add(tag2)
        website2.keywords.add(tag3)

        website3 = website_factory()

        ok_(not hasattr(website1, "keywords_list"))
        attach_tags([website3, website2, website1])
        eq_(website1.keywords_list, ["abc", "xyz"])
        eq_(website2.keywords_list, ["xyz"])
        ok_(not hasattr(website3, "keywords_list"))
Exemple #34
0
 def setUp(self):
     super(TestWebsiteView, self).setUp()
     self.website = website_factory(**{
         'categories': ['books-comics', 'sports'],
         # Preferred_regions and devices are stored as a json array of ids.
         'devices': [DEVICE_DESKTOP.id],
         'preferred_regions': [URY.id, USA.id],
         'icon_type': 'image/png',
         'icon_hash': 'fakehash',
     })
     self.url = reverse('api-v2:website-detail',
                        kwargs={'pk': self.website.pk})
Exemple #35
0
 def setUp(self):
     super(TestMultiSearchView, self).setUp()
     self.url = reverse('fireplace-multi-search-api')
     self.website = website_factory()
     self.website.popularity.add(WebsitePopularity(region=0, value=666))
     self.webapp = Webapp.objects.get(pk=337141)
     self.extension = Extension.objects.create(name='test-ext-lol')
     self.extension.versions.create(status=STATUS_PUBLIC)
     self.extension.popularity.add(ExtensionPopularity(region=0, value=999))
     self.reindex(Extension)
     self.reindex(Webapp)
     self.reindex(Website)
Exemple #36
0
 def setUp(self):
     super(TestWebsiteView, self).setUp()
     self.website = website_factory(**{
         'categories': json.dumps(['books', 'sports']),
         # This assumes devices and region_exclusions are stored as a json
         # array of ids, not slugs.
         'devices': json.dumps([DEVICE_GAIA.id, DEVICE_DESKTOP.id]),
         'region_exclusions': json.dumps([BRA.id, GTM.id, URY.id]),
         'icon_type': 'image/png',
         'icon_hash': 'fakehash',
     })
     self.url = reverse('api-v2:website-detail',
                        kwargs={'pk': self.website.pk})
Exemple #37
0
 def setUp(self):
     self.website = website_factory(**{
         'title': 'something',
         'categories': json.dumps(['books-comics', 'sports']),
         # Preferred_regions are stored as a json array of ids.
         'preferred_regions': json.dumps([URY.id, USA.id]),
         'icon_type': 'image/png',
         'icon_hash': 'fakehash',
     })
     self.category = 'books-comics'
     self.url = reverse('api-v2:website-search-api')
     super(TestWebsiteESView, self).setUp()
     self.refresh('website')
Exemple #38
0
 def test_url(self):
     self.obj = website_factory()
     expected = {
         "http://domain.com": "domain",
         "https://www.domain.com": "domain",
         "http://m.domain.com": "domain",
         "http://mobile.domain.com": "domain",
         "http://domain.uk": "domain",
         "http://www.domain.com/path/": "domain/path/",
         "http://www.domain.com/path/?query#fragment": "domain/path/",
     }
     for k, v in expected.items():
         eq_(self.indexer.strip_url(k), v)
Exemple #39
0
 def setUp(self):
     super(TestMultiSearchView, self).setUp()
     self.url = reverse('fireplace-multi-search-api')
     self.website = website_factory()
     self.website.popularity.add(WebsitePopularity(region=0, value=666))
     self.website.save()
     self.webapp = Webapp.objects.get(pk=337141)
     self.webapp.save()
     self.extension = Extension.objects.create(name='test-ext-lol')
     self.extension.versions.create(status=STATUS_PUBLIC)
     self.extension.popularity.add(ExtensionPopularity(region=0, value=999))
     self.extension.save()
     self.refresh(doctypes=('extension', 'webapp', 'website', 'homescreen'))
Exemple #40
0
    def test_trending(self):
        self.obj = website_factory()
        self.obj.trending.create(region=0, value=10.0)
        # Test an adolescent region.
        self.obj.trending.create(region=2, value=50.0)
        # Test a mature region.
        self.obj.trending.create(region=7, value=50.0)

        doc = self._get_doc()
        eq_(doc['trending'], 10.0)
        # An adolescent region uses the global trending value.
        eq_(doc['trending_2'], 10.0)
        eq_(doc['trending_7'], 50.0)
Exemple #41
0
 def test_url(self):
     self.obj = website_factory()
     expected = {
         'http://domain.com': 'domain',
         'https://www.domain.com': 'domain',
         'http://m.domain.com': 'domain',
         'http://mobile.domain.com': 'domain',
         'http://domain.uk': 'domain',
         'http://www.domain.com/path/': 'domain/path/',
         'http://www.domain.com/path/?query#fragment': 'domain/path/',
     }
     for k, v in expected.items():
         eq_(self.indexer.strip_url(k), v)
Exemple #42
0
 def setUp(self):
     self.website = website_factory(**{
         'title': 'something',
         'categories': json.dumps(['books', 'sports']),
         # This assumes devices and region_exclusions are stored as a json
         # array of ids, not slugs.
         'devices': json.dumps([DEVICE_GAIA.id, DEVICE_DESKTOP.id]),
         'region_exclusions': json.dumps([BRA.id, GTM.id, URY.id]),
     })
     self.category = 'books'
     self.url = reverse('api-v2:website-search-api')
     super(TestWebsiteESView, self).setUp()
     self._reindex()
Exemple #43
0
 def test_url(self):
     self.obj = website_factory()
     expected = {
         'http://domain.com': 'domain',
         'https://www.domain.com': 'domain',
         'http://m.domain.com': 'domain',
         'http://mobile.domain.com': 'domain',
         'http://domain.uk': 'domain',
         'http://www.domain.com/path/': 'domain/path/',
         'http://www.domain.com/path/?query#fragment': 'domain/path/',
     }
     for k, v in expected.items():
         eq_(self.indexer.strip_url(k), v)
Exemple #44
0
    def _create_group_of_games(self):
        content = [
            app_factory(),
            website_factory(),
            app_factory(),
            website_factory()
        ]
        # Add tags.
        game_tag = Tag.objects.get_or_create(tag_text='featured-game')[0]
        for i, cat in enumerate(GAME_CATEGORIES):
            tag = Tag.objects.get_or_create(tag_text=GAME_CATEGORIES[i])[0]
            if hasattr(content[i], 'tags'):
                content[i].tags.add(game_tag)
                content[i].tags.add(tag)
            else:
                content[i].keywords.add(game_tag)
                content[i].keywords.add(tag)

        self.reindex(Webapp)
        self.reindex(Website)
        self.refresh(('webapp', 'website'))

        return content
Exemple #45
0
    def test_trending(self):
        self.obj = website_factory()
        self.obj.trending.create(region=0, value=10.0)
        # Test an adolescent region.
        self.obj.trending.create(region=2, value=50.0)
        # Test a mature region.
        self.obj.trending.create(region=42, value=50.0)

        doc = self._get_doc()
        eq_(doc['trending'], 10.0)
        eq_(doc['trending_42'], 50.0)

        # Adolescent regions trending value is not stored.
        ok_('trending_2' not in doc)
Exemple #46
0
 def setUp(self):
     self.website = website_factory(**{
         'title': 'something',
         'categories': ['books-comics', 'sports'],
         # Preferred_regions and devices are stored as a json array of ids.
         'devices': [DEVICE_DESKTOP.id],
         'preferred_regions': [URY.id, USA.id],
         'icon_type': 'image/png',
         'icon_hash': 'fakehash',
     })
     self.category = 'books-comics'
     self.url = reverse('api-v2:website-search-api')
     super(TestWebsiteESView, self).setUp()
     self.refresh('website')
Exemple #47
0
    def test_trending(self):
        self.obj = website_factory()
        self.obj.trending.create(region=0, value=10.0)
        # Test an adolescent region.
        self.obj.trending.create(region=2, value=50.0)
        # Test a mature region.
        self.obj.trending.create(region=7, value=50.0)

        doc = self._get_doc()
        eq_(doc['trending'], 10.0)
        eq_(doc['trending_7'], 50.0)

        # Adolescent regions trending value is not stored.
        ok_('trending_2' not in doc)
Exemple #48
0
 def setUp(self):
     super(TestMultiSearchView, self).setUp()
     post_request_task._start_queuing_tasks()
     self.url = reverse('fireplace-multi-search-api')
     self.website = website_factory()
     self.website.popularity.add(WebsitePopularity(region=0, value=666))
     self.website.save()
     self.webapp = Webapp.objects.get(pk=337141)
     self.webapp.save()
     self.extension = Extension.objects.create(name='test-ext-lol')
     self.extension.versions.create(status=STATUS_PUBLIC)
     self.extension.popularity.add(ExtensionPopularity(region=0, value=999))
     self.extension.save()
     post_request_task._send_tasks_and_stop_queuing()
     self.refresh(doctypes=('extension', 'webapp', 'website',
                            'homescreen'))
Exemple #49
0
 def setUp(self):
     super(TestWebsiteForm, self).setUp()
     self.request = RequestFactory().get('/')
     self.website = website_factory()
     self.website.keywords.add(Tag.objects.create(tag_text='horton'))
     self.data = {
         'title_en-us': unicode(self.website.title),
         'name_en-us': unicode(self.website.name),
         'short_name_en-us': unicode(self.website.short_name),
         'description_en-us': unicode(self.website.description),
         'keywords': 'thing one, thing two',
         'preferred_regions': [1, 2],
         'categories': ['books-comics', 'reference'],
         'status': mkt.STATUS_PUBLIC,
         'is_disabled': False,
         'url': self.website.url,
     }
Exemple #50
0
 def setUp(self):
     super(TestWebsiteForm, self).setUp()
     self.request = RequestFactory().get('/')
     self.website = website_factory()
     self.website.keywords.add(Tag.objects.create(tag_text='horton'))
     self.data = {
         'title_en-us': unicode(self.website.title),
         'name_en-us': unicode(self.website.name),
         'short_name_en-us': unicode(self.website.short_name),
         'description_en-us': unicode(self.website.description),
         'keywords': 'thing one, thing two',
         'preferred_regions': [1, 2],
         'categories': ['books-comics', 'reference'],
         'devices': [DEVICE_GAIA.id],
         'status': mkt.STATUS_PUBLIC,
         'is_disabled': False,
         'url': self.website.url,
     }
Exemple #51
0
 def test_extract(self):
     self.obj = website_factory(**{
         'categories': ['books', 'sports'],
         # Preferred_regions and devices are stored as a json array of ids.
         'devices': [DEVICE_GAIA.id, DEVICE_DESKTOP.id],
         'preferred_regions': [URY.id, USA.id],
         'icon_type': 'png',
         'icon_hash': 'f4k3h4sh',
     })
     self.obj.keywords.add(Tag.objects.create(tag_text='hodor'))
     self.obj.keywords.add(Tag.objects.create(tag_text='radar'))
     doc = self._get_doc()
     eq_(doc['id'], self.obj.id)
     eq_(doc['category'], self.obj.categories)
     eq_(doc['last_updated'], self.obj.last_updated)
     eq_(doc['description'], [unicode(self.obj.description)])
     eq_(doc['description_translations'], [{
         'lang': u'en-US', 'string': unicode(self.obj.description)}])
     eq_(doc['description_l10n_english'], [unicode(self.obj.description)])
     eq_(doc['default_locale'], self.obj.default_locale)
     eq_(doc['device'], self.obj.devices)
     eq_(doc['icon_hash'], self.obj.icon_hash)
     eq_(doc['icon_type'], self.obj.icon_type)
     eq_(doc['default_locale'], self.obj.default_locale)
     eq_(doc['created'], self.obj.created)
     eq_(doc['modified'], self.obj.modified)
     eq_(doc['name'], [unicode(self.obj.name)])
     eq_(doc['name_translations'], [{
         'lang': u'en-US', 'string': unicode(self.obj.name)}])
     eq_(doc['preferred_regions'], self.obj.preferred_regions)
     eq_(doc['promo_img_hash'], self.obj.promo_img_hash)
     eq_(doc['reviewed'], self.obj.last_updated)
     eq_(doc['short_name'], [unicode(self.obj.short_name)])
     eq_(doc['short_name_translations'], [{
         'lang': u'en-US', 'string': unicode(self.obj.short_name)}])
     eq_(sorted(doc['tags']), sorted(['hodor', 'radar']))
     eq_(doc['title'], [unicode(self.obj.title)])
     eq_(doc['title_translations'], [{
         'lang': u'en-US', 'string': unicode(self.obj.title)}])
     eq_(doc['url'], self.obj.url)
     eq_(doc['url_tokenized'],
         unicode(self.indexer.strip_url(self.obj.url)))
Exemple #52
0
    def test_q_relevancy_region(self):
        # Add another website without any preferred regions: it should rank
        # higher without region (description increases its score), lower with
        # one (region preference increases the score for the initial website).
        self.website2 = website_factory(title='something',
                                        description='something')
        self.reindex(Website)
        res = self.anon.get(self.url, data={'q': 'something'})
        eq_(res.status_code, 200)
        objs = res.json['objects']
        eq_(len(objs), 2)
        eq_(objs[0]['id'], self.website2.pk)
        eq_(objs[1]['id'], self.website.pk)

        res = self.anon.get(self.url, data={'q': 'something', 'region': 'us'})
        eq_(res.status_code, 200)
        objs = res.json['objects']
        eq_(len(objs), 2)
        eq_(objs[0]['id'], self.website.pk)
        eq_(objs[1]['id'], self.website2.pk)
Exemple #53
0
    def test_q_relevancy_region(self):
        # Add another website without any preferred regions: it should rank
        # higher without region (description increases its score), lower with
        # one (region preference increases the score for the initial website).
        self.website2 = website_factory(title='something',
                                        description='something')
        self.reindex(Website)
        res = self.anon.get(self.url, data={'q': 'something'})
        eq_(res.status_code, 200)
        objs = res.json['objects']
        eq_(len(objs), 2)
        eq_(objs[0]['id'], self.website2.pk)
        eq_(objs[1]['id'], self.website.pk)

        res = self.anon.get(self.url, data={'q': 'something', 'region': 'us'})
        eq_(res.status_code, 200)
        objs = res.json['objects']
        eq_(len(objs), 2)
        eq_(objs[0]['id'], self.website.pk)
        eq_(objs[1]['id'], self.website2.pk)
Exemple #54
0
    def test_installs_to_popularity(self):
        self.obj = website_factory()
        # No installs.
        doc = self._get_doc()
        # Boost is multiplied by 4 if it's public.
        eq_(doc['boost'], 1.0 * 4)
        eq_(doc['popularity'], 0)

        # Add some popularity.
        self.obj.popularity.create(region=0, value=50.0)
        # Test an adolescent region.
        self.obj.popularity.create(region=2, value=10.0)
        # Test a mature region.
        self.obj.popularity.create(region=7, value=10.0)

        doc = self._get_doc()
        eq_(doc['boost'], get_boost(self.obj))
        eq_(doc['popularity'], 50)
        eq_(doc['popularity_7'], 10)
        # Adolescent regions popularity value is not stored.
        ok_('popularity_2' not in doc)
Exemple #55
0
    def test_installs_to_popularity(self):
        self.obj = website_factory()
        # No installs.
        doc = self._get_doc()
        # Boost is multiplied by BOOST_MULTIPLIER_FOR_PUBLIC_CONTENT if it's
        # public.
        eq_(doc['boost'], 1.0 * BOOST_MULTIPLIER_FOR_PUBLIC_CONTENT)
        eq_(doc['popularity'], 0)

        # Add some popularity.
        self.obj.popularity.create(region=0, value=50.0)
        # Test an adolescent region.
        self.obj.popularity.create(region=2, value=10.0)
        # Test a mature region.
        self.obj.popularity.create(region=42, value=10.0)

        doc = self._get_doc()
        eq_(doc['boost'], get_boost(self.obj))
        eq_(doc['popularity'], 50)
        eq_(doc['popularity_42'], 10)
        # Adolescent regions popularity value is not stored.
        ok_('popularity_2' not in doc)
Exemple #56
0
 def setUp(self):
     super(TestWebsiteEdit, self).setUp()
     self.website = website_factory()
     self.url = reverse('lookup.website_edit', args=[self.website.pk])
     self.login('*****@*****.**')
Exemple #57
0
 def setUp(self):
     super(TestExcludedFields, self).setUp()
     self.website = website_factory()
     self.website.trending.create(region=2, value=50.0)
     self.website.popularity.create(region=2, value=142.0)
     self.reindex(Website)
Exemple #58
0
 def setUp(self):
     super(TestWebsiteSearch, self).setUp()
     self.url = reverse('lookup.website_search')
     self.website = website_factory()
     self.refresh('website')
     self.login('*****@*****.**')
Exemple #59
0
 def test_delete_search_index(self, delete_mock):
     for x in xrange(4):
         website_factory()
     count = Website.objects.count()
     Website.objects.all().delete()
     eq_(delete_mock.call_count, count)
Exemple #60
0
 def test_website(self):
     website = website_factory()
     AbuseReport(website=website).send()
     assert mail.outbox[0].subject.startswith('[Website]')
     eq_(mail.outbox[0].to, [settings.MKT_FEEDBACK_EMAIL])