Files
Barış Keserandgoogle-labs-jules[bot] e926d77952 test(users): increase badge system coverage to 99% (#359)
- Add comprehensive tests to `users/tests/test_badge_system_remaining.py` to cover all code branches in `ReviewBadgeStrategy`, `WatchTimeBadgeStrategy`, `AccountBadgeStrategy`, `CommunityBadgeStrategy`, `ConsistencyBadgeStrategy`, `ConsumptionBadgeStrategy`, `CompletionBadgeStrategy`, `GenreBadgeStrategy`, and `SpecificGenreBadgeStrategy`.
- Address cache hits, cache misses, and badge award validations.
- Fix broken URL reversal in `users/tests/test_badges_api.py` (`user-badge-list` -> `user-badges-list`).
- Update assertion logic in `users/tests/test_badges_api.py` to parse paginated `results` correctly.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-07-16 20:51:09 +00:00

29 lines
1.1 KiB
Python

from django.urls import reverse
from rest_framework import status
from rest_framework.test import APITestCase
from users.models import User, Badge, UserBadge
class BadgeAPITests(APITestCase):
def setUp(self):
self.user = User.objects.create_user(username='testuser', password='password')
self.badge = Badge.objects.create(
slug='test-badge',
name='Test Badge',
description='A test badge'
)
self.url = reverse('user-badges-list')
def test_get_badges_authenticated(self):
self.client.force_authenticate(user=self.user)
# Award badge
UserBadge.objects.create(user=self.user, badge=self.badge)
response = self.client.get(self.url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(len(response.data['results']), 1)
self.assertEqual(response.data['results'][0]['badge']['slug'], 'test-badge')
def test_get_badges_unauthenticated(self):
response = self.client.get(self.url)
self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED)