mirror of
https://github.com/barkeser2002/offline-db.git
synced 2026-09-25 07:19:53 +03:00
- 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>
29 lines
1.1 KiB
Python
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)
|