File size: 1,127 Bytes
2e818da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from pathlib import Path

from app.services.project_activity import ProjectActivityService


def test_activity_service_appends_and_lists_newest_first(tmp_path):
    service = ProjectActivityService(root=str(tmp_path))

    first = service.record("p1", "paper_added", "Added paper", status="running", metadata={"file": "a.pdf"})
    second = service.record("p1", "memory_flush", "Project memory deepened")

    rows = service.list("p1")

    assert [row.event_id for row in rows] == [second.event_id, first.event_id]
    assert rows[0].event_type == "memory_flush"
    assert rows[1].metadata == {"file": "a.pdf"}
    assert Path(tmp_path / "p1.jsonl").exists()


def test_activity_service_token_usage_helper(tmp_path):
    service = ProjectActivityService(root=str(tmp_path))

    service.record_llm_usage(
        project_id="p1",
        operation="structured_complete",
        tokens=120,
        elapsed_seconds=0.5,
        model="gemma-4-31b",
    )

    row = service.list("p1")[0]
    assert row.event_type == "llm_usage"
    assert row.metadata["tokens"] == 120
    assert row.metadata["tokens_per_second"] == 240.0