This commit is contained in:
+32
-14
@@ -37,8 +37,8 @@ def test_history_db_job_and_events_roundtrip(tmp_path: Path) -> None:
|
||||
assert job["status"] == "completed"
|
||||
assert job["model"] == "gpt-5.4-mini"
|
||||
assert job["disabled_tools"] == ["click"]
|
||||
assert job["response"]["return"] == "Done"
|
||||
assert job["response"]["data"]["files"] == ["a.txt", "b.txt"]
|
||||
assert job["return"] == "Done"
|
||||
assert job["data"]["files"] == ["a.txt", "b.txt"]
|
||||
assert job["usage"]["estimated_cost_usd"] == 0.1234
|
||||
|
||||
events = db.get_job_events(job_id, limit=10)
|
||||
@@ -70,11 +70,11 @@ def test_storage_response_fallback_uses_result_when_json_missing(tmp_path: Path)
|
||||
db.update_job(job_id, status="completed", result="Legacy result string")
|
||||
job = db.get_job(job_id)
|
||||
assert job is not None
|
||||
assert job["response"]["return"] == "Legacy result string"
|
||||
assert job["response"]["data"] is None
|
||||
assert job["return"] == "Legacy result string"
|
||||
assert job["data"] is None
|
||||
|
||||
|
||||
def test_history_db_analytics_groups_by_category_and_day(tmp_path: Path) -> None:
|
||||
def test_history_db_analytics_groups_by_category(tmp_path: Path) -> None:
|
||||
db = HistoryDB(tmp_path / "screenjob_test_analytics.db")
|
||||
|
||||
db.create_job(
|
||||
@@ -108,14 +108,6 @@ def test_history_db_analytics_groups_by_category_and_day(tmp_path: Path) -> None
|
||||
db.update_job("job_terminal_ok", status="completed", steps=10, estimated_cost_usd=0.05)
|
||||
|
||||
analytics = db.analytics()
|
||||
assert analytics["total_jobs"] == 3
|
||||
assert analytics["finished_jobs"] == 3
|
||||
assert analytics["completed_jobs"] == 2
|
||||
assert analytics["failed_jobs"] == 1
|
||||
assert analytics["success_rate"] == 66.67
|
||||
assert analytics["avg_steps"] == 6.67
|
||||
assert analytics["avg_cost_usd"] == 0.136667
|
||||
|
||||
browser = next(row for row in analytics["by_category"] if row["label"] == "Browser / web")
|
||||
terminal = next(row for row in analytics["by_category"] if row["label"] == "Files / terminal")
|
||||
assert browser["finished_jobs"] == 2
|
||||
@@ -123,4 +115,30 @@ def test_history_db_analytics_groups_by_category_and_day(tmp_path: Path) -> None
|
||||
assert browser["avg_steps"] == 5.0
|
||||
assert terminal["success_rate"] == 100.0
|
||||
|
||||
assert [row["label"] for row in analytics["timeline"]] == ["2026-05-27", "2026-05-28"]
|
||||
|
||||
def test_prune_older_than_removes_old_terminal_jobs(tmp_path: Path) -> None:
|
||||
db = HistoryDB(tmp_path / "screenjob_prune.db")
|
||||
db.create_job(
|
||||
job_id="job_old",
|
||||
objective="Old",
|
||||
model="gpt-5.4-mini",
|
||||
created_at="2000-01-01T00:00:00+00:00",
|
||||
safety_override=False,
|
||||
disabled_tools=[],
|
||||
)
|
||||
db.update_job("job_old", status="completed")
|
||||
db.add_event(job_id="job_old", ts="2000-01-01T00:00:01+00:00", step=1, event_type="done", payload={})
|
||||
|
||||
db.create_job(
|
||||
job_id="job_running",
|
||||
objective="Running",
|
||||
model="gpt-5.4-mini",
|
||||
created_at="2000-01-01T00:00:00+00:00",
|
||||
safety_override=False,
|
||||
disabled_tools=[],
|
||||
)
|
||||
db.update_job("job_running", status="running")
|
||||
|
||||
assert db.prune_older_than(7) == 1
|
||||
assert db.get_job("job_old") is None
|
||||
assert db.get_job("job_running") is not None
|
||||
|
||||
Reference in New Issue
Block a user