mirror of
https://github.com/TurTaskProject/TurTaskWeb.git
synced 2025-12-20 06:24:07 +01:00
Update Tasks Test
This commit is contained in:
parent
41cf2fb6d3
commit
80ad7fc744
@ -1,18 +1,22 @@
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
|
|
||||||
from django.test import TestCase
|
from rest_framework.test import APITestCase
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from tasks.tests.utils import create_test_user, login_user
|
from tasks.tests.utils import create_test_user
|
||||||
from tasks.serializers import TodoUpdateSerializer
|
from tasks.serializers import TodoUpdateSerializer
|
||||||
from tasks.models import Todo
|
from tasks.models import Todo
|
||||||
|
from boards.models import Board
|
||||||
|
|
||||||
class TaskUpdateSerializerTest(TestCase):
|
class TaskUpdateSerializerTest(APITestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user = create_test_user()
|
self.user = create_test_user()
|
||||||
|
self.client.force_authenticate(user=self.user)
|
||||||
self.current_time = '2020-08-01T00:00:00Z'
|
self.current_time = '2020-08-01T00:00:00Z'
|
||||||
self.end_time = '2020-08-01T00:00:00Z'
|
self.end_time = '2020-08-01T00:00:00Z'
|
||||||
|
self.list_board = Board.objects.get(user=self.user).listboard_set.first()
|
||||||
|
|
||||||
def test_serializer_create(self):
|
def test_serializer_create(self):
|
||||||
data = {
|
data = {
|
||||||
@ -23,6 +27,7 @@ class TaskUpdateSerializerTest(TestCase):
|
|||||||
'updated': self.end_time,
|
'updated': self.end_time,
|
||||||
'start_datetime' : self.current_time,
|
'start_datetime' : self.current_time,
|
||||||
'end_datetie': self.end_time,
|
'end_datetie': self.end_time,
|
||||||
|
'list_board': self.list_board.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer = TodoUpdateSerializer(data=data, user=self.user)
|
serializer = TodoUpdateSerializer(data=data, user=self.user)
|
||||||
@ -32,7 +37,7 @@ class TaskUpdateSerializerTest(TestCase):
|
|||||||
self.assertIsInstance(task, Todo)
|
self.assertIsInstance(task, Todo)
|
||||||
|
|
||||||
def test_serializer_update(self):
|
def test_serializer_update(self):
|
||||||
task = Todo.objects.create(title='Original Task', notes='Original description', user=self.user)
|
task = Todo.objects.create(title='Original Task', notes='Original description', user=self.user, list_board=self.list_board)
|
||||||
|
|
||||||
data = {
|
data = {
|
||||||
'id': '32141cwaNcapufh8jq2conw',
|
'id': '32141cwaNcapufh8jq2conw',
|
||||||
@ -42,6 +47,7 @@ class TaskUpdateSerializerTest(TestCase):
|
|||||||
'updated': self.end_time,
|
'updated': self.end_time,
|
||||||
'start_datetime' : self.current_time,
|
'start_datetime' : self.current_time,
|
||||||
'end_datetie': self.end_time,
|
'end_datetie': self.end_time,
|
||||||
|
'list_board': self.list_board.id,
|
||||||
}
|
}
|
||||||
|
|
||||||
serializer = TodoUpdateSerializer(instance=task, data=data)
|
serializer = TodoUpdateSerializer(instance=task, data=data)
|
||||||
|
|||||||
@ -2,72 +2,72 @@ from datetime import datetime, timedelta
|
|||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
from rest_framework.test import APITestCase
|
from rest_framework.test import APITestCase
|
||||||
from tasks.tests.utils import create_test_user, login_user
|
from tasks.tests.utils import create_test_user
|
||||||
from tasks.models import Todo
|
from tasks.models import Todo
|
||||||
|
from boards.models import ListBoard, Board
|
||||||
|
|
||||||
|
|
||||||
# class TodoViewSetTests(APITestCase):
|
class TodoViewSetTests(APITestCase):
|
||||||
# def setUp(self):
|
def setUp(self):
|
||||||
# self.user = create_test_user()
|
self.user = create_test_user()
|
||||||
# self.client = login_user(self.user)
|
self.client.force_authenticate(user=self.user)
|
||||||
# self.url = reverse("todo-list")
|
self.url = reverse("todo-list")
|
||||||
# self.due_date = datetime.now() + timedelta(days=5)
|
self.due_date = datetime.now() + timedelta(days=5)
|
||||||
|
self.list_board = Board.objects.get(user=self.user).listboard_set.first()
|
||||||
|
|
||||||
# def test_create_valid_todo(self):
|
def test_create_valid_todo(self):
|
||||||
# """
|
"""
|
||||||
# Test creating a valid task using the API.
|
Test creating a valid task using the API.
|
||||||
# """
|
"""
|
||||||
# data = {
|
data = {
|
||||||
# 'title': 'Test Task',
|
'title': 'Test Task',
|
||||||
# 'type': 'habit',
|
'type': 'habit',
|
||||||
# 'exp': 10,
|
'difficulty': 1,
|
||||||
# 'attribute': 'str',
|
'end_event': self.due_date.strftime('%Y-%m-%dT%H:%M:%S'),
|
||||||
# 'priority': 1,
|
'list_board': self.list_board.id,
|
||||||
# 'difficulty': 1,
|
}
|
||||||
# 'user': self.user.id,
|
response = self.client.post(self.url, data, format='json')
|
||||||
# 'end_event': self.due_date.strftime('%Y-%m-%dT%H:%M:%S'),
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
# }
|
self.assertEqual(Todo.objects.count(), 1)
|
||||||
# response = self.client.post(self.url, data, format='json')
|
self.assertEqual(Todo.objects.get().title, 'Test Task')
|
||||||
# self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
||||||
# self.assertEqual(Todo.objects.count(), 1)
|
|
||||||
# self.assertEqual(Todo.objects.get().title, 'Test Task')
|
|
||||||
|
|
||||||
# def test_create_invalid_todo(self):
|
def test_create_invalid_todo(self):
|
||||||
# """
|
"""
|
||||||
# Test creating an invalid task using the API.
|
Test creating an invalid task using the API.
|
||||||
# """
|
"""
|
||||||
# data = {
|
data = {
|
||||||
# 'type': 'invalid', # Invalid task type
|
'type': 'invalid', # Invalid task type
|
||||||
# }
|
}
|
||||||
# response = self.client.post(self.url, data, format='json')
|
response = self.client.post(self.url, data, format='json')
|
||||||
# self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
# self.assertEqual(Todo.objects.count(), 0) # No task should be created
|
self.assertEqual(Todo.objects.count(), 0) # No task should be created
|
||||||
|
|
||||||
# def test_missing_required_fields(self):
|
def test_missing_required_fields(self):
|
||||||
# """
|
"""
|
||||||
# Test creating a task with missing required fields using the API.
|
Test creating a task with missing required fields using the API.
|
||||||
# """
|
"""
|
||||||
# data = {
|
data = {
|
||||||
# 'title': 'Incomplete Task',
|
'type': 'habit',
|
||||||
# 'type': 'habit',
|
}
|
||||||
# }
|
response = self.client.post(self.url, data, format='json')
|
||||||
# response = self.client.post(self.url, data, format='json')
|
self.assertEqual(response.status_code, status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||||
# self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
self.assertEqual(Todo.objects.count(), 0) # No task should be created
|
||||||
# self.assertEqual(Todo.objects.count(), 0) # No task should be created
|
|
||||||
|
|
||||||
# def test_invalid_user_id(self):
|
def test_invalid_user_id(self):
|
||||||
# """
|
"""
|
||||||
# Test creating a task with an invalid user ID using the API.
|
Test creating a task with an invalid user ID using the API (OK because we retreive)
|
||||||
# """
|
id from request.
|
||||||
# data = {
|
"""
|
||||||
# 'title': 'Test Task',
|
data = {
|
||||||
# 'type': 'habit',
|
'title': 'Test Task',
|
||||||
# 'exp': 10,
|
'type': 'habit',
|
||||||
# 'priority': 1,
|
'exp': 10,
|
||||||
# 'difficulty': 1,
|
'priority': 1,
|
||||||
# 'user': 999, # Invalid user ID
|
'difficulty': 1,
|
||||||
# 'end_event': self.due_date.strftime('%Y-%m-%dT%H:%M:%S'),
|
'user': -100, # Invalid user ID
|
||||||
# }
|
'end_event': self.due_date.strftime('%Y-%m-%dT%H:%M:%S'),
|
||||||
# response = self.client.post(self.url, data, format='json')
|
'list_board': self.list_board.id,
|
||||||
# self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
}
|
||||||
# self.assertEqual(Todo.objects.count(), 0) # No task should be created
|
response = self.client.post(self.url, data, format='json')
|
||||||
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
||||||
|
self.assertEqual(Todo.objects.count(), 1) # No task should be created
|
||||||
|
|||||||
@ -1,36 +1,39 @@
|
|||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
from django.test import TestCase
|
from rest_framework.test import APITestCase
|
||||||
from tasks.models import Todo
|
from tasks.models import Todo
|
||||||
from tasks.tests.utils import create_test_user
|
from tasks.tests.utils import create_test_user
|
||||||
|
from boards.models import Board
|
||||||
|
|
||||||
class TodoPriorityTest(TestCase):
|
class TodoPriorityTest(APITestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.user = create_test_user()
|
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 test_priority_calculation(self):
|
def test_priority_calculation(self):
|
||||||
# Important = 2, Till Due = none
|
# Important = 2, Till Due = none
|
||||||
todo = Todo(importance=2, end_event=None, user=self.user)
|
todo = Todo(importance=2, end_event=None, user=self.user, list_board=self.list_board)
|
||||||
todo.save()
|
todo.save()
|
||||||
# 'Not Important & Not Urgent'
|
# 'Not Important & Not Urgent'
|
||||||
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.NOT_IMPORTANT_NOT_URGENT)
|
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.NOT_IMPORTANT_NOT_URGENT)
|
||||||
|
|
||||||
due_date = datetime.now(timezone.utc) + timedelta(days=1)
|
due_date = datetime.now(timezone.utc) + timedelta(days=1)
|
||||||
# Important = 4, Till Due = 1
|
# Important = 4, Till Due = 1
|
||||||
todo = Todo(importance=4, end_event=due_date, user=self.user)
|
todo = Todo(importance=4, end_event=due_date, user=self.user, list_board=self.list_board)
|
||||||
todo.save()
|
todo.save()
|
||||||
# 'Important & Urgent'
|
# 'Important & Urgent'
|
||||||
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.IMPORTANT_URGENT)
|
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.IMPORTANT_URGENT)
|
||||||
|
|
||||||
due_date = datetime.now(timezone.utc) + timedelta(days=10)
|
due_date = datetime.now(timezone.utc) + timedelta(days=10)
|
||||||
# Important = 3, Till Due = 10
|
# Important = 3, Till Due = 10
|
||||||
todo = Todo(importance=3, end_event=due_date, user=self.user)
|
todo = Todo(importance=3, end_event=due_date, user=self.user, list_board=self.list_board)
|
||||||
todo.save()
|
todo.save()
|
||||||
# 'Important & Not Urgent'
|
# 'Important & Not Urgent'
|
||||||
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.IMPORTANT_NOT_URGENT)
|
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.IMPORTANT_NOT_URGENT)
|
||||||
|
|
||||||
due_date = datetime.now(timezone.utc) + timedelta(days=2)
|
due_date = datetime.now(timezone.utc) + timedelta(days=2)
|
||||||
# Important = 1, Till Due = 2
|
# Important = 1, Till Due = 2
|
||||||
todo = Todo(importance=1, end_event=due_date, user=self.user)
|
todo = Todo(importance=1, end_event=due_date, user=self.user, list_board=self.list_board)
|
||||||
todo.save()
|
todo.save()
|
||||||
# 'Not Important & Urgent'
|
# 'Not Important & Urgent'
|
||||||
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.NOT_IMPORTANT_URGENT)
|
self.assertEqual(todo.priority, Todo.EisenhowerMatrix.NOT_IMPORTANT_URGENT)
|
||||||
|
|||||||
@ -1,26 +1,24 @@
|
|||||||
|
from rest_framework import status
|
||||||
from rest_framework.test import APIClient
|
from rest_framework.test import APIClient
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
from users.models import CustomUser
|
from users.models import CustomUser
|
||||||
from ..models import Todo
|
from ..models import Todo
|
||||||
|
|
||||||
|
|
||||||
def create_test_user(email="testusertestuser@example.com", username="testusertestuser",
|
def create_test_user(email="testusertestuser@example.com",
|
||||||
first_name="Test", password="testpassword",):
|
username="testusertestuser",
|
||||||
"""create predifined user for testing"""
|
password="testpassword",) -> CustomUser:
|
||||||
return CustomUser.objects.create_user(
|
"""create predifined user without placeholder task for testing"""
|
||||||
email=email,
|
|
||||||
username=username,
|
|
||||||
first_name=first_name,
|
|
||||||
password=password,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def login_user(user):
|
|
||||||
"""Login a user to API client."""
|
|
||||||
|
|
||||||
client = APIClient()
|
client = APIClient()
|
||||||
client.force_authenticate(user=user)
|
response = client.post(reverse('create_user'), {'email': email,
|
||||||
return client
|
'username': username,
|
||||||
|
'password': password})
|
||||||
|
if response.status_code == status.HTTP_201_CREATED:
|
||||||
|
user = CustomUser.objects.get(username='testusertestuser')
|
||||||
|
user.todo_set.all().delete()
|
||||||
|
return user
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def create_task_json(user, **kwargs):
|
def create_task_json(user, **kwargs):
|
||||||
@ -29,10 +27,7 @@ def create_task_json(user, **kwargs):
|
|||||||
"title": "Test Task",
|
"title": "Test Task",
|
||||||
"type": "habit",
|
"type": "habit",
|
||||||
"notes": "This is a test task created via the API.",
|
"notes": "This is a test task created via the API.",
|
||||||
"exp": 10,
|
|
||||||
"priority": 1.5,
|
|
||||||
"difficulty": 1,
|
"difficulty": 1,
|
||||||
"attribute": "str",
|
|
||||||
"challenge": False,
|
"challenge": False,
|
||||||
"fromSystem": False,
|
"fromSystem": False,
|
||||||
"creation_date": None,
|
"creation_date": None,
|
||||||
@ -51,8 +46,6 @@ def create_test_task(user, **kwargs):
|
|||||||
'title': "Test Task",
|
'title': "Test Task",
|
||||||
'task_type': 'habit',
|
'task_type': 'habit',
|
||||||
'notes': "This is a test task created via the API.",
|
'notes': "This is a test task created via the API.",
|
||||||
'exp': 10,
|
|
||||||
'priority': 1.5,
|
|
||||||
'difficulty': 1,
|
'difficulty': 1,
|
||||||
'attribute': 'str',
|
'attribute': 'str',
|
||||||
'challenge': False,
|
'challenge': False,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user