Skip to main content
Glama
test_models.py6.03 kB
from datetime import datetime, timezone from src import models def test_task_status_members(): statuses = models.get_task_status_values() expected = {"pending", "in_progress", "completed", "paused", "waiting_approval"} assert set(statuses) == expected assert len(statuses) == len(expected) def test_chat_message_initialization(): timestamp = "2025-01-01T12:00:00+00:00" message = models.create_chat_message("system", "status", timestamp) assert message["type"] == "system" assert message["content"] == "status" assert message["timestamp"] == timestamp def test_chat_message_default_timestamp(): message = models.create_chat_message("user", "hello") parsed = datetime.fromisoformat(message["timestamp"]) now = datetime.now(timezone.utc) delta = now - parsed assert abs(delta.total_seconds()) < 10 def test_chat_message_serialization_roundtrip(): timestamp = "2025-01-01T12:00:00+00:00" original = models.create_chat_message("jules", "ready", timestamp) data = models.chat_message_to_dict(original) assert data["type"] == "jules" assert data["content"] == "ready" assert data["timestamp"] == timestamp restored = models.chat_message_from_dict(data) assert restored == original def test_source_file_initialization(): source = models.create_source_file("README.md", "https://example.com/README.md", "modified") assert source["filename"] == "README.md" assert source["url"] == "https://example.com/README.md" assert source["status"] == "modified" assert source["diff"] is None def test_source_file_optional_diff(): source = models.create_source_file("src/module.py", "https://example.com/src/module.py", "created", "+ new content") assert source["diff"] == "+ new content" def test_source_file_serialization_roundtrip(): original = models.create_source_file("src/module.py", "https://example.com/src/module.py", "deleted", "- old content") data = models.source_file_to_dict(original) assert data["filename"] == "src/module.py" assert data["url"] == "https://example.com/src/module.py" assert data["status"] == "deleted" assert data["diff"] == "- old content" restored = models.source_file_from_dict(data) assert restored == original def test_jules_task_initialization(): created_at = datetime(2025, 1, 1, 12, 0, tzinfo=timezone.utc) updated_at = datetime(2025, 1, 1, 13, 0, tzinfo=timezone.utc) task = models.create_jules_task( "task-123", "Sample Task", "Do something", "owner/repo", "main", "in_progress", created_at, updated_at, "https://example.com", ) assert task["id"] == "task-123" assert task["status"] == "in_progress" assert task["chat_history"] == [] assert task["source_files"] == [] def test_jules_task_optional_lists_default(): created_at = datetime(2025, 1, 1, 12, 0, tzinfo=timezone.utc) updated_at = datetime(2025, 1, 1, 13, 0, tzinfo=timezone.utc) task = models.create_jules_task( "task-456", "Sample", "Details", "owner/repo", "develop", "pending", created_at, updated_at, "https://example.com", ) assert task["chat_history"] == [] assert task["source_files"] == [] def test_jules_task_to_dict_nested_serialization(): created_at = datetime(2025, 1, 1, 12, 0, tzinfo=timezone.utc) updated_at = datetime(2025, 1, 1, 13, 0, tzinfo=timezone.utc) message = models.create_chat_message("user", "Hello", "2025-01-01T12:05:00+00:00") source_file = models.create_source_file("README.md", "https://example.com/README.md", "modified", "- old\n+ new") task = models.create_jules_task( "task-789", "Another Task", "Work", "owner/repo", "main", "completed", created_at, updated_at, "https://example.com/task", [message], [source_file], ) data = models.jules_task_to_dict(task) assert data["id"] == "task-789" assert data["status"] == "completed" assert data["created_at"] == created_at.isoformat() assert data["updated_at"] == updated_at.isoformat() chat_list = data["chat_history"] assert len(chat_list) == 1 assert chat_list[0]["type"] == "user" files_list = data["source_files"] assert len(files_list) == 1 assert files_list[0]["filename"] == "README.md" def test_jules_task_from_dict_roundtrip(): chat_dict = {"type": "jules", "content": "Done", "timestamp": "2025-01-01T12:10:00+00:00"} file_dict = {"filename": "README.md", "url": "https://example.com/README.md", "status": "modified", "diff": "- old\n+ new"} data = { "id": "task-101", "title": "Finish", "description": "Complete the job", "repository": "owner/repo", "branch": "main", "status": "paused", "created_at": "2025-01-01T11:00:00+00:00", "updated_at": "2025-01-01T11:30:00+00:00", "url": "https://example.com/task/101", "chat_history": [chat_dict], "source_files": [file_dict], } task = models.jules_task_from_dict(data) assert task["id"] == "task-101" assert task["status"] == "paused" assert task["chat_history"][0]["type"] == "jules" restored = models.jules_task_to_dict(task) assert restored["id"] == data["id"] def test_jules_task_to_dict_handles_empty_lists(): created_at = datetime(2025, 1, 1, 10, 0, tzinfo=timezone.utc) updated_at = datetime(2025, 1, 1, 11, 0, tzinfo=timezone.utc) task = models.create_jules_task( "task-empty", "Empty", "Empty", "owner/repo", "main", "pending", created_at, updated_at, "https://example.com", ) data = models.jules_task_to_dict(task) chat_history = data["chat_history"] source_files = data["source_files"] assert chat_history == [] assert source_files == []

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mberjans/google-jules-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server