示例#1
0
 def test_basic(self):
     user_with_themes = user_factory()
     user_with_extensions = user_factory()
     user_with_both = user_factory()
     user_factory(is_public=True)  # marked as public, but no addons.
     extension = addon_factory(users=(user_with_extensions, user_with_both))
     theme = addon_factory(
         type=amo.ADDON_STATICTHEME, users=(user_with_themes, user_with_both)
     )
     sitemap = AccountSitemap()
     items = list(sitemap.items())
     assert items == [
         (theme.last_updated, user_with_both.id, 1, 1),
         (theme.last_updated, user_with_themes.id, 1, 1),
         (extension.last_updated, user_with_extensions.id, 1, 1),
     ]
     for item in sitemap.items():
         assert sitemap.location(item) == reverse('users.profile', args=[item.id])
def test_accounts_sitemap():
    user_with_themes = user_factory()
    user_with_extensions = user_factory()
    user_with_both = user_factory()
    user_factory()  # no addons
    extension = addon_factory(users=(user_with_extensions, user_with_both))
    theme = addon_factory(type=amo.ADDON_STATICTHEME,
                          users=(user_with_themes, user_with_both))
    sitemap = AccountSitemap()
    items = list(sitemap.items())
    assert items == [
        (theme.last_updated, user_with_both.id, 1, 1),
        (theme.last_updated, user_with_themes.id, 1, 1),
        (extension.last_updated, user_with_extensions.id, 1, 1),
    ]
    for item in sitemap.items():
        assert sitemap.location(item) == reverse('users.profile',
                                                 args=[item.id])
    # add some extra extensions and themes to test pagination
    extra_extension_a = addon_factory(users=(user_with_extensions,
                                             user_with_both))
    extra_extension_b = addon_factory(users=(user_with_extensions,
                                             user_with_both))
    extra_theme_a = addon_factory(type=amo.ADDON_STATICTHEME,
                                  users=(user_with_themes, user_with_both))
    extra_theme_b = addon_factory(type=amo.ADDON_STATICTHEME,
                                  users=(user_with_themes, user_with_both))
    extra_theme_c = addon_factory(type=amo.ADDON_STATICTHEME,
                                  users=(user_with_themes, user_with_both))
    with mock.patch('olympia.amo.sitemap.EXTENSIONS_BY_AUTHORS_PAGE_SIZE',
                    2), mock.patch(
                        'olympia.amo.sitemap.THEMES_BY_AUTHORS_PAGE_SIZE', 3):
        sitemap = AccountSitemap()
        paginated_items = list(sitemap.items())
    assert paginated_items == [
        (extra_theme_c.last_updated, user_with_both.id, 1, 1),
        (extra_theme_c.last_updated, user_with_both.id, 2, 1),
        (extra_theme_c.last_updated, user_with_both.id, 1, 2),
        (extra_theme_c.last_updated, user_with_themes.id, 1, 1),
        (extra_theme_c.last_updated, user_with_themes.id, 1, 2),
        (extra_extension_b.last_updated, user_with_extensions.id, 1, 1),
        (extra_extension_b.last_updated, user_with_extensions.id, 2, 1),
    ]
    # repeat, but after changing some of the addons so they wouldn't be visible
    with mock.patch('olympia.amo.sitemap.EXTENSIONS_BY_AUTHORS_PAGE_SIZE',
                    2), mock.patch(
                        'olympia.amo.sitemap.THEMES_BY_AUTHORS_PAGE_SIZE', 3):
        extra_theme_a.update(status=amo.STATUS_NOMINATED)
        sitemap = AccountSitemap()
        assert list(sitemap.items()) == [
            # now only one page of themes for both users
            (extra_theme_c.last_updated, user_with_both.id, 1, 1),
            (extra_theme_c.last_updated, user_with_both.id, 2, 1),
            (extra_theme_c.last_updated, user_with_themes.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 2, 1),
        ]
        user_with_both.addonuser_set.filter(addon=extra_extension_a).update(
            listed=False)
        assert list(sitemap.items()) == [
            (extra_theme_c.last_updated, user_with_both.id, 1, 1),
            (extra_theme_c.last_updated, user_with_themes.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 1, 1),
            # user_with_extensions still has 2 pages of extensions though
            (extra_extension_b.last_updated, user_with_extensions.id, 2, 1),
        ]
        extra_theme_c.delete()
        assert list(sitemap.items()) == [
            # the date used for lastmod has changed
            (extra_theme_b.last_updated, user_with_both.id, 1, 1),
            (extra_theme_b.last_updated, user_with_themes.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 1, 1),
            # user_with_extensions still has 2 pages of extensions though
            (extra_extension_b.last_updated, user_with_extensions.id, 2, 1),
        ]
        # and check that deleting roles works too
        user_with_both.addonuser_set.filter(addon=extra_theme_b).update(
            role=amo.AUTHOR_ROLE_DELETED)
        assert list(sitemap.items()) == [
            # the date used for lastmod has changed, and the order too
            (extra_theme_b.last_updated, user_with_themes.id, 1, 1),
            (extra_extension_b.last_updated, user_with_both.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 1, 1),
            (extra_extension_b.last_updated, user_with_extensions.id, 2, 1),
        ]