You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.9 KiB
54 lines
1.9 KiB
from django.test import TestCase
|
|
from tasks.models import Task, Tasks
|
|
|
|
class TaskTestCase(TestCase):
|
|
def setUp(self):
|
|
statuses = ["TODO", "DOING", "DONE", "CANCELED"]
|
|
names = [f"Test Task {i}" for i in statuses]
|
|
description = ""
|
|
|
|
tasks = [
|
|
Task(name=name, description=description, status=status)
|
|
for name, status in zip(names, statuses)
|
|
]
|
|
|
|
Task.objects.bulk_create(tasks)
|
|
|
|
def test__get_status_index_with_existing(self):
|
|
task = Task.objects.filter(status="DONE").first()
|
|
index = task._get_status_index()
|
|
self.assertEqual(index, 2)
|
|
|
|
def test_circular_next_status_index_for_todo(self):
|
|
task = Task.objects.filter(status="TODO").first()
|
|
index = task.circular_next_status_index()
|
|
self.assertEqual(index, 1)
|
|
|
|
def test_circular_next_status_index_for_canceled(self):
|
|
task = Task.objects.filter(status="CANCELED").first()
|
|
next_index = task.circular_next_status_index()
|
|
self.assertEqual(next_index, 0)
|
|
|
|
def test_circular_next_status_for_todo(self):
|
|
task = Task.objects.filter(status="TODO").first()
|
|
next_status = task.circular_next_status()
|
|
self.assertEqual(next_status, "DOING")
|
|
|
|
def test_circular_next_status_for_canceled(self):
|
|
task = Task.objects.filter(status="CANCELED").first()
|
|
next_status = task.circular_next_status()
|
|
self.assertEqual(next_status, "TODO")
|
|
|
|
def test_set_circular_next_status_for_todo(self):
|
|
task = Task.objects.filter(status="TODO").first()
|
|
task.set_circular_next_status()
|
|
task.refresh_from_db()
|
|
self.assertEqual(task.status, "DOING")
|
|
|
|
def test_set_circular_next_status_for_canceled(self):
|
|
task = Task.objects.filter(status="CANCELED").first()
|
|
task.set_circular_next_status()
|
|
task.refresh_from_db()
|
|
self.assertEqual(task.status, "TODO")
|
|
|