from src.preferences import ( append_preference, delete_preference, list_preferences, load_preferences, ) def test_load_preferences_empty(): assert load_preferences("user@oliver.agency") == "" def test_append_and_list(): pid1 = append_preference("user@oliver.agency", "Prefer concise answers") pid2 = append_preference("user@oliver.agency", "Always cite the data") rows = list_preferences("user@oliver.agency") assert [r["text"] for r in rows] == ["Prefer concise answers", "Always cite the data"] assert {r["id"] for r in rows} == {pid1, pid2} def test_load_preferences_formats_as_bullets(): append_preference("user@oliver.agency", "First") append_preference("user@oliver.agency", "Second") text = load_preferences("user@oliver.agency") assert "- First" in text assert "- Second" in text def test_per_user_isolation(): append_preference("alice@oliver.agency", "Alice's preference") append_preference("bob@oliver.agency", "Bob's preference") alice = list_preferences("alice@oliver.agency") bob = list_preferences("bob@oliver.agency") assert [r["text"] for r in alice] == ["Alice's preference"] assert [r["text"] for r in bob] == ["Bob's preference"] def test_delete_preference(): pid = append_preference("user@oliver.agency", "To be deleted") assert delete_preference("user@oliver.agency", pid) is True assert list_preferences("user@oliver.agency") == [] def test_delete_other_users_preference_fails(): pid = append_preference("alice@oliver.agency", "Alice's secret") assert delete_preference("bob@oliver.agency", pid) is False # Still there assert len(list_preferences("alice@oliver.agency")) == 1 def test_load_preferences_no_user_returns_empty(): assert load_preferences(None) == "" assert load_preferences("") == ""