test: rename task_app tests, create test_serializers.py with initial tests
This commit is contained in:
parent
650d81f809
commit
76d1aa9425
4 changed files with 91 additions and 10 deletions
|
|
@ -18,7 +18,7 @@ class TaskSerializer(serializers.ModelSerializer):
|
||||||
subtasks = SubTaskSerializer(many=True, read_only=True)
|
subtasks = SubTaskSerializer(many=True, read_only=True)
|
||||||
|
|
||||||
def get_assignees(self, obj):
|
def get_assignees(self, obj):
|
||||||
return obj.assigned_tasks.all().values('user_id')
|
return list(obj.assigned_tasks.all().values('user_id'))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Task
|
model = Task
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from django.test import TestCase
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from task_app.models import Task, SubTask, AssignedTask
|
from task_app.models import Task, SubTask, AssignedTask
|
||||||
from task_app.choices import TaskCategory, TaskPriority, TaskStatus
|
from task_app.choices import TaskCategory, TaskPriority, TaskStatus
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
@ -11,6 +12,7 @@ class TaskModelTests(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
user = User.objects.create(first_name="Test", last_name="User", email="test@example.com")
|
user = User.objects.create(first_name="Test", last_name="User", email="test@example.com")
|
||||||
self.user = user
|
self.user = user
|
||||||
|
self.test_date = date(2025, 1, 1)
|
||||||
|
|
||||||
def test_task_creation(self):
|
def test_task_creation(self):
|
||||||
task = Task.objects.create(
|
task = Task.objects.create(
|
||||||
|
|
@ -19,17 +21,17 @@ class TaskModelTests(TestCase):
|
||||||
category=TaskCategory.TECHNICAL_TASK,
|
category=TaskCategory.TECHNICAL_TASK,
|
||||||
priority=TaskPriority.LOW,
|
priority=TaskPriority.LOW,
|
||||||
status=TaskStatus.TODO,
|
status=TaskStatus.TODO,
|
||||||
date="2025-01-01",
|
date=self.test_date,
|
||||||
creator=self.user
|
creator=self.user
|
||||||
)
|
)
|
||||||
self.assertTrue(isinstance(task, Task))
|
self.assertTrue(isinstance(task, Task))
|
||||||
self.assertEqual(str(task), 'Test Task')
|
self.assertEqual(str(task), 'Test Task 1')
|
||||||
self.assertIsNotNone(task.id)
|
self.assertIsNotNone(task.id)
|
||||||
self.assertEqual(task.creator, self.user)
|
self.assertEqual(task.creator, self.user)
|
||||||
self.assertIsNotNone(task.created_at)
|
self.assertIsNotNone(task.created_at)
|
||||||
|
|
||||||
def test_subtask_creation(self):
|
def test_subtask_creation(self):
|
||||||
task = Task.objects.create(title='Parent Task', creator=self.user)
|
task = Task.objects.create(title='Parent Task', creator=self.user, date=self.test_date)
|
||||||
subtask = SubTask.objects.create(task=task, title='Test SubTask')
|
subtask = SubTask.objects.create(task=task, title='Test SubTask')
|
||||||
self.assertTrue(isinstance(subtask, SubTask))
|
self.assertTrue(isinstance(subtask, SubTask))
|
||||||
self.assertEqual(str(subtask), 'Parent Task - Test SubTask')
|
self.assertEqual(str(subtask), 'Parent Task - Test SubTask')
|
||||||
|
|
@ -38,21 +40,21 @@ class TaskModelTests(TestCase):
|
||||||
self.assertEqual(subtask.status, False)
|
self.assertEqual(subtask.status, False)
|
||||||
|
|
||||||
def test_assigned_task_creation(self):
|
def test_assigned_task_creation(self):
|
||||||
task = Task.objects.create(title='Assigned Task', creator=self.user)
|
task = Task.objects.create(title='Assigned Task', creator=self.user, date=self.test_date)
|
||||||
assigned_user = User.objects.create(username='assigneduser')
|
assigned_user = User.objects.create(email='assigned@example.com')
|
||||||
assigned_task = AssignedTask.objects.create(user=assigned_user, task=task)
|
assigned_task = AssignedTask.objects.create(user=assigned_user, task=task)
|
||||||
self.assertTrue(isinstance(assigned_task, AssignedTask))
|
self.assertTrue(isinstance(assigned_task, AssignedTask))
|
||||||
self.assertEqual(str(assigned_task), 'assigneduser - Assigned Task')
|
self.assertEqual(str(assigned_task), 'assigned@example.com - Assigned Task')
|
||||||
self.assertEqual(assigned_task.user, assigned_user)
|
self.assertEqual(assigned_task.user, assigned_user)
|
||||||
self.assertEqual(assigned_task.task, task)
|
self.assertEqual(assigned_task.task, task)
|
||||||
|
|
||||||
def test_task_default_uuid(self):
|
def test_task_default_uuid(self):
|
||||||
task = Task.objects.create(title='UUID Task', creator=self.user)
|
task = Task.objects.create(title='UUID Task', creator=self.user, date=self.test_date)
|
||||||
self.assertTrue(isinstance(task.id, uuid.UUID))
|
self.assertTrue(isinstance(task.id, uuid.UUID))
|
||||||
task2 = Task.objects.create(title='Another UUID Task', creator=self.user)
|
task2 = Task.objects.create(title='Another UUID Task', creator=self.user, date=self.test_date)
|
||||||
self.assertNotEqual(task.id, task2.id)
|
self.assertNotEqual(task.id, task2.id)
|
||||||
|
|
||||||
def test_subtask_default_status(self):
|
def test_subtask_default_status(self):
|
||||||
task = Task.objects.create(title='Task with Subtask', creator=self.user)
|
task = Task.objects.create(title='Task with Subtask', creator=self.user, date=self.test_date)
|
||||||
subtask = SubTask.objects.create(task=task, title='Default Status Subtask')
|
subtask = SubTask.objects.create(task=task, title='Default Status Subtask')
|
||||||
self.assertFalse(subtask.status)
|
self.assertFalse(subtask.status)
|
||||||
79
task_app/tests/test_serializers.py
Normal file
79
task_app/tests/test_serializers.py
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
import uuid
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
from task_app.models import Task, SubTask, AssignedTask
|
||||||
|
from task_app.serializers import TaskSerializer, SubTaskSerializer, AssignedTaskSerializer
|
||||||
|
from task_app.choices import TaskCategory, TaskPriority, TaskStatus
|
||||||
|
from datetime import date
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
class SerializerTests(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
user = User.objects.create(first_name="Test", last_name="User", email="test@example.com")
|
||||||
|
self.user = user
|
||||||
|
self.test_date = date(2025, 1, 1)
|
||||||
|
|
||||||
|
self.task = Task.objects.create(
|
||||||
|
title="Test Task 1",
|
||||||
|
description="Description 1",
|
||||||
|
category=TaskCategory.TECHNICAL_TASK,
|
||||||
|
priority=TaskPriority.LOW,
|
||||||
|
status=TaskStatus.TODO,
|
||||||
|
date=self.test_date,
|
||||||
|
creator=self.user
|
||||||
|
)
|
||||||
|
self.subtask1 = SubTask.objects.create(task=self.task, title='SubTask 1', status=True)
|
||||||
|
self.subtask2 = SubTask.objects.create(task=self.task, title='SubTask 2', status=False)
|
||||||
|
self.assigned_user = User.objects.create(email='assigned@example.com')
|
||||||
|
self.assigned_task = AssignedTask.objects.create(user=self.assigned_user, task=self.task)
|
||||||
|
|
||||||
|
def test_subtask_serializer(self):
|
||||||
|
serializer = SubTaskSerializer(self.subtask1)
|
||||||
|
expected_data = {'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True}
|
||||||
|
self.assertEqual(serializer.data, expected_data)
|
||||||
|
|
||||||
|
def test_assigned_task_serializer(self):
|
||||||
|
serializer = AssignedTaskSerializer(self.assigned_task)
|
||||||
|
expected_data = {'user_id': self.assigned_user.id}
|
||||||
|
self.assertEqual(serializer.data, expected_data)
|
||||||
|
|
||||||
|
def test_task_serializer(self):
|
||||||
|
serializer = TaskSerializer(self.task)
|
||||||
|
expected_data = {
|
||||||
|
'id': str(self.task.id),
|
||||||
|
'title': 'Test Task 1',
|
||||||
|
'description': 'Description 1',
|
||||||
|
'category': 'Technical Task',
|
||||||
|
'priority': 'low',
|
||||||
|
'status': 'todo',
|
||||||
|
'date': '2025-01-01',
|
||||||
|
'creator': self.user.id,
|
||||||
|
'created_at': self.task.created_at.isoformat().replace('+00:00', 'Z'),
|
||||||
|
'subtasks': [
|
||||||
|
{'id': str(self.subtask1.id), 'title': 'SubTask 1', 'status': True},
|
||||||
|
{'id': str(self.subtask2.id), 'title': 'SubTask 2', 'status': False}
|
||||||
|
],
|
||||||
|
'assignees': [{'user_id': self.assigned_user.id}]
|
||||||
|
}
|
||||||
|
self.assertEqual(serializer.data, expected_data)
|
||||||
|
|
||||||
|
def test_task_serializer_create_validation(self):
|
||||||
|
data = {
|
||||||
|
'title': 'New Task',
|
||||||
|
'category': 'INVALID',
|
||||||
|
'priority': TaskPriority.LOW,
|
||||||
|
'status': TaskStatus.TODO,
|
||||||
|
'date': '2025-04-20',
|
||||||
|
'creator': self.user.id
|
||||||
|
}
|
||||||
|
serializer = TaskSerializer(data=data)
|
||||||
|
self.assertFalse(serializer.is_valid())
|
||||||
|
self.assertIn('category', serializer.errors)
|
||||||
|
|
||||||
|
def test_task_serializer_update_validation(self):
|
||||||
|
data = {'priority': 'WRONG'}
|
||||||
|
serializer = TaskSerializer(self.task, data=data, partial=True)
|
||||||
|
self.assertFalse(serializer.is_valid())
|
||||||
|
self.assertIn('priority', serializer.errors)
|
||||||
Loading…
Reference in a new issue