test(integration): Verify history persistence and AI context inclusion
This commit is contained in:
44
tests/test_history_persistence.py
Normal file
44
tests/test_history_persistence.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import pytest
|
||||
import tomli_w
|
||||
import tomllib
|
||||
from pathlib import Path
|
||||
from project_manager import load_project, save_project, default_project, entry_to_str
|
||||
|
||||
def test_history_persistence_across_turns(tmp_path):
|
||||
proj_path = tmp_path / "manual_slop.toml"
|
||||
hist_path = tmp_path / "manual_slop_history.toml"
|
||||
|
||||
# 1. Start project
|
||||
proj = default_project("test-persistence")
|
||||
save_project(proj, proj_path)
|
||||
|
||||
# 2. Add a turn
|
||||
proj = load_project(proj_path)
|
||||
entry1 = {"role": "User", "content": "Hello", "ts": "2026-02-24T13:00:00"}
|
||||
proj["discussion"]["discussions"]["main"]["history"].append(entry_to_str(entry1))
|
||||
save_project(proj, proj_path)
|
||||
|
||||
# Verify separation
|
||||
with open(proj_path, "rb") as f:
|
||||
p_disk = tomllib.load(f)
|
||||
assert "discussion" not in p_disk
|
||||
|
||||
with open(hist_path, "rb") as f:
|
||||
h_disk = tomllib.load(f)
|
||||
assert h_disk["discussions"]["main"]["history"] == ["@2026-02-24T13:00:00\nUser:\nHello"]
|
||||
|
||||
# 3. Add another turn
|
||||
proj = load_project(proj_path)
|
||||
entry2 = {"role": "AI", "content": "Hi there!", "ts": "2026-02-24T13:01:00"}
|
||||
proj["discussion"]["discussions"]["main"]["history"].append(entry_to_str(entry2))
|
||||
save_project(proj, proj_path)
|
||||
|
||||
# Verify persistence
|
||||
with open(hist_path, "rb") as f:
|
||||
h_disk = tomllib.load(f)
|
||||
assert len(h_disk["discussions"]["main"]["history"]) == 2
|
||||
assert h_disk["discussions"]["main"]["history"][1] == "@2026-02-24T13:01:00\nAI:\nHi there!"
|
||||
|
||||
# 4. Reload and check
|
||||
proj_final = load_project(proj_path)
|
||||
assert len(proj_final["discussion"]["discussions"]["main"]["history"]) == 2
|
||||
Reference in New Issue
Block a user