Files
offline-db/users/tests/test_badges_api.py
google-labs-jules[bot] ff22ca9a80 feat(users): add Night Owl badge and User Badges API (#66)
- Added `UserBadgeListAPIView`, `BadgeSerializer`, `UserBadgeSerializer` to expose user badges.
- Added URL path `/api/users/badges/`.
- Added logic for 'Night Owl' badge in `users/services.py` (watching between 2 AM and 5 AM).
- Added data migration `0005_seed_night_owl.py`.
- Added tests for Night Owl logic and API in `users/tests/test_badges.py` and `users/tests/test_badges_api.py`.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2026-01-20 03:10:53 +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-badge-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), 1)
self.assertEqual(response.data[0]['badge']['slug'], 'test-badge')
def test_get_badges_unauthenticated(self):
response = self.client.get(self.url)
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)