test: move tests to folder, rename to cache_tests, create models_tests with initial tests
This commit is contained in:
parent
d3227e9a76
commit
650d81f809
5 changed files with 70 additions and 14 deletions
|
|
@ -5,7 +5,7 @@ from user_app.models import User
|
||||||
|
|
||||||
def create_or_update_subtasks(subtask_data, parent_task):
|
def create_or_update_subtasks(subtask_data, parent_task):
|
||||||
current_subtasks = SubTask.objects.filter(task=parent_task)
|
current_subtasks = SubTask.objects.filter(task=parent_task)
|
||||||
current_subtask_ids = {str(sub.id): sub for sub in current_subtasks} # Speichere Objekte zur einfachen Aktualisierung
|
current_subtask_ids = {str(sub.id): sub for sub in current_subtasks}
|
||||||
|
|
||||||
new_subtasks_to_create = []
|
new_subtasks_to_create = []
|
||||||
subtasks_to_update = []
|
subtasks_to_update = []
|
||||||
|
|
@ -58,9 +58,9 @@ def assign_users_to_task(user_ids, task):
|
||||||
users = User.objects.filter(id__in=user_ids)
|
users = User.objects.filter(id__in=user_ids)
|
||||||
found_user_ids = set(users.values_list('id', flat=True))
|
found_user_ids = set(users.values_list('id', flat=True))
|
||||||
missing_users = set(user_ids) - found_user_ids
|
missing_users = set(user_ids) - found_user_ids
|
||||||
|
|
||||||
if missing_users:
|
if missing_users:
|
||||||
raise APIException(f"Users not found: {', '.join(map(str, missing_users))}") # Konvertiere UUIDs zurück zu Strings für die Fehlermeldung
|
raise APIException(f"Users not found: {', '.join(map(str, missing_users))}")
|
||||||
|
|
||||||
AssignedTask.objects.bulk_create(
|
AssignedTask.objects.bulk_create(
|
||||||
[AssignedTask(user=user, task=task) for user in users]
|
[AssignedTask(user=user, task=task) for user in users]
|
||||||
|
|
|
||||||
0
task_app/tests/__init__.py
Normal file
0
task_app/tests/__init__.py
Normal file
|
|
@ -1,9 +1,9 @@
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
from django.core.cache import cache
|
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from .models import Task, AssignedTask
|
from task_app.caching import get_cached_task_by_id
|
||||||
from .caching import get_cached_task_by_id
|
from task_app.models import Task, AssignedTask
|
||||||
from .choices import TaskStatus, TaskCategory, TaskPriority
|
from task_app.choices import TaskCategory, TaskPriority, TaskStatus
|
||||||
|
from django.core.cache import cache
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
|
|
@ -71,8 +71,8 @@ class TaskCacheTests(TestCase):
|
||||||
def test_cache_invalidation_on_assigned_task_save(self):
|
def test_cache_invalidation_on_assigned_task_save(self):
|
||||||
cache.clear()
|
cache.clear()
|
||||||
|
|
||||||
AssignedTask.objects.create(user_id=self.user, task=self.task1)
|
AssignedTask.objects.create(user=self.user, task=self.task1)
|
||||||
|
|
||||||
self.assertIsNone(cache.get(f"task_{self.task1.id}"))
|
self.assertIsNone(cache.get(f"task_{self.task1.id}"))
|
||||||
|
|
||||||
task = get_cached_task_by_id(self.task1.id)
|
task = get_cached_task_by_id(self.task1.id)
|
||||||
|
|
@ -81,14 +81,14 @@ class TaskCacheTests(TestCase):
|
||||||
def test_cache_invalidation_on_assigned_task_delete(self):
|
def test_cache_invalidation_on_assigned_task_delete(self):
|
||||||
cache.clear()
|
cache.clear()
|
||||||
|
|
||||||
assigned_task = AssignedTask.objects.create(user_id=self.user, task=self.task1)
|
assigned_task = AssignedTask.objects.create(user=self.user, task=self.task1)
|
||||||
assigned_task.delete()
|
assigned_task.delete()
|
||||||
|
|
||||||
self.assertIsNone(cache.get(f"task_{self.task1.id}"))
|
self.assertIsNone(cache.get(f"task_{self.task1.id}"))
|
||||||
|
|
||||||
task = get_cached_task_by_id(self.task1.id)
|
task = get_cached_task_by_id(self.task1.id)
|
||||||
self.assertEqual(task, self.task1)
|
self.assertEqual(task, self.task1)
|
||||||
|
|
||||||
def test_cache_serialization_error_handling(self):
|
def test_cache_serialization_error_handling(self):
|
||||||
cache.set("task_corrupted", b"corrupted_data")
|
cache.set("task_corrupted", b"corrupted_data")
|
||||||
cache.delete("task_corrupted")
|
cache.delete("task_corrupted")
|
||||||
58
task_app/tests/models_tests.py
Normal file
58
task_app/tests/models_tests.py
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
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.choices import TaskCategory, TaskPriority, TaskStatus
|
||||||
|
|
||||||
|
User = get_user_model()
|
||||||
|
|
||||||
|
class TaskModelTests(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
user = User.objects.create(first_name="Test", last_name="User", email="test@example.com")
|
||||||
|
self.user = user
|
||||||
|
|
||||||
|
def test_task_creation(self):
|
||||||
|
task = Task.objects.create(
|
||||||
|
title="Test Task 1",
|
||||||
|
description="Description 1",
|
||||||
|
category=TaskCategory.TECHNICAL_TASK,
|
||||||
|
priority=TaskPriority.LOW,
|
||||||
|
status=TaskStatus.TODO,
|
||||||
|
date="2025-01-01",
|
||||||
|
creator=self.user
|
||||||
|
)
|
||||||
|
self.assertTrue(isinstance(task, Task))
|
||||||
|
self.assertEqual(str(task), 'Test Task')
|
||||||
|
self.assertIsNotNone(task.id)
|
||||||
|
self.assertEqual(task.creator, self.user)
|
||||||
|
self.assertIsNotNone(task.created_at)
|
||||||
|
|
||||||
|
def test_subtask_creation(self):
|
||||||
|
task = Task.objects.create(title='Parent Task', creator=self.user)
|
||||||
|
subtask = SubTask.objects.create(task=task, title='Test SubTask')
|
||||||
|
self.assertTrue(isinstance(subtask, SubTask))
|
||||||
|
self.assertEqual(str(subtask), 'Parent Task - Test SubTask')
|
||||||
|
self.assertIsNotNone(subtask.id)
|
||||||
|
self.assertEqual(subtask.task, task)
|
||||||
|
self.assertEqual(subtask.status, False)
|
||||||
|
|
||||||
|
def test_assigned_task_creation(self):
|
||||||
|
task = Task.objects.create(title='Assigned Task', creator=self.user)
|
||||||
|
assigned_user = User.objects.create(username='assigneduser')
|
||||||
|
assigned_task = AssignedTask.objects.create(user=assigned_user, task=task)
|
||||||
|
self.assertTrue(isinstance(assigned_task, AssignedTask))
|
||||||
|
self.assertEqual(str(assigned_task), 'assigneduser - Assigned Task')
|
||||||
|
self.assertEqual(assigned_task.user, assigned_user)
|
||||||
|
self.assertEqual(assigned_task.task, task)
|
||||||
|
|
||||||
|
def test_task_default_uuid(self):
|
||||||
|
task = Task.objects.create(title='UUID Task', creator=self.user)
|
||||||
|
self.assertTrue(isinstance(task.id, uuid.UUID))
|
||||||
|
task2 = Task.objects.create(title='Another UUID Task', creator=self.user)
|
||||||
|
self.assertNotEqual(task.id, task2.id)
|
||||||
|
|
||||||
|
def test_subtask_default_status(self):
|
||||||
|
task = Task.objects.create(title='Task with Subtask', creator=self.user)
|
||||||
|
subtask = SubTask.objects.create(task=task, title='Default Status Subtask')
|
||||||
|
self.assertFalse(subtask.status)
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
import uuid
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
@ -9,11 +8,10 @@ from .caching import get_cached_task_by_id
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from .choices import TaskStatus
|
from .choices import TaskStatus
|
||||||
from rest_framework.permissions import IsAuthenticated
|
from rest_framework.permissions import IsAuthenticated
|
||||||
from user_app.models import User
|
|
||||||
from rest_framework.exceptions import APIException
|
|
||||||
from .services import create_or_update_subtasks, create_or_update_assignees, assign_users_to_task, create_subtasks
|
from .services import create_or_update_subtasks, create_or_update_assignees, assign_users_to_task, create_subtasks
|
||||||
|
|
||||||
class TaskViewSet(viewsets.ModelViewSet):
|
class TaskViewSet(viewsets.ModelViewSet):
|
||||||
|
permission_classes = [IsAuthenticated]
|
||||||
queryset = Task.objects.all()
|
queryset = Task.objects.all()
|
||||||
serializer_class = TaskSerializer
|
serializer_class = TaskSerializer
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue