def setUp(self): super(TestReviewNotesViewSetDetail, self).setUp() self.addon = addon_factory(guid=generate_addon_guid(), name=u"My Addôn", slug="my-addon") self.user = user_factory() self.version = self.addon.find_latest_version(channel=amo.RELEASE_CHANNEL_LISTED) self.note = self.log(u"noôo!", amo.LOG.REQUEST_INFORMATION, self.days_ago(0)) self._set_tested_url()
def setUp(self): super(TestReviewNotesViewSetCreateActivityEmailWaffleOff, self).setUp() self.addon = addon_factory(guid=generate_addon_guid(), name=u"My Addôn", slug="my-addon") self.version = self.addon.find_latest_version(channel=amo.RELEASE_CHANNEL_LISTED) self.url = reverse( "version-reviewnotes-list", kwargs={"addon_pk": self.addon.pk, "version_pk": self.version.pk} )
def populate(self): now = datetime.now() guid = generate_addon_guid() name = 'Addon %s' % guid addon = amo.tests.addon_factory(name=name, guid=guid) UpdateCount.objects.create(addon=addon, count=10, date=now) return addon
def setUp(self): super(TestInternalAddonViewSetDetail, self).setUp() self.addon = addon_factory( guid=generate_addon_guid(), name=u'My Addôn', slug='my-addon') self._set_tested_url(self.addon.pk) user = UserProfile.objects.create(username='******') self.grant_permission(user, 'ReviewerAdminTools:View') self.client.login_api(user)
def setUp(self): super(TestReviewNotesViewSetCreate, self).setUp() self.addon = addon_factory( guid=generate_addon_guid(), name=u'My Addôn', slug='my-addon') self.version = self.addon.find_latest_version( channel=amo.RELEASE_CHANNEL_LISTED) self.url = reverse_ns('version-reviewnotes-list', kwargs={ 'addon_pk': self.addon.pk, 'version_pk': self.version.pk})
def addon(transactional_db, create_superuser, pytestconfig): """Creates a custom addon named 'Ui-Addon'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user created by the 'create_superuser' fixture. It has 1 preview, 5 reviews, and 2 authors. The second author is named 'ui-tester2'. It has a version number as well as a beta version. """ if not pytestconfig.option.usingliveserver: return default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_EXTENSION, average_daily_users=5567, users=[UserProfile.objects.get(username='******')], average_rating=5, description=u'My Addon description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type=random.choice(default_icons), name=u'Ui-Addon', public_stats=True, slug='ui-test', summary=u'My Addon summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/ui-test-addon/', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_reviews=888, weekly_downloads=2147483647, developer_comments='This is a testing addon, used within pytest.', is_experimental=True, ) Preview.objects.create(addon=addon, position=1) Review.objects.create(addon=addon, rating=5, user=user_factory()) Review.objects.create(addon=addon, rating=3, user=user_factory()) Review.objects.create(addon=addon, rating=2, user=user_factory()) Review.objects.create(addon=addon, rating=1, user=user_factory()) addon.reload() AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) version_factory(addon=addon, file_kw={'status': amo.STATUS_BETA}, version='1.1beta') addon.save() generate_collection(addon, app=FIREFOX) print('Created addon {0} for testing successfully'.format(addon.name)) return addon
def setUp(self): super(TestReviewNotesViewSetList, self).setUp() self.addon = addon_factory(guid=generate_addon_guid(), name=u"My Addôn", slug="my-addon") self.user = user_factory() self.note = self.log(u"noôo!", amo.LOG.APPROVE_VERSION, self.days_ago(2)) self.note2 = self.log(u"réply!", amo.LOG.DEVELOPER_REPLY_VERSION, self.days_ago(1)) self.note3 = self.log(u"yéss!", amo.LOG.REVIEWER_REPLY_VERSION, self.days_ago(0)) self.version = self.addon.find_latest_version(channel=amo.RELEASE_CHANNEL_LISTED) self._set_tested_url()
def create_featured_addon_with_version(self): """Creates a custom addon named 'Ui-Addon'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 5 reviews, and 2 authors. The second author is named 'ui-tester2'. It has a version number as well as a beta version. """ default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_EXTENSION, average_daily_users=5000, users=[UserProfile.objects.get(username='******')], average_rating=5, description=u'My Addon description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), icon_type=random.choice(default_icons), name=u'Ui-Addon', public_stats=True, slug='ui-test-2', summary=u'My Addon summary', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon.', ) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) version_factory(addon=addon, file_kw={'status': amo.STATUS_BETA}, version='1.1beta') addon.save() generate_collection(addon, app=FIREFOX) print( 'Created addon {0} for testing successfully' .format(addon.name))
def setUp(self): super(TestReviewNotesViewSetList, self).setUp() self.addon = addon_factory(guid=generate_addon_guid(), name=u'My Addôn', slug='my-addon') self.user = user_factory() self.note = self.log(u'noôo!', amo.LOG.APPROVE_VERSION, self.days_ago(2)) self.note2 = self.log(u'réply!', amo.LOG.DEVELOPER_REPLY_VERSION, self.days_ago(1)) self.note3 = self.log(u'yéss!', amo.LOG.REVIEWER_REPLY_VERSION, self.days_ago(0)) self.version = self.addon.latest_version self._set_tested_url()
def setUp(self): super().setUp() self.addon = addon_factory( guid=generate_addon_guid(), name='My Addôn', slug='my-addon' ) self.user = user_factory() self.note = self.log('noôo!', amo.LOG.APPROVE_VERSION, self.days_ago(3)) self.note2 = self.log( 'réply!', amo.LOG.DEVELOPER_REPLY_VERSION, self.days_ago(2) ) self.note3 = self.log('yéss!', amo.LOG.REVIEWER_REPLY_VERSION, self.days_ago(1)) self.version = self.addon.find_latest_version( channel=amo.RELEASE_CHANNEL_LISTED ) self._set_tested_url()
def create_featured_android_addon(self): """Creates a custom addon named 'Ui-Addon-Android'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 2 reviews, and 1 authors. It is an Android addon. """ default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory( status=STATUS_APPROVED, type=ADDON_EXTENSION, average_daily_users=5656, users=[self.user], average_rating=5, description=u'My Addon description about ANDROID', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ANDROID.id, 'size': 42, }, guid=generate_addon_guid(), icon_type=random.choice(default_icons), name=u'Ui-Addon-Android', public_stats=True, slug='ui-test-addon-android', summary=u'My Addon summary for Android', tags=[ 'some_tag', 'another_tag', 'ui-testing', 'selenium', 'python', 'android' ], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon for Android.', ) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) addon.save() generate_collection(addon, app=FIREFOX) print('Created addon {0} for testing successfully'.format(addon.name))
def create_featured_addon_with_version(self): """Creates a custom addon named 'Ui-Addon'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 5 reviews, and 2 authors. The second author is named 'ui-tester2'. It has a version number. """ default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory(status=amo.STATUS_APPROVED, type=ADDON_EXTENSION, average_daily_users=5000, users=[self.user], average_rating=5, description=u'My Addon description', file_kw={'is_webextension': True}, guid=generate_addon_guid(), icon_type=random.choice(default_icons), name=u'Ui-Addon', recommended=True, slug='ui-test-2', summary=u'My Addon summary', tags=[ 'some_tag', 'another_tag', 'ui-testing', 'selenium', 'python' ], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon.', version_kw={'nomination': days_ago(6)}) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) addon.save() generate_collection(addon, app=FIREFOX) print('Created addon {0} for testing successfully'.format(addon.name))
def create_featured_android_addon(self): """Creates a custom addon named 'Ui-Addon-Android'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 2 reviews, and 1 authors. It is an Android addon. """ addon = addon_factory( status=amo.STATUS_APPROVED, type=ADDON_EXTENSION, average_daily_users=5656, users=[self.user], average_rating=5, description='My Addon description about ANDROID', file_kw={'is_webextension': True}, guid=generate_addon_guid(), name='Ui-Addon-Android', slug='ui-test-addon-android', summary='My Addon summary for Android', tags=[ 'some_tag', 'another_tag', 'ui-testing', 'selenium', 'python', 'android', ], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon for Android.', version_kw={'nomination': days_ago(6)}, promoted=RECOMMENDED, ) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) addon.save() generate_collection(addon, app=FIREFOX) print('Created addon {0} for testing successfully'.format(addon.name))
def create_featured_android_addon(self): """Creates a custom addon named 'Ui-Addon-Android'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 2 reviews, and 1 authors. It is an Android addon. """ default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_EXTENSION, average_daily_users=5656, users=[self.user], average_rating=5, description=u'My Addon description about ANDROID', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ANDROID.id, 'size': 42, }, guid=generate_addon_guid(), icon_type=random.choice(default_icons), name=u'Ui-Addon-Android', public_stats=True, slug='ui-test-addon-android', summary=u'My Addon summary for Android', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python', 'android'], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon for Android.', ) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create(user=user_factory(username='******'), addon=addon, listed=True) addon.save() generate_collection(addon, app=FIREFOX) print( 'Created addon {0} for testing successfully' .format(addon.name))
def minimal_addon(transactional_db, create_superuser, pytestconfig): """Creates a custom addon named 'Ui-Addon-2'. It will belong to the user created by the 'create_superuser' fixture. It has 1 preview, and 2 reviews. """ if not pytestconfig.option.usingliveserver: return default_icons = [x[0] for x in icons() if x[0].startswith('icon/')] addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_EXTENSION, average_daily_users=7000, users=[UserProfile.objects.get(username='******')], average_rating=3, description=u'My Addon description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), icon_type=random.choice(default_icons), name=u'Ui-Addon-2', public_stats=True, slug='ui-test-2', summary=u'My Addon summary', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_reviews=777, weekly_downloads=22233879, developer_comments='This is a testing addon, used within pytest.', ) Preview.objects.create(addon=addon, position=1) Review.objects.create(addon=addon, rating=5, user=user_factory()) Review.objects.create(addon=addon, rating=3, user=user_factory()) addon.reload() addon.save() generate_collection(addon, app=FIREFOX, type=amo.COLLECTION_FEATURED) print('Created addon {0} for testing successfully'.format(addon.name)) return addon
def create_featured_addon_with_version(self): """Creates a custom addon named 'Ui-Addon'. This addon will be a featured addon and will have a featured collecton attatched to it. It will belong to the user uitest. It has 1 preview, 5 reviews, and 2 authors. The second author is named 'ui-tester2'. It has a version number. """ addon = addon_factory( status=amo.STATUS_APPROVED, type=ADDON_EXTENSION, average_daily_users=5000, users=[self.user], average_rating=5, description='My Addon description', guid=generate_addon_guid(), name='Ui-Addon', slug='ui-test-2', summary='My Addon summary', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_ratings=500, weekly_downloads=9999999, developer_comments='This is a testing addon.', version_kw={'nomination': days_ago(6)}, promoted=RECOMMENDED, ) Preview.objects.create(addon=addon, position=1) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) Rating.objects.create(addon=addon, rating=5, user=user_factory()) AddonUser.objects.create( user=user_factory(username='******'), addon=addon, listed=True ) addon.save() generate_collection(addon, app=FIREFOX) print(f'Created addon {addon.name} for testing successfully')
def theme(transactional_db, create_superuser, pytestconfig): """Creates a custom theme named 'Ui-Test Theme'. This theme will be a featured theme and will belong to the user created by the 'create_superuser' fixture. It has one author. """ if not pytestconfig.option.usingliveserver: return addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_PERSONA, average_daily_users=4242, users=[UserProfile.objects.get(username='******')], average_rating=5, description=u'My UI Theme description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', name=u'Ui-Test Theme', public_stats=True, slug='ui-test', summary=u'My UI theme summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/ui-theme-addon/', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_reviews=777, weekly_downloads=123456, developer_comments='This is a testing theme, used within pytest.', ) addon.save() generate_collection(addon, app=FIREFOX, author=UserProfile.objects.get(username='******')) print('Created Theme {0} for testing successfully'.format(addon.name)) return addon
def theme(transactional_db, create_superuser, pytestconfig): """Creates a custom theme named 'Ui-Test Theme'. This theme will be a featured theme and will belong to the user created by the 'create_superuser' fixture. It has one author. """ if not pytestconfig.option.usingliveserver: return addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_PERSONA, average_daily_users=4242, users=[UserProfile.objects.get(username='******')], average_rating=4.21, description=u'My UI Theme description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', name=u'Ui-Test Theme', public_stats=True, slug='ui-test', summary=u'My UI theme summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/ui-theme-addon/', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_reviews=777, weekly_downloads=123456, developer_comments='This is a testing theme, used within pytest.', ) addon.save() generate_collection(addon, app=FIREFOX, author=UserProfile.objects.get(username='******')) print('Created Theme {0} for testing successfully'.format(addon.name)) return addon
def create_featured_theme(self): """Creates a custom theme named 'Ui-Test Theme'. This theme will be a featured theme and will belong to the uitest user. It has one author. """ addon = addon_factory( status=STATUS_PUBLIC, type=ADDON_PERSONA, average_daily_users=4242, users=[self.user], average_rating=5, description=u'My UI Theme description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_ALL.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', name=u'Ui-Test Theme', public_stats=True, slug='ui-test', summary=u'My UI theme summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/ui-theme-addon/', tags=['some_tag', 'another_tag', 'ui-testing', 'selenium', 'python'], total_ratings=777, weekly_downloads=123456, developer_comments='This is a testing theme, used within pytest.', ) addon.save() generate_collection( addon, app=FIREFOX, type=amo.COLLECTION_FEATURED) print('Created Theme {0} for testing successfully'.format(addon.name))
def create_featured_theme(self): """Creates a custom theme named 'Ui-Test Theme'. This theme will be a featured theme and will belong to the uitest user. It has one author. """ addon = addon_factory( status=amo.STATUS_APPROVED, type=ADDON_PERSONA, average_daily_users=4242, users=[self.user], average_rating=5, description=u'My UI Theme description', file_kw={'is_webextension': True}, guid=generate_addon_guid(), homepage=u'https://www.example.org/', name=u'Ui-Test Theme', public_stats=True, slug='ui-test', summary=u'My UI theme summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/ui-theme-addon/', tags=[ 'some_tag', 'another_tag', 'ui-testing', 'selenium', 'python' ], total_ratings=777, weekly_downloads=123456, developer_comments='This is a testing theme, used within pytest.', version_kw={ 'recommendation_approved': True, 'nomination': days_ago(6) }) addon.save() generate_collection(addon, app=FIREFOX, type=amo.COLLECTION_RECOMMENDED) DiscoveryItem.objects.create(recommendable=True, addon=addon) print('Created Theme {0} for testing successfully'.format(addon.name))
def test_basic(self): cat1 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['bookmarks']) cat1.save() self.addon = addon_factory( average_daily_users=4242, average_rating=4.21, bayesian_rating=4.22, category=cat1, description=u'My Addôn description', file_kw={ 'hash': 'fakehash', 'is_restart_required': False, 'is_webextension': True, 'platform': amo.PLATFORM_WIN.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type='image/png', name=u'My Addôn', public_stats=True, slug='my-addon', summary=u'My Addôn summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/my-addon/', tags=['some_tag', 'some_other_tag'], total_reviews=666, weekly_downloads=2147483647, ) AddonUser.objects.create(user=user_factory(username='******'), addon=self.addon, listed=False) second_author = user_factory(username='******', display_name=u'Secönd Author') first_author = user_factory(username='******', display_name=u'First Authôr') AddonUser.objects.create(user=second_author, addon=self.addon, position=2) AddonUser.objects.create(user=first_author, addon=self.addon, position=1) second_preview = Preview.objects.create(addon=self.addon, position=2, caption={ 'en-US': u'My câption', 'fr': u'Mön tîtré' }) first_preview = Preview.objects.create(addon=self.addon, position=1) av_min = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='2.0.99')[0] av_max = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='3.0.99')[0] ApplicationsVersions.objects.get_or_create( application=amo.THUNDERBIRD.id, version=self.addon.current_version, min=av_min, max=av_max) # Reset current_version.compatible_apps now that we've added an app. del self.addon.current_version.compatible_apps cat2 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['alerts-updates']) cat2.save() AddonCategory.objects.create(addon=self.addon, category=cat2) cat3 = Category.from_static_category( CATEGORIES[amo.THUNDERBIRD.id][amo.ADDON_EXTENSION]['calendar']) cat3.save() AddonCategory.objects.create(addon=self.addon, category=cat3) result = self.serialize() assert result['id'] == self.addon.pk assert result['average_daily_users'] == self.addon.average_daily_users assert result['categories'] == { 'firefox': ['alerts-updates', 'bookmarks'], 'thunderbird': ['calendar'] } assert result['current_beta_version'] is None # In this serializer latest_unlisted_version is omitted. assert 'latest_unlisted_version' not in result assert result['current_version'] self._test_version(self.addon.current_version, result['current_version']) assert result['current_version']['url'] == absolutify( reverse('addons.versions', args=[self.addon.slug, self.addon.current_version.version])) assert result['authors'] assert len(result['authors']) == 2 self.check_author(first_author, result['authors'][0]) self.check_author(second_author, result['authors'][1]) assert result['edit_url'] == absolutify(self.addon.get_dev_url()) assert result['default_locale'] == self.addon.default_locale assert result['description'] == {'en-US': self.addon.description} assert result['guid'] == self.addon.guid assert result['has_eula'] is False assert result['has_privacy_policy'] is False assert result['homepage'] == { 'en-US': get_outgoing_url(unicode(self.addon.homepage)) } assert result['icon_url'] == absolutify(self.addon.get_icon_url(64)) assert result['is_disabled'] == self.addon.is_disabled assert result['is_experimental'] == self.addon.is_experimental is False assert result['is_featured'] == self.addon.is_featured() is False assert result['is_source_public'] == self.addon.view_source assert result['last_updated'] == ( self.addon.last_updated.replace(microsecond=0).isoformat() + 'Z') assert result['name'] == {'en-US': self.addon.name} assert result['previews'] assert len(result['previews']) == 2 result_preview = result['previews'][0] assert result_preview['id'] == first_preview.pk assert result_preview['caption'] is None assert result_preview['image_url'] == absolutify( first_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( first_preview.thumbnail_url) result_preview = result['previews'][1] assert result_preview['id'] == second_preview.pk assert result_preview['caption'] == { 'en-US': u'My câption', 'fr': u'Mön tîtré' } assert result_preview['image_url'] == absolutify( second_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( second_preview.thumbnail_url) assert result['ratings'] == { 'average': self.addon.average_rating, 'bayesian_average': self.addon.bayesian_rating, 'count': self.addon.total_reviews, } assert result['public_stats'] == self.addon.public_stats assert result['requires_payment'] == self.addon.requires_payment assert result['review_url'] == absolutify( reverse('editors.review', args=[self.addon.pk])) assert result['slug'] == self.addon.slug assert result['status'] == 'public' assert result['summary'] == {'en-US': self.addon.summary} assert result['support_email'] == {'en-US': self.addon.support_email} assert result['support_url'] == { 'en-US': get_outgoing_url(unicode(self.addon.support_url)) } assert 'theme_data' not in result assert set(result['tags']) == set(['some_tag', 'some_other_tag']) assert result['type'] == 'extension' assert result['url'] == absolutify(self.addon.get_url_path()) assert result['weekly_downloads'] == self.addon.weekly_downloads return result
def test_basic(self): self.addon = addon_factory( description=u'My Addôn description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_WIN.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type='image/png', name=u'My Addôn', public_stats=True, slug='my-addon', summary=u'My Addôn summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/my-addon/', tags=['some_tag', 'some_other_tag'], ) result = self.serialize() version = self.addon.current_version file_ = version.files.latest('pk') assert result['id'] == self.addon.pk assert result['current_version'] assert result['current_version']['id'] == version.pk assert result['current_version']['compatibility'] == { 'firefox': { 'max': u'5.0.99', 'min': u'4.0.99' } } assert result['current_version']['files'] assert len(result['current_version']['files']) == 1 result_file = result['current_version']['files'][0] assert result_file['id'] == file_.pk assert result_file['created'] == file_.created.isoformat() assert result_file['hash'] == file_.hash assert result_file['platform'] == 'windows' assert result_file['size'] == file_.size assert result_file['status'] == 'public' assert result_file['url'] == file_.get_url_path(src='') assert result['current_version']['edit_url'] == absolutify( self.addon.get_dev_url('versions.edit', args=[self.addon.current_version.pk], prefix_only=True)) assert result['current_version']['reviewed'] == version.reviewed assert result['current_version']['version'] == version.version assert result['current_version']['url'] == absolutify( version.get_url_path()) assert result['edit_url'] == absolutify(self.addon.get_dev_url()) assert result['default_locale'] == self.addon.default_locale assert result['description'] == {'en-US': self.addon.description} assert result['guid'] == self.addon.guid assert result['homepage'] == {'en-US': self.addon.homepage} assert result['icon_url'] == absolutify(self.addon.get_icon_url(64)) assert result['is_listed'] == self.addon.is_listed assert result['name'] == {'en-US': self.addon.name} assert result['last_updated'] == self.addon.last_updated.isoformat() assert result['public_stats'] == self.addon.public_stats assert result['review_url'] == absolutify( reverse('editors.review', args=[self.addon.pk])) assert result['slug'] == self.addon.slug assert result['status'] == 'public' assert result['summary'] == {'en-US': self.addon.summary} assert result['support_email'] == {'en-US': self.addon.support_email} assert result['support_url'] == {'en-US': self.addon.support_url} assert 'theme_data' not in result assert set(result['tags']) == set(['some_tag', 'some_other_tag']) assert result['type'] == 'extension' assert result['url'] == absolutify(self.addon.get_url_path()) return result
def test_basic(self): self.addon = addon_factory( description=u'My Addôn description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_WIN.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type='image/png', name=u'My Addôn', public_stats=True, slug='my-addon', summary=u'My Addôn summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/my-addon/', tags=['some_tag', 'some_other_tag'], ) result = self.serialize() version = self.addon.current_version file_ = version.files.latest('pk') assert result['id'] == self.addon.pk assert result['current_version'] assert result['current_version']['id'] == version.pk assert result['current_version']['compatibility'] == { 'firefox': {'max': u'5.0.99', 'min': u'4.0.99'} } assert result['current_version']['files'] assert len(result['current_version']['files']) == 1 result_file = result['current_version']['files'][0] assert result_file['id'] == file_.pk assert result_file['created'] == file_.created.isoformat() assert result_file['hash'] == file_.hash assert result_file['platform'] == 'windows' assert result_file['size'] == file_.size assert result_file['status'] == 'public' assert result_file['url'] == file_.get_url_path(src='') assert result['current_version']['edit_url'] == absolutify( self.addon.get_dev_url( 'versions.edit', args=[self.addon.current_version.pk], prefix_only=True)) assert result['current_version']['reviewed'] == version.reviewed assert result['current_version']['version'] == version.version assert result['current_version']['url'] == absolutify( version.get_url_path()) assert result['edit_url'] == absolutify(self.addon.get_dev_url()) assert result['default_locale'] == self.addon.default_locale assert result['description'] == {'en-US': self.addon.description} assert result['guid'] == self.addon.guid assert result['homepage'] == {'en-US': self.addon.homepage} assert result['icon_url'] == absolutify(self.addon.get_icon_url(64)) assert result['is_listed'] == self.addon.is_listed assert result['name'] == {'en-US': self.addon.name} assert result['last_updated'] == self.addon.last_updated.isoformat() assert result['public_stats'] == self.addon.public_stats assert result['review_url'] == absolutify( reverse('editors.review', args=[self.addon.pk])) assert result['slug'] == self.addon.slug assert result['status'] == 'public' assert result['summary'] == {'en-US': self.addon.summary} assert result['support_email'] == {'en-US': self.addon.support_email} assert result['support_url'] == {'en-US': self.addon.support_url} assert 'theme_data' not in result assert set(result['tags']) == set(['some_tag', 'some_other_tag']) assert result['type'] == 'extension' assert result['url'] == absolutify(self.addon.get_url_path()) return result
def test_basic(self): cat1 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['bookmarks']) cat1.save() license = License.objects.create( name={ 'en-US': u'My License', 'fr': u'Mä Licence', }, text={ 'en-US': u'Lorem ipsum dolor sit amet, has nemore patrioqué', }, url='http://license.example.com/' ) self.addon = addon_factory( average_daily_users=4242, average_rating=4.21, bayesian_rating=4.22, category=cat1, contributions=u'https://paypal.me/foobar/', description=u'My Addôn description', developer_comments=u'Dévelopers Addôn comments', file_kw={ 'hash': 'fakehash', 'is_restart_required': False, 'is_webextension': True, 'platform': amo.PLATFORM_WIN.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type='image/png', name=u'My Addôn', public_stats=True, slug='my-addon', summary=u'My Addôn summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/my-addon/', tags=['some_tag', 'some_other_tag'], total_ratings=666, text_ratings_count=555, version_kw={ 'license': license, 'releasenotes': { 'en-US': u'Release notes in english', 'fr': u'Notes de version en français', }, }, weekly_downloads=2147483647, ) AddonUser.objects.create(user=user_factory(username='******'), addon=self.addon, listed=False) second_author = user_factory( username='******', display_name=u'Secönd Author') first_author = user_factory( username='******', display_name=u'First Authôr') AddonUser.objects.create( user=second_author, addon=self.addon, position=2) AddonUser.objects.create( user=first_author, addon=self.addon, position=1) second_preview = Preview.objects.create( addon=self.addon, position=2, caption={'en-US': u'My câption', 'fr': u'Mön tîtré'}, sizes={'thumbnail': [199, 99], 'image': [567, 780]}) first_preview = Preview.objects.create(addon=self.addon, position=1) av_min = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='2.0.99')[0] av_max = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='3.0.99')[0] ApplicationsVersions.objects.get_or_create( application=amo.THUNDERBIRD.id, version=self.addon.current_version, min=av_min, max=av_max) # Reset current_version.compatible_apps now that we've added an app. del self.addon.current_version._compatible_apps cat2 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['alerts-updates']) cat2.save() AddonCategory.objects.create(addon=self.addon, category=cat2) cat3 = Category.from_static_category( CATEGORIES[amo.THUNDERBIRD.id][amo.ADDON_EXTENSION]['calendar']) cat3.save() AddonCategory.objects.create(addon=self.addon, category=cat3) result = self.serialize() assert result['id'] == self.addon.pk assert result['average_daily_users'] == self.addon.average_daily_users assert result['categories'] == { 'firefox': ['alerts-updates', 'bookmarks'], 'thunderbird': ['calendar']} assert result['current_beta_version'] is None # In this serializer latest_unlisted_version is omitted. assert 'latest_unlisted_version' not in result assert result['current_version'] self._test_version( self.addon.current_version, result['current_version']) assert result['current_version']['url'] == absolutify( reverse('addons.versions', args=[self.addon.slug, self.addon.current_version.version]) ) self._test_version_license_and_release_notes( self.addon.current_version, result['current_version']) assert result['authors'] assert len(result['authors']) == 2 self._test_author(first_author, result['authors'][0]) self._test_author(second_author, result['authors'][1]) assert result['contributions_url'] == self.addon.contributions assert result['edit_url'] == absolutify(self.addon.get_dev_url()) assert result['default_locale'] == self.addon.default_locale assert result['description'] == {'en-US': self.addon.description} assert result['developer_comments'] == { 'en-US': self.addon.developer_comments} assert result['guid'] == self.addon.guid assert result['has_eula'] is False assert result['has_privacy_policy'] is False assert result['homepage'] == { 'en-US': get_outgoing_url(unicode(self.addon.homepage)) } assert result['icon_url'] == absolutify(self.addon.get_icon_url(64)) assert result['is_disabled'] == self.addon.is_disabled assert result['is_experimental'] == self.addon.is_experimental is False assert result['is_featured'] == self.addon.is_featured() is False assert result['is_source_public'] == self.addon.view_source assert result['last_updated'] == ( self.addon.last_updated.replace(microsecond=0).isoformat() + 'Z') assert result['name'] == {'en-US': self.addon.name} assert result['previews'] assert len(result['previews']) == 2 result_preview = result['previews'][0] assert result_preview['id'] == first_preview.pk assert result_preview['caption'] is None assert result_preview['image_url'] == absolutify( first_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( first_preview.thumbnail_url) assert result_preview['image_size'] == first_preview.image_size assert result_preview['thumbnail_size'] == first_preview.thumbnail_size result_preview = result['previews'][1] assert result_preview['id'] == second_preview.pk assert result_preview['caption'] == { 'en-US': u'My câption', 'fr': u'Mön tîtré' } assert result_preview['image_url'] == absolutify( second_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( second_preview.thumbnail_url) assert (result_preview['image_size'] == second_preview.image_size == [567, 780]) assert (result_preview['thumbnail_size'] == second_preview.thumbnail_size == [199, 99]) assert result['ratings'] == { 'average': self.addon.average_rating, 'bayesian_average': self.addon.bayesian_rating, 'count': self.addon.total_ratings, 'text_count': self.addon.text_ratings_count, } assert result['public_stats'] == self.addon.public_stats assert result['requires_payment'] == self.addon.requires_payment assert result['review_url'] == absolutify( reverse('reviewers.review', args=[self.addon.pk])) assert result['slug'] == self.addon.slug assert result['status'] == 'public' assert result['summary'] == {'en-US': self.addon.summary} assert result['support_email'] == {'en-US': self.addon.support_email} assert result['support_url'] == { 'en-US': get_outgoing_url(unicode(self.addon.support_url)) } assert 'theme_data' not in result assert set(result['tags']) == set(['some_tag', 'some_other_tag']) assert result['type'] == 'extension' assert result['url'] == absolutify(self.addon.get_url_path()) assert result['weekly_downloads'] == self.addon.weekly_downloads return result
def setUp(self): super(TestAddonViewSetDetail, self).setUp() self.addon = addon_factory( guid=generate_addon_guid(), name=u'My Addôn', slug='my-addon') self._set_tested_url(self.addon.pk)
def setUp(self): super(TestAddonViewSetDetail, self).setUp() self.addon = addon_factory(guid=generate_addon_guid(), name=u'My Addôn', slug='my-addon') self._set_tested_url(self.addon.pk)
def test_basic(self): self.addon = addon_factory( average_daily_users=4242, average_rating=4.21, description=u'My Addôn description', file_kw={ 'hash': 'fakehash', 'platform': amo.PLATFORM_WIN.id, 'size': 42, }, guid=generate_addon_guid(), homepage=u'https://www.example.org/', icon_type='image/png', name=u'My Addôn', public_stats=True, slug='my-addon', summary=u'My Addôn summary', support_email=u'*****@*****.**', support_url=u'https://support.example.org/support/my-addon/', tags=['some_tag', 'some_other_tag'], total_reviews=666, weekly_downloads=2147483647, ) AddonUser.objects.create(user=user_factory(username='******'), addon=self.addon, listed=False) second_author = user_factory( username='******', display_name=u'Secönd Author') first_author = user_factory( username='******', display_name=u'First Authôr') AddonUser.objects.create( user=second_author, addon=self.addon, position=2) AddonUser.objects.create( user=first_author, addon=self.addon, position=1) second_preview = Preview.objects.create( addon=self.addon, position=2, caption={'en-US': u'My câption', 'fr': u'Mön tîtré'}) first_preview = Preview.objects.create(addon=self.addon, position=1) av_min = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='2.0.99')[0] av_max = AppVersion.objects.get_or_create( application=amo.THUNDERBIRD.id, version='3.0.99')[0] ApplicationsVersions.objects.get_or_create( application=amo.THUNDERBIRD.id, version=self.addon.current_version, min=av_min, max=av_max) # Reset current_version.compatible_apps now that we've added an app. del self.addon.current_version.compatible_apps cat1 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['bookmarks']) cat1.save() AddonCategory.objects.create(addon=self.addon, category=cat1) cat2 = Category.from_static_category( CATEGORIES[amo.FIREFOX.id][amo.ADDON_EXTENSION]['alerts-updates']) cat2.save() AddonCategory.objects.create(addon=self.addon, category=cat2) cat3 = Category.from_static_category( CATEGORIES[amo.THUNDERBIRD.id][amo.ADDON_EXTENSION]['calendar']) cat3.save() AddonCategory.objects.create(addon=self.addon, category=cat3) result = self.serialize() assert result['id'] == self.addon.pk assert result['average_daily_users'] == self.addon.average_daily_users assert result['categories'] == { 'firefox': ['alerts-updates', 'bookmarks'], 'thunderbird': ['calendar']} assert result['current_beta_version'] is None assert result['current_version'] self._test_version( self.addon.current_version, result['current_version']) assert result['authors'] assert len(result['authors']) == 2 assert result['authors'][0] == { 'name': first_author.name, 'url': absolutify(first_author.get_url_path())} assert result['authors'][1] == { 'name': second_author.name, 'url': absolutify(second_author.get_url_path())} assert result['edit_url'] == absolutify(self.addon.get_dev_url()) assert result['default_locale'] == self.addon.default_locale assert result['description'] == {'en-US': self.addon.description} assert result['guid'] == self.addon.guid assert result['has_eula'] is False assert result['has_privacy_policy'] is False assert result['homepage'] == {'en-US': self.addon.homepage} assert result['icon_url'] == absolutify(self.addon.get_icon_url(64)) assert result['is_disabled'] == self.addon.is_disabled assert result['is_experimental'] == self.addon.is_experimental is False assert result['is_listed'] == self.addon.is_listed assert result['is_source_public'] == self.addon.view_source assert result['name'] == {'en-US': self.addon.name} assert result['last_updated'] == self.addon.last_updated.isoformat() assert result['previews'] assert len(result['previews']) == 2 result_preview = result['previews'][0] assert result_preview['id'] == first_preview.pk assert result_preview['caption'] is None assert result_preview['image_url'] == absolutify( first_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( first_preview.thumbnail_url) result_preview = result['previews'][1] assert result_preview['id'] == second_preview.pk assert result_preview['caption'] == { 'en-US': u'My câption', 'fr': u'Mön tîtré' } assert result_preview['image_url'] == absolutify( second_preview.image_url) assert result_preview['thumbnail_url'] == absolutify( second_preview.thumbnail_url) assert result['ratings'] == { 'average': self.addon.average_rating, 'count': self.addon.total_reviews, } assert result['public_stats'] == self.addon.public_stats assert result['review_url'] == absolutify( reverse('editors.review', args=[self.addon.pk])) assert result['slug'] == self.addon.slug assert result['status'] == 'public' assert result['summary'] == {'en-US': self.addon.summary} assert result['support_email'] == {'en-US': self.addon.support_email} assert result['support_url'] == {'en-US': self.addon.support_url} assert 'theme_data' not in result assert set(result['tags']) == set(['some_tag', 'some_other_tag']) assert result['type'] == 'extension' assert result['url'] == absolutify(self.addon.get_url_path()) assert result['weekly_downloads'] == self.addon.weekly_downloads return result