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} - 成功")