forked from Rockachopa/Timmy-time-dashboard
63 lines
1.9 KiB
Python
63 lines
1.9 KiB
Python
import sys
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# Add project root to path
|
|
project_root = Path(__file__).resolve().parents[1]
|
|
src_path = project_root / "src"
|
|
if str(src_path) not in sys.path:
|
|
sys.path.insert(0, str(src_path))
|
|
|
|
from fastapi.testclient import TestClient # noqa: E402
|
|
|
|
try:
|
|
from dashboard.app import app # noqa: E402
|
|
print("✓ Successfully imported dashboard.app")
|
|
except ImportError as e:
|
|
print(f"✗ Failed to import dashboard.app: {e}")
|
|
sys.exit(1)
|
|
|
|
client = TestClient(app)
|
|
|
|
def test_v1_status():
|
|
response = client.get("/api/v1/status")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "timmy" in data
|
|
assert "model" in data
|
|
assert "uptime" in data
|
|
|
|
def test_v1_chat_history():
|
|
# Append a message first to ensure history is not empty
|
|
from dashboard.store import message_log
|
|
message_log.append(role="user", content="test message", timestamp="12:00:00", source="api-v1")
|
|
|
|
response = client.get("/api/v1/chat/history")
|
|
assert response.status_code == 200
|
|
data = response.json()
|
|
assert "messages" in data
|
|
assert len(data["messages"]) > 0
|
|
# The message_log.recent() returns reversed(rows) so the last one should be our test message
|
|
assert data["messages"][-1]["content"] == "test message"
|
|
|
|
def test_v1_upload_fail():
|
|
# Test without file
|
|
response = client.post("/api/v1/upload")
|
|
assert response.status_code == 422 # Unprocessable Entity (missing file)
|
|
|
|
if __name__ == "__main__":
|
|
print("Running API v1 tests...")
|
|
try:
|
|
test_v1_status()
|
|
print("✓ Status test passed")
|
|
test_v1_chat_history()
|
|
print("✓ History test passed")
|
|
test_v1_upload_fail()
|
|
print("✓ Upload failure test passed")
|
|
print("All tests passed!")
|
|
except Exception as e:
|
|
print(f"Test failed: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
sys.exit(1)
|