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)
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])
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)))
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])
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])
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])
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)))
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)))
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.')
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)
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)
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)
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) ) )
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)
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)
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)
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)
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])
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])