{
"event": "PreToolUse",
"tool_name": "Write",
"tool_input": {
"file_path": "\/var\/www\/mcp-servers\/shared\/tests\/test_log_entry.py",
"content": "\"\"\"Tests for log_entry module.\"\"\"\n\nfrom datetime import datetime\n\nimport pytest\n\nfrom shared.domain.log_entry import LogEntry\n\n\nclass TestLogEntry:\n \"\"\"Tests for LogEntry dataclass.\"\"\"\n\n def test_create_minimal(self) -> None:\n \"\"\"Create LogEntry with required fields only.\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test request\",\n status=\"success\",\n duration_ms=100,\n )\n assert entry.client_name == \"test\"\n assert entry.duration_ms == 100\n assert entry.error_message is None\n\n def test_create_full(self) -> None:\n \"\"\"Create LogEntry with all fields.\"\"\"\n now = datetime.now()\n entry = LogEntry(\n timestamp=now,\n client_name=\"mcp_test\",\n request=\"SELECT * FROM test\",\n status=\"error\",\n duration_ms=250,\n error_message=\"Connection failed\",\n tool_name=\"db_select\",\n context_id=42,\n )\n assert entry.timestamp == now\n assert entry.client_name == \"mcp_test\"\n assert entry.error_message == \"Connection failed\"\n assert entry.tool_name == \"db_select\"\n assert entry.context_id == 42\n\n def test_is_frozen(self) -> None:\n \"\"\"LogEntry is immutable (frozen).\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n with pytest.raises(AttributeError):\n entry.client_name = \"modified\" # type: ignore\n\n def test_equality(self) -> None:\n \"\"\"Two LogEntries with same data are equal.\"\"\"\n now = datetime.now()\n entry1 = LogEntry(\n timestamp=now,\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n entry2 = LogEntry(\n timestamp=now,\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n assert entry1 == entry2\n\n def test_hash(self) -> None:\n \"\"\"LogEntry is hashable (frozen dataclass).\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n # Should not raise\n hash(entry)\n # Can be used in sets\n entry_set = {entry}\n assert entry in entry_set\n"
}
}
{
"tool_response": {
"type": "create",
"filePath": "\/var\/www\/mcp-servers\/shared\/tests\/test_log_entry.py",
"content": "\"\"\"Tests for log_entry module.\"\"\"\n\nfrom datetime import datetime\n\nimport pytest\n\nfrom shared.domain.log_entry import LogEntry\n\n\nclass TestLogEntry:\n \"\"\"Tests for LogEntry dataclass.\"\"\"\n\n def test_create_minimal(self) -> None:\n \"\"\"Create LogEntry with required fields only.\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test request\",\n status=\"success\",\n duration_ms=100,\n )\n assert entry.client_name == \"test\"\n assert entry.duration_ms == 100\n assert entry.error_message is None\n\n def test_create_full(self) -> None:\n \"\"\"Create LogEntry with all fields.\"\"\"\n now = datetime.now()\n entry = LogEntry(\n timestamp=now,\n client_name=\"mcp_test\",\n request=\"SELECT * FROM test\",\n status=\"error\",\n duration_ms=250,\n error_message=\"Connection failed\",\n tool_name=\"db_select\",\n context_id=42,\n )\n assert entry.timestamp == now\n assert entry.client_name == \"mcp_test\"\n assert entry.error_message == \"Connection failed\"\n assert entry.tool_name == \"db_select\"\n assert entry.context_id == 42\n\n def test_is_frozen(self) -> None:\n \"\"\"LogEntry is immutable (frozen).\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n with pytest.raises(AttributeError):\n entry.client_name = \"modified\" # type: ignore\n\n def test_equality(self) -> None:\n \"\"\"Two LogEntries with same data are equal.\"\"\"\n now = datetime.now()\n entry1 = LogEntry(\n timestamp=now,\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n entry2 = LogEntry(\n timestamp=now,\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n assert entry1 == entry2\n\n def test_hash(self) -> None:\n \"\"\"LogEntry is hashable (frozen dataclass).\"\"\"\n entry = LogEntry(\n timestamp=datetime.now(),\n client_name=\"test\",\n request=\"test\",\n status=\"success\",\n duration_ms=100,\n )\n # Should not raise\n hash(entry)\n # Can be used in sets\n entry_set = {entry}\n assert entry in entry_set\n",
"structuredPatch": [],
"originalFile": null
}
}