fix: force re-render campaign tracking, cache dir loading, Joplin link preservation. Co-Authored-By: Fable 5
This commit is contained in:
@@ -184,6 +184,39 @@ class TestGetNewOrUpdated:
|
||||
tmp_cache.mark_exported("claude", c["id"], {"file_path": f"/{c['id']}.md"})
|
||||
assert seen == {f"c{i}" for i in range(5)}
|
||||
|
||||
def test_campaign_excludes_already_refreshed(self, tmp_cache):
|
||||
"""With a campaign stamp, conversations re-exported during the campaign
|
||||
(exported_at >= stamp) drop out, so the remaining count shrinks to 0."""
|
||||
convs = [{"id": f"c{i}"} for i in range(5)]
|
||||
campaign = "2026-06-12T00:00:00+00:00"
|
||||
# Nothing exported yet → all 5 are candidates.
|
||||
assert len(tmp_cache.get_new_or_updated("claude", convs, force=True,
|
||||
campaign_at=campaign)) == 5
|
||||
# Re-export 2 "during" the campaign (after the stamp).
|
||||
for cid in ("c0", "c1"):
|
||||
tmp_cache.mark_exported("claude", cid, {"file_path": f"/{cid}.md"})
|
||||
tmp_cache._data["claude"][cid]["exported_at"] = "2026-06-12T01:00:00+00:00"
|
||||
remaining = tmp_cache.get_new_or_updated("claude", convs, force=True,
|
||||
campaign_at=campaign)
|
||||
assert {c["id"] for c in remaining} == {"c2", "c3", "c4"}
|
||||
# Finish them → none left.
|
||||
for cid in ("c2", "c3", "c4"):
|
||||
tmp_cache.mark_exported("claude", cid, {"file_path": f"/{cid}.md"})
|
||||
tmp_cache._data["claude"][cid]["exported_at"] = "2026-06-12T02:00:00+00:00"
|
||||
assert tmp_cache.get_new_or_updated("claude", convs, force=True,
|
||||
campaign_at=campaign) == []
|
||||
|
||||
def test_force_campaign_marker_roundtrip(self, tmp_cache):
|
||||
assert tmp_cache.get_force_campaign() is None
|
||||
tmp_cache.set_force_campaign("2026-06-12T00:00:00+00:00")
|
||||
assert tmp_cache.get_force_campaign() == "2026-06-12T00:00:00+00:00"
|
||||
# Survives reload, and is not mistaken for a provider by stats().
|
||||
reopened = Cache(tmp_cache._dir)
|
||||
assert reopened.get_force_campaign() == "2026-06-12T00:00:00+00:00"
|
||||
assert "force_campaign_at" not in reopened.stats()
|
||||
tmp_cache.clear_force_campaign()
|
||||
assert tmp_cache.get_force_campaign() is None
|
||||
|
||||
|
||||
class TestReexportPreservesJoplinLink:
|
||||
"""A re-export must not drop the Joplin note link, or re-syncing would
|
||||
|
||||
Reference in New Issue
Block a user