Add test for dashboard stats

This commit is contained in:
sosokker 2023-11-20 22:57:46 +07:00
parent 6c31fb059f
commit c18275eeb8
3 changed files with 58 additions and 13 deletions

View File

@ -1,10 +1,47 @@
# # tasks/tests.py from django.test import TestCase
# from django.test import TestCase from django.urls import reverse
# from django.utils import timezone from tasks.models import Todo
# from rest_framework.test import APIClient from django.utils import timezone
# from tasks.models import Todo, RecurrenceTask from datetime import timedelta
# from tasks.tests.utils import create_test_user
# from django.urls import reverse from tasks.tests.utils import create_test_user, login_user
class DashboardStatsAndWeeklyViewSetTests(TestCase):
def setUp(self):
self.user = create_test_user()
self.client = login_user(self.user)
def create_task(self, title, completed=False, completion_date=None, end_event=None):
return Todo.objects.create(
user=self.user,
title=title,
completed=completed,
completion_date=completion_date,
end_event=end_event
)
def test_dashboard_stats_view(self):
# Create tasks for testing
self.create_task('Task 1', completed=True)
self.create_task('Task 2', end_event=timezone.now() - timedelta(days=8))
self.create_task('Task 3', end_event=timezone.now())
response = self.client.get(reverse('stats-list'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data['completed_this_week'], 1)
self.assertEqual(response.data['tasks_assigned_this_week'], 1)
self.assertEqual(response.data['tasks_assigned_last_week'], 0)
def test_dashboard_weekly_view(self):
# Create tasks for testing
self.create_task('Task 1', completion_date=timezone.now() - timedelta(days=1))
self.create_task('Task 2', end_event=timezone.now() - timedelta(days=8))
self.create_task('Task 3', end_event=timezone.now())
response = self.client.get(reverse('weekly-list'))
self.assertEqual(response.status_code, 200)
# class DashboardStatsAPITestCase(TestCase): # class DashboardStatsAPITestCase(TestCase):
# def setUp(self): # def setUp(self):

View File

@ -1,9 +1,11 @@
from django.urls import path from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from .views import DashboardStatsViewSet, DashboardWeeklyViewSet from .views import DashboardStatsViewSet, DashboardWeeklyViewSet
router = DefaultRouter() router = DefaultRouter()
router.register(r'dashboard/stats', DashboardStatsViewSet, basename='dashboard-stats') router.register(r'dashboard/stats', DashboardStatsViewSet, basename='stats')
router.register(r'dashboard/weekly', DashboardWeeklyViewSet, basename='dashboard-weekly') router.register(r'dashboard/weekly', DashboardWeeklyViewSet, basename='weekly')
urlpatterns = router.urls urlpatterns = [
path('', include(router.urls)),
]

View File

@ -9,7 +9,10 @@ from tasks.models import Todo
class DashboardStatsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): class DashboardStatsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin):
permission_classes = [IsAuthenticated] permission_classes = (IsAuthenticated,)
def get_queryset(self):
return Todo.objects.all()
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
user = self.request.user user = self.request.user
@ -78,7 +81,10 @@ class DashboardStatsViewSet(viewsets.GenericViewSet, mixins.ListModelMixin):
class DashboardWeeklyViewSet(viewsets.GenericViewSet, mixins.ListModelMixin): class DashboardWeeklyViewSet(viewsets.GenericViewSet, mixins.ListModelMixin):
permission_classes = [IsAuthenticated] permission_classes = (IsAuthenticated,)
def get_queryset(self):
return Todo.objects.all()
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
user = self.request.user user = self.request.user