diff --git a/backend/dashboard/tests.py b/backend/dashboard/tests.py index 7ce503c..359baea 100644 --- a/backend/dashboard/tests.py +++ b/backend/dashboard/tests.py @@ -1,3 +1,72 @@ +# tasks/tests.py from django.test import TestCase +from django.contrib.auth.models import User +from django.utils import timezone +from rest_framework.test import APIClient +from tasks.models import Todo, RecurrenceTask -# Create your tests here. +class DashboardStatsAPITestCase(TestCase): + def setUp(self): + # Create a test user + self.user = User.objects.create_user(username='testuser', password='testpassword') + + # Create test tasks + self.todo = Todo.objects.create(user=self.user, title='Test Todo', created_at=timezone.now()) + self.recurrence_task = RecurrenceTask.objects.create(user=self.user, title='Test Recurrence Task', created_at=timezone.now()) + + # Create an API client + self.client = APIClient() + + def test_dashboard_stats_api(self): + # Authenticate the user + self.client.force_authenticate(user=self.user) + + # Make a GET request to the DashboardStatsAPIView + response = self.client.get('/api/dashboard-stats/') + + # Assert the response status code is 200 + self.assertEqual(response.status_code, 200) + + # Add more assertions based on your expected response data + + def test_task_completion_status_update(self): + # Authenticate the user + self.client.force_authenticate(user=self.user) + + # Make a POST request to update the completion status of a task + data = {'task_id': self.todo.id, 'is_completed': True} + response = self.client.post('/api/dashboard-stats/', data, format='json') + + # Assert the response status code is 200 + self.assertEqual(response.status_code, 200) + + # Assert the message in the response + self.assertEqual(response.data['message'], 'Task completion status updated successfully') + + # Refresh the todo instance from the database and assert the completion status + self.todo.refresh_from_db() + self.assertTrue(self.todo.completed) + + # Add more assertions based on your expected response data + +class WeeklyStatsAPITestCase(TestCase): + def setUp(self): + # Create a test user + self.user = User.objects.create_user(username='testuser', password='testpassword') + + # Create an API client + self.client = APIClient() + + def test_weekly_stats_api(self): + # Authenticate the user + self.client.force_authenticate(user=self.user) + + # Make a GET request to the WeeklyStatsAPIView + response = self.client.get('/api/weekly-stats/') + + # Assert the response status code is 200 + self.assertEqual(response.status_code, 200) + + # Add more assertions based on your expected response data + +# Add more test cases as needed