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 reviewers_score_bar(context, types=None, addon_type=None): user = context.get('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_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) assert leaders['user_rank'] == 1 assert leaders['leader_near'] == [] assert leaders['leader_top'][0]['user_id'] == self.user.id assert 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_no_admins_or_staff_in_leaderboards(self): user2 = UserProfile.objects.get(email='*****@*****.**') self._give_points() self._give_points(status=amo.STATUS_PUBLIC) self._give_points(user=user2, status=amo.STATUS_NOMINATED) leaders = ReviewerScore.get_leaderboards(self.user) assert leaders['user_rank'] == 1 assert leaders['leader_near'] == [] assert leaders['leader_top'][0]['user_id'] == self.user.id assert 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_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) assert leaders['user_rank'] == 6 assert len(leaders['leader_top']) == 3 assert 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) assert leaders['user_rank'] == 1 assert leaders['leader_near'] == [] assert leaders['leader_top'][0]['rank'] == 1 assert leaders['leader_top'][0]['user_id'] == self.user.id assert leaders['leader_top'][0]['total'] == ( amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] + amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_PRELIM]) assert leaders['leader_top'][1]['rank'] == 2 assert leaders['leader_top'][1]['user_id'] == user2.id assert 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) assert len(leaders['leader_top']) == 1 assert leaders['leader_top'][0]['user_id'] == user2.id
def test_get_leaderboards(self): user2 = UserProfile.objects.get(email='*****@*****.**') self._give_points() self._give_points(status=amo.STATUS_PUBLIC) self._give_points(user=user2, status=amo.STATUS_NOMINATED) leaders = ReviewerScore.get_leaderboards(self.user) assert leaders['user_rank'] == 1 assert leaders['leader_near'] == [] assert leaders['leader_top'][0]['rank'] == 1 assert leaders['leader_top'][0]['user_id'] == self.user.id assert leaders['leader_top'][0]['total'] == ( amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_FULL] + amo.REVIEWED_SCORES[amo.REVIEWED_ADDON_UPDATE]) assert leaders['leader_top'][1]['rank'] == 2 assert leaders['leader_top'][1]['user_id'] == user2.id assert 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) assert len(leaders['leader_top']) == 1 assert leaders['leader_top'][0]['user_id'] == user2.id