diff --git a/backend/dashboard/tests.py b/backend/dashboard/tests.py index 345fc13..943c3de 100644 --- a/backend/dashboard/tests.py +++ b/backend/dashboard/tests.py @@ -1,10 +1,47 @@ -# # tasks/tests.py -# from django.test import TestCase -# from django.utils import timezone -# from rest_framework.test import APIClient -# from tasks.models import Todo, RecurrenceTask -# from tasks.tests.utils import create_test_user -# from django.urls import reverse +from django.test import TestCase +from django.urls import reverse +from tasks.models import Todo +from django.utils import timezone +from datetime import timedelta + +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): # def setUp(self): diff --git a/backend/dashboard/urls.py b/backend/dashboard/urls.py index 73429b5..56624ca 100644 --- a/backend/dashboard/urls.py +++ b/backend/dashboard/urls.py @@ -1,9 +1,11 @@ -from django.urls import path +from django.urls import path, include from rest_framework.routers import DefaultRouter from .views import DashboardStatsViewSet, DashboardWeeklyViewSet router = DefaultRouter() -router.register(r'dashboard/stats', DashboardStatsViewSet, basename='dashboard-stats') -router.register(r'dashboard/weekly', DashboardWeeklyViewSet, basename='dashboard-weekly') -urlpatterns = router.urls +router.register(r'dashboard/stats', DashboardStatsViewSet, basename='stats') +router.register(r'dashboard/weekly', DashboardWeeklyViewSet, basename='weekly') +urlpatterns = [ + path('', include(router.urls)), +] diff --git a/backend/dashboard/views.py b/backend/dashboard/views.py index c91f5f9..abe0576 100644 --- a/backend/dashboard/views.py +++ b/backend/dashboard/views.py @@ -9,7 +9,10 @@ from tasks.models import Todo 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): user = self.request.user @@ -78,7 +81,10 @@ class DashboardStatsViewSet(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): user = self.request.user