Files
central-task/tasks/tests/test_models.py

110 lines
3.7 KiB
Python

from django.test import TestCase
from django.utils import timezone
from tasks.models import Client, Task, TaskResult
class ClientModelTest(TestCase):
def test_client_creation(self):
"""Test that a client can be created with all required fields"""
client = Client.objects.create(
name="test_client",
token="test_token_12345"
)
self.assertEqual(client.name, "test_client")
self.assertEqual(client.token, "test_token_12345")
self.assertIsNotNone(client.created_at)
self.assertIsNotNone(client.last_seen)
def test_client_str(self):
"""Test that the client string representation is correct"""
client = Client.objects.create(
name="test_client",
token="test_token_12345"
)
self.assertEqual(str(client), "test_client")
class TaskModelTest(TestCase):
def test_task_creation(self):
"""Test that a task can be created with all required fields"""
task = Task.objects.create(
name="test_task",
client_name="test_client",
script="echo 'Hello World'",
timeout_seconds=3600
)
self.assertEqual(task.name, "test_task")
self.assertEqual(task.client_name, "test_client")
self.assertEqual(task.script, "echo 'Hello World'")
self.assertEqual(task.status, "pending")
self.assertEqual(task.timeout_seconds, 3600)
self.assertIsNotNone(task.created_at)
self.assertIsNotNone(task.updated_at)
def test_task_str(self):
"""Test that the task string representation is correct"""
task = Task.objects.create(
name="test_task"
)
self.assertEqual(str(task), "test_task")
def test_task_status_choices(self):
"""Test that task status choices are correctly implemented"""
from tasks.models import STATUS_CHOICES
status_choices = [choice[0] for choice in STATUS_CHOICES]
self.assertIn("pending", status_choices)
self.assertIn("assigned", status_choices)
self.assertIn("running", status_choices)
self.assertIn("success", status_choices)
self.assertIn("failed", status_choices)
self.assertIn("retrying", status_choices)
self.assertIn("timeout", status_choices)
class TaskResultModelTest(TestCase):
def test_task_result_creation(self):
"""Test that a task result can be created with all required fields"""
client = Client.objects.create(
name="test_client",
token="test_token_12345"
)
task = Task.objects.create(
name="test_task"
)
result = TaskResult.objects.create(
task=task,
client=client,
status="success",
message="Task completed successfully"
)
self.assertEqual(result.task, task)
self.assertEqual(result.client, client)
self.assertEqual(result.status, "success")
self.assertEqual(result.message, "Task completed successfully")
self.assertIsNotNone(result.created_at)
def test_task_result_str(self):
"""Test that the task result string representation is correct"""
client = Client.objects.create(
name="test_client",
token="test_token_12345"
)
task = Task.objects.create(
name="test_task"
)
result = TaskResult.objects.create(
task=task,
client=client,
status="success"
)
# Expected status display is in Chinese
self.assertEqual(str(result), f"{task.name} - {client.name} - 成功")