예제 #1
0
    def test_get_leaderboards(self):
        user2 = UserProfile.objects.get(email='*****@*****.**')
        self._give_points()
        self._give_points(status=amo.STATUS_LITE)
        self._give_points(user=user2, status=amo.STATUS_NOMINATED)
        leaders = ReviewerScore.get_leaderboards(self.user)
        eq_(leaders['user_rank'], 1)
        eq_(leaders['leader_near'], [])
        eq_(leaders['leader_top'][0]['rank'], 1)
        eq_(leaders['leader_top'][0]['user_id'], self.user.id)
        eq_(
            leaders['leader_top'][0]['total'],
            amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] +
            amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM])
        eq_(leaders['leader_top'][1]['rank'], 2)
        eq_(leaders['leader_top'][1]['user_id'], user2.id)
        eq_(leaders['leader_top'][1]['total'],
            amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL])

        self._give_points(
            user=user2, addon=amo.tests.addon_factory(type=amo.ADDON_PERSONA))
        leaders = ReviewerScore.get_leaderboards(self.user,
                                                 addon_type=amo.ADDON_PERSONA)
        eq_(len(leaders['leader_top']), 1)
        eq_(leaders['leader_top'][0]['user_id'], user2.id)
예제 #2
0
 def test_no_amo_points_in_marketplace_leaderboards(self):
     user2 = UserProfile.objects.get(email="*****@*****.**")
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user, types=amo.REVIEWED_MARKETPLACE)
     eq_(leaders["leader_top"][0]["total"], amo.REVIEWED_SCORES[amo.REVIEWED_WEBAPP_HOSTED])
예제 #3
0
def reviewers_score_bar(context):
    user = context.get('amo_user')

    return new_context(dict(
        amo=amo,
        points=ReviewerScore.get_recent(user),
        total=ReviewerScore.get_total(user),
        **ReviewerScore.get_leaderboards(user)))
예제 #4
0
 def test_no_amo_points_in_marketplace_leaderboards(self):
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(
         self.user, types=amo.REVIEWED_MARKETPLACE)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_WEBAPP_HOSTED])
예제 #5
0
 def test_no_amo_points_in_marketplace_leaderboards(self):
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(
         self.user, types=amo.REVIEWED_MARKETPLACE)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_WEBAPP_HOSTED])
예제 #6
0
def reviewers_score_bar(context):
    user = context.get('amo_user')

    return new_context(dict(
        amo=amo,
        points=ReviewerScore.get_recent(user),
        total=ReviewerScore.get_total(user),
        **ReviewerScore.get_leaderboards(user)))
예제 #7
0
 def test_no_amo_points_in_marketplace_leaderboards(self):
     user2 = UserProfile.objects.get(email='*****@*****.**')
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(
         self.user, types=amo.REVIEWED_MARKETPLACE)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_WEBAPP_HOSTED])
예제 #8
0
 def test_no_marketplace_points_in_amo_leaderboards(self):
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user,
                                              types=amo.REVIEWED_AMO)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] +
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM])
예제 #9
0
 def test_no_marketplace_points_in_amo_leaderboards(self):
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(addon=self.app, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user,
                                              types=amo.REVIEWED_AMO)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] +
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM])
예제 #10
0
def reviewers_score_bar(context, types=None):
    user = context.get('amo_user')

    return new_context(dict(
        request=context.get('request'),
        amo=amo, settings=settings,
        points=ReviewerScore.get_recent(user),
        total=ReviewerScore.get_total(user),
        **ReviewerScore.get_leaderboards(user, types=types)))
예제 #11
0
def reviewers_score_bar(context, types=None):
    user = context.get('amo_user')

    return new_context(
        dict(request=context.get('request'),
             amo=amo,
             settings=settings,
             points=ReviewerScore.get_recent(user),
             total=ReviewerScore.get_total(user),
             **ReviewerScore.get_leaderboards(user, types=types)))
