TurTaskWeb/backend/dashboard/tests.py
2023-11-26 11:51:33 +07:00

47 lines
1.8 KiB
Python

from rest_framework.test import APITestCase
from django.urls import reverse
from tasks.models import Todo
from django.utils import timezone
from datetime import timedelta
from boards.models import Board
from tasks.tests.utils import create_test_user
class DashboardStatsAndWeeklyViewSetTests(APITestCase):
def setUp(self):
self.user = create_test_user()
self.client.force_authenticate(user=self.user)
self.list_board = Board.objects.get(user=self.user).listboard_set.first()
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,
list_board=self.list_board
)
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('statstodo-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)