summaryrefslogtreecommitdiff
path: root/tests/test_memory_store.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_memory_store.py')
-rw-r--r--tests/test_memory_store.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/test_memory_store.py b/tests/test_memory_store.py
index 8f3407d..b83d217 100644
--- a/tests/test_memory_store.py
+++ b/tests/test_memory_store.py
@@ -211,3 +211,62 @@ def test_search_respects_limit(tmp_path):
store.add(memory)
assert store.search("programming", limit=2) == memories[:2]
+
+
+def test_search_uses_fts(tmp_path):
+ database = Database(tmp_path / "agent.db")
+ database.migrate()
+ store = LongTermMemoryStore(database)
+
+ memory = LongTermMemory.create(
+ "User prefers Rust for systems programming.",
+ MemoryCategory.SEMANTIC,
+ )
+ store.add(memory)
+
+ results = store.search("preferred systems programming language")
+
+ assert [result.id for result in results] == [memory.id]
+
+
+def test_delete_removes_memory_from_search(tmp_path):
+ database = Database(tmp_path / "agent.db")
+ database.migrate()
+ store = LongTermMemoryStore(database)
+
+ memory = LongTermMemory.create(
+ "User prefers Rust for systems programming.",
+ MemoryCategory.SEMANTIC,
+ )
+ store.add(memory)
+
+ assert store.search("Rust")
+
+ store.delete(memory.id)
+
+ assert store.search("Rust") == []
+
+
+def test_search_filters_by_category(tmp_path):
+ database = Database(tmp_path / "agent.db")
+ database.migrate()
+ store = LongTermMemoryStore(database)
+
+ semantic = LongTermMemory.create(
+ "User prefers Rust.",
+ MemoryCategory.SEMANTIC,
+ )
+ episodic = LongTermMemory.create(
+ "User used Rust on a filesystem project.",
+ MemoryCategory.EPISODIC,
+ )
+
+ store.add(semantic)
+ store.add(episodic)
+
+ results = store.search(
+ "Rust",
+ category=MemoryCategory.EPISODIC,
+ )
+
+ assert [result.id for result in results] == [episodic.id]