예제 #12
0
 def test_no_admins_or_staff_in_leaderboards(self):
     user2 = UserProfile.objects.get(email='*****@*****.**')
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(user=user2, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user)
     eq_(leaders['user_rank'], 1)
     eq_(leaders['leader_near'], [])
     eq_(leaders['leader_top'][0]['user_id'], self.user.id)
     eq_(len(leaders['leader_top']), 1)  # Only the editor is here.
     assert user2.id not in [l['user_id'] for l in leaders['leader_top']], (
         'Unexpected admin user found in leaderboards.')
예제 #13
0
 def test_no_admins_or_staff_in_leaderboards(self):
     user2 = UserProfile.objects.get(email='*****@*****.**')
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(user=user2, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user)
     eq_(leaders['user_rank'], 1)
     eq_(leaders['leader_near'], [])
     eq_(leaders['leader_top'][0]['user_id'], self.user.id)
     eq_(len(leaders['leader_top']), 1)  # Only the editor is here.
     assert user2.id not in [l['user_id'] for l in leaders['leader_top']], (
         'Unexpected admin user found in leaderboards.')
예제 #14
0
    def test_caching(self):
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_total(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_recent(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_leaderboards(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_breakdown(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_breakdown(self.user)

        # New points invalidates all caches.
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_breakdown(self.user)
예제 #15
0
    def test_caching(self):
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_total(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_recent(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_leaderboards(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_breakdown(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_breakdown(self.user)

        # New points invalidates all caches.
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_breakdown(self.user)
예제 #16
0
    def test_caching(self):
        waffle.models.Switch.objects.create(name='reviewer-incentive-points',
                                            active=True)
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_total(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_recent(self.user)

        with self.assertNumQueries(2):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_leaderboards(self.user)

        # New points invalidates all caches.
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(2):
            ReviewerScore.get_leaderboards(self.user)
예제 #17
0
    def test_caching(self):
        waffle.models.Switch.objects.create(name='reviewer-incentive-points',
                                            active=True)
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_total(self.user)

        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_recent(self.user)

        with self.assertNumQueries(2):
            ReviewerScore.get_leaderboards(self.user)
        with self.assertNumQueries(0):
            ReviewerScore.get_leaderboards(self.user)

        # New points invalidates all caches.
        self._give_points()

        with self.assertNumQueries(1):
            ReviewerScore.get_total(self.user)
        with self.assertNumQueries(1):
            ReviewerScore.get_recent(self.user)
        with self.assertNumQueries(2):
            ReviewerScore.get_leaderboards(self.user)
예제 #18
0
 def test_get_leaderboards_last(self):
     waffle.models.Switch.objects.create(name='reviewer-incentive-points',
                                         active=True)
     users = list(UserProfile.objects.all())
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by reviewing a persona.
     self._give_points(user=last_user, event=amo.REVIEWED_PERSONA)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
예제 #19
0
파일: helpers.py 프로젝트: KKcorps/zamboni
def reviewers_score_bar(context, types=None, addon_type=None):
    user = context.get("amo_user")

    return new_context(
        dict(
            request=context.get("request"),
            amo=amo,
            settings=settings,
            points=ReviewerScore.get_recent(user, addon_type=addon_type),
            total=ReviewerScore.get_total(user),
            **ReviewerScore.get_leaderboards(user, types=types, addon_type=addon_type)
        )
    )
예제 #20
0
    def test_get_leaderboards(self):
        user2 = UserProfile.objects.get(email="*****@*****.**")
        self._give_points()
        self._give_points(status=amo.STATUS_LITE)
        self._give_points(user=user2, status=amo.STATUS_NOMINATED)
        leaders = ReviewerScore.get_leaderboards(self.user)
        eq_(leaders["user_rank"], 1)
        eq_(leaders["leader_near"], [])
        eq_(leaders["leader_top"][0]["rank"], 1)
        eq_(leaders["leader_top"][0]["user_id"], self.user.id)
        eq_(
            leaders["leader_top"][0]["total"],
            amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] + amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM],
        )
        eq_(leaders["leader_top"][1]["rank"], 2)
        eq_(leaders["leader_top"][1]["user_id"], user2.id)
        eq_(leaders["leader_top"][1]["total"], amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL])

        self._give_points(user=user2, addon=amo.tests.addon_factory(type=amo.ADDON_PERSONA))
        leaders = ReviewerScore.get_leaderboards(self.user, addon_type=amo.ADDON_PERSONA)
        eq_(len(leaders["leader_top"]), 1)
        eq_(leaders["leader_top"][0]["user_id"], user2.id)
예제 #21
0
 def test_get_leaderboards_last(self):
     users = list(UserProfile.objects.all())
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by reviewing a persona.
     addon = self.addon
     addon.type = amo.ADDON_PERSONA
     self._give_points(user=last_user, addon=addon)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
예제 #22
0
 def test_get_leaderboards_last(self):
     waffle.models.Switch.objects.create(name='reviewer-incentive-points',
                                         active=True)
     users = list(UserProfile.objects.all())
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by reviewing a persona.
     self._give_points(user=last_user, event=amo.REVIEWED_PERSONA)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
예제 #23
0
 def test_get_leaderboards_last(self):
     users = []
     for i in range(6):
         users.append(UserProfile.objects.create(username="******" % i))
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by reviewing a persona.
     addon = self.addon
     addon.type = amo.ADDON_PERSONA
     self._give_points(user=last_user, addon=addon)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders["user_rank"], 6)
     eq_(len(leaders["leader_top"]), 3)
     eq_(len(leaders["leader_near"]), 2)
예제 #24
0
 def test_get_leaderboards_last(self):
     users = []
     for i in range(6):
         users.append(UserProfile.objects.create(username='******' % i))
     last_user = users.pop(len(users) - 1)
     for u in users:
         self._give_points(user=u)
     # Last user gets lower points by reviewing a persona.
     addon = self.addon
     addon.type = amo.ADDON_PERSONA
     self._give_points(user=last_user, addon=addon)
     leaders = ReviewerScore.get_leaderboards(last_user)
     eq_(leaders['user_rank'], 6)
     eq_(len(leaders['leader_top']), 3)
     eq_(len(leaders['leader_near']), 2)
예제 #25
0
 def test_get_leaderboards(self):
     user2 = UserProfile.objects.get(email='*****@*****.**')
     self._give_points()
     self._give_points(status=amo.STATUS_LITE)
     self._give_points(user=user2, status=amo.STATUS_NOMINATED)
     leaders = ReviewerScore.get_leaderboards(self.user)
     eq_(leaders['user_rank'], 1)
     eq_(leaders['leader_near'], [])
     eq_(leaders['leader_top'][0]['rank'], 1)
     eq_(leaders['leader_top'][0]['user_id'], self.user.id)
     eq_(leaders['leader_top'][0]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] +
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM])
     eq_(leaders['leader_top'][1]['rank'], 2)
     eq_(leaders['leader_top'][1]['user_id'], user2.id)
     eq_(leaders['leader_top'][1]['total'],
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL])
예제 #26
0
 def test_get_leaderboards(self):
     waffle.models.Switch.objects.create(name='reviewer-incentive-points',
                                         active=True)
     user2 = UserProfile.objects.get(email='*****@*****.**')
     self._give_points()
     self._give_points(event=amo.REVIEWED_ADDON_PRELIM)
     self._give_points(user=user2)
     leaders = ReviewerScore.get_leaderboards(self.user)
     eq_(leaders['user_rank'], 1)
     eq_(leaders['leader_near'], [])
     eq_(leaders['leader_top'][0].rank, 1)
     eq_(leaders['leader_top'][0].user, self.user)
     eq_(leaders['leader_top'][0].total,
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] +
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM])
     eq_(leaders['leader_top'][1].rank, 2)
     eq_(leaders['leader_top'][1].user, user2)
     eq_(leaders['leader_top'][1].total,
         amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL])