Пример #1
0
    def test_mix_pending_flagged_data_id(self):
        """
        Case where reviewer holds locks for both pending and flagged themes.
        Calculating theme_lock_count on themes_more should be correct.
        """
        reviewer = self.create_and_become_reviewer()

        # Check out pending themes.
        addon_factory(type=amo.ADDON_PERSONA, status=amo.STATUS_PENDING)
        req = self.req_factory_factory(reviewer,
                                       'reviewers.themes.queue_themes')
        _get_themes(req, req.user.get_profile(), initial=True)

        # Check out flagged themes.
        for x in range(rvw.THEME_INITIAL_LOCKS + 1):
            addon_factory(type=amo.ADDON_PERSONA,
                          status=amo.STATUS_REVIEW_PENDING)
        req = self.req_factory_factory(reviewer,
                                       'reviewers.themes.queue_flagged')
        _get_themes(req, req.user.get_profile(), initial=True, flagged=True)

        # Get more flagged themes.
        req = self.req_factory_factory(reviewer,
                                       'reviewers.themes.more_flagged')
        res = themes_more(req, flagged=True)
        themes = pq(json.loads(res.content)['html'])('.theme')
        eq_(pq(themes[0]).attr('data-id'), '2')
Пример #2
0
 def test_themes_less_than_initial(self):
     """
     Number of themes in the pool is less than amount we want to check out.
     """
     addon_factory(type=amo.ADDON_PERSONA, status=self.status)
     reviewer = self.create_and_become_reviewer()
     eq_(len(_get_themes(mock.Mock(), reviewer)), 1)
     eq_(len(_get_themes(mock.Mock(), reviewer)), 1)
Пример #3
0
 def test_themes_less_than_initial(self):
     """
     Number of themes in the pool is less than amount we want to check out.
     """
     addon_factory(type=amo.ADDON_PERSONA, status=self.status)
     reviewer = self.create_and_become_reviewer()
     eq_(len(_get_themes(mock.Mock(), reviewer)), 1)
     eq_(len(_get_themes(mock.Mock(), reviewer)), 1)
Пример #4
0
    def test_expiry_update(self):
        """Test expiry is updated when reviewer reloads his queue."""
        addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer, initial=True, flagged=self.flagged)

        earlier = datetime.datetime.now() - datetime.timedelta(minutes=10)
        ThemeLock.objects.filter(reviewer=reviewer).update(expiry=earlier)
        _get_themes(mock.Mock(), reviewer, initial=True, flagged=self.flagged)
        eq_(ThemeLock.objects.filter(reviewer=reviewer)[0].expiry > earlier, True)
Пример #5
0
    def test_expiry_update(self):
        """Test expiry is updated when reviewer reloads his queue."""
        self.theme_factory()
        reviewer = self.create_and_become_reviewer()
        self.get_themes(reviewer)

        ThemeLock.objects.filter(reviewer=reviewer).update(expiry=days_ago(1))
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)
        self.get_themes(reviewer)
        eq_(ThemeLock.objects.filter(reviewer=reviewer)[0].expiry > days_ago(1), True)
Пример #6
0
    def test_expiry_update(self):
        """Test expiry is updated when reviewer reloads his queue."""
        addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)

        ThemeLock.objects.filter(reviewer=reviewer).update(expiry=days_ago(1))
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)
        eq_(ThemeLock.objects.filter(reviewer=reviewer)[0].expiry >
            days_ago(1), True)
Пример #7
0
    def test_expiry_update(self):
        """Test expiry is updated when reviewer reloads his queue."""
        self.theme_factory()
        reviewer = self.create_and_become_reviewer()
        self.get_themes(reviewer)

        ThemeLock.objects.filter(reviewer=reviewer).update(expiry=days_ago(1))
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)
        self.get_themes(reviewer)
        eq_(ThemeLock.objects.filter(reviewer=reviewer)[0].expiry >
            days_ago(1), True)
Пример #8
0
    def test_top_off(self):
        """If reviewer has fewer than max locks, get more from pool."""
        for x in range(2):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer, initial=True, flagged=self.flagged)
        ThemeLock.objects.filter(reviewer=reviewer)[0].delete()
        _get_themes(mock.Mock(), reviewer, initial=True, flagged=self.flagged)

        # Check reviewer checked out the themes.
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), rvw.THEME_INITIAL_LOCKS)
Пример #9
0
    def test_release_locks(self):
        for x in range(2):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        other_reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), other_reviewer)

        # Check reviewer's theme lock released.
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer)
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 1)
        self.client.get(reverse('reviewers.themes.release_locks'))
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 0)

        # Check other reviewer's theme lock intact.
        eq_(ThemeLock.objects.filter(reviewer=other_reviewer).count(), 1)
Пример #10
0
    def test_release_locks(self):
        for x in range(2):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        other_reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), other_reviewer)

        # Check reviewer's theme lock released.
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer)
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 1)
        self.client.get(reverse('reviewers.themes.release_locks'))
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 0)

        # Check other reviewer's theme lock intact.
        eq_(ThemeLock.objects.filter(reviewer=other_reviewer).count(), 1)
Пример #11
0
    def test_queue_cannot_review_own_theme(self):
        with self.settings(ALLOW_SELF_REVIEWS=False):
            reviewer = self.create_and_become_reviewer()

            for x in range(rvw.THEME_INITIAL_LOCKS + 1):
                addon = self.theme_factory()
                addon.addonuser_set.create(user=reviewer)
            eq_(_get_themes(amo.tests.req_factory_factory("", reviewer), reviewer), [])
            eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 0)
Пример #12
0
    def test_queue_cannot_review_own_theme(self):
        with self.settings(ALLOW_SELF_REVIEWS=False):
            reviewer = self.create_and_become_reviewer()

            for x in range(rvw.THEME_INITIAL_LOCKS + 1):
                addon = self.theme_factory()
                addon.addonuser_set.create(user=reviewer)
            eq_(_get_themes(amo.tests.req_factory_factory('', reviewer),
                            reviewer), [])
            eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 0)
Пример #13
0
    def themes_more_helper(self):
        for x in range(rvw.THEME_INITIAL_LOCKS * 2):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)

        reviewer = self.create_and_become_reviewer()
        req = self.req_factory_factory(reviewer, "reviewers.themes.more")

        themes = _get_themes(req, req.user.get_profile(), initial=True, flagged=self.flagged)
        eq_(len(themes), 2)

        return req, themes
Пример #14
0
    def test_basic_queue(self):
        """
        Have reviewers take themes from the pool,
        check their queue sizes.
        """
        for x in range(rvw.THEME_INITIAL_LOCKS + 1):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)

        themes = Persona.objects.all()
        expected_themes = [[themes[0], themes[1]], [themes[2]], []]

        for expected in expected_themes:
            reviewer = self.create_and_become_reviewer()
            eq_(_get_themes(mock.Mock(), reviewer, initial=False, flagged=self.flagged), expected)
            eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), len(expected))
Пример #15
0
    def test_more(self):
        """
        Test number of themes checked out when asking for more
        asynchronously.
        """
        for x in range(rvw.THEME_INITIAL_LOCKS + 1):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)

        themes = Persona.objects.all()
        expected_themes = [[themes[0], themes[1]], [themes[2]], []]

        reviewer = self.create_and_become_reviewer()
        for expected in expected_themes:
            actual = _get_themes(mock.Mock(), reviewer, initial=False, flagged=self.flagged)
            eq_(actual, expected)
Пример #16
0
    def test_expiry(self):
        """
        Test that reviewers who want themes from an empty pool can steal
        checked-out themes from other reviewers whose locks have expired.
        """
        for x in range(2):
            addon_factory(type=amo.ADDON_PERSONA, status=self.status)
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)

        # Reviewer wants themes, but empty pool.
        reviewer = self.create_and_become_reviewer()
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 0)

        # Manually expire a lock and see if it's reassigned.
        expired_theme_lock = ThemeLock.objects.all()[0]
        expired_theme_lock.expiry = self.days_ago(1)
        expired_theme_lock.save()
        _get_themes(mock.Mock(), reviewer, flagged=self.flagged)
        eq_(ThemeLock.objects.filter(reviewer=reviewer).count(), 1)
Пример #17
0
 def get_themes(self, reviewer):
     return _get_themes(mock.Mock(), reviewer, flagged=self.flagged,
                        rereview=self.rereview)
Пример #18
0
 def get_themes(self, reviewer):
     return _get_themes(mock.Mock(),
                        reviewer,
                        flagged=self.flagged,
                        rereview=self.rereview)