22
33import pytest
44from httpx import AsyncClient
5+ from pathlib import Path
56
67from basic_memory .models import Entity , Project
78
89
10+ async def create_test_entity (test_project , entity_data , entity_repository , search_service , file_service ):
11+ """Helper to create an entity with file and index it."""
12+ # Create file
13+ test_content = f"# { entity_data ['title' ]} \n \n Test content"
14+ file_path = Path (test_project .path ) / entity_data ["file_path" ]
15+ file_path .parent .mkdir (parents = True , exist_ok = True )
16+ await file_service .write_file (file_path , test_content )
17+
18+ # Create entity
19+ entity = await entity_repository .create (entity_data )
20+
21+ # Index for search
22+ await search_service .index_entity (entity )
23+
24+ return entity
25+
26+
927@pytest .mark .asyncio
1028async def test_get_recent_context (
1129 client : AsyncClient ,
1230 test_project : Project ,
1331 v2_project_url : str ,
1432 entity_repository ,
33+ search_service ,
34+ file_service ,
1535):
1636 """Test getting recent activity context."""
17- # Create a test entity
1837 entity_data = {
1938 "title" : "Recent Test Entity" ,
2039 "entity_type" : "note" ,
2140 "content_type" : "text/markdown" ,
2241 "file_path" : "recent_test.md" ,
2342 "checksum" : "abc123" ,
2443 }
25- await entity_repository . create ( entity_data )
44+ await create_test_entity ( test_project , entity_data , entity_repository , search_service , file_service )
2645
2746 # Get recent context
2847 response = await client .get (f"{ v2_project_url } /memory/recent" )
2948
3049 assert response .status_code == 200
3150 data = response .json ()
3251
33- # Verify response structure
34- assert "entities" in data
52+ # Verify response structure (GraphContext uses 'results' not 'entities')
53+ assert "results" in data
54+ assert "metadata" in data
3555 assert "page" in data
36- assert "total" in data
37- assert "has_more" in data
56+ assert "page_size" in data
3857
3958
4059@pytest .mark .asyncio
@@ -43,18 +62,20 @@ async def test_get_recent_context_with_pagination(
4362 test_project : Project ,
4463 v2_project_url : str ,
4564 entity_repository ,
65+ search_service ,
4666):
4767 """Test recent context with pagination parameters."""
4868 # Create multiple test entities
4969 for i in range (5 ):
5070 entity_data = {
5171 "title" : f"Entity { i } " ,
5272 "entity_type" : "note" ,
53- "content_type" : "text/markdown" ,
73+ "content_type" : "text/markdown" ,
5474 "file_path" : f"entity_{ i } .md" ,
5575 "checksum" : f"checksum{ i } " ,
5676 }
57- await entity_repository .create (entity_data )
77+ entity = await entity_repository .create (entity_data )
78+ await search_service .index_entity (entity )
5879
5980 # Get recent context with pagination
6081 response = await client .get (
@@ -64,7 +85,7 @@ async def test_get_recent_context_with_pagination(
6485
6586 assert response .status_code == 200
6687 data = response .json ()
67- assert "entities " in data
88+ assert "results " in data
6889 assert data ["page" ] == 1
6990 assert data ["page_size" ] == 3
7091
@@ -75,6 +96,7 @@ async def test_get_recent_context_with_type_filter(
7596 test_project : Project ,
7697 v2_project_url : str ,
7798 entity_repository ,
99+ search_service ,
78100):
79101 """Test filtering recent context by type."""
80102 # Create a test entity
@@ -85,7 +107,8 @@ async def test_get_recent_context_with_type_filter(
85107 "file_path" : "filtered.md" ,
86108 "checksum" : "xyz789" ,
87109 }
88- await entity_repository .create (entity_data )
110+ entity = await entity_repository .create (entity_data )
111+ await search_service .index_entity (entity )
89112
90113 # Get recent context filtered by type
91114 response = await client .get (
@@ -95,7 +118,7 @@ async def test_get_recent_context_with_type_filter(
95118
96119 assert response .status_code == 200
97120 data = response .json ()
98- assert "entities " in data
121+ assert "results " in data
99122
100123
101124@pytest .mark .asyncio
@@ -112,7 +135,7 @@ async def test_get_recent_context_with_timeframe(
112135
113136 assert response .status_code == 200
114137 data = response .json ()
115- assert "entities " in data
138+ assert "results " in data
116139
117140
118141@pytest .mark .asyncio
@@ -131,6 +154,7 @@ async def test_get_memory_context_by_permalink(
131154 test_project : Project ,
132155 v2_project_url : str ,
133156 entity_repository ,
157+ search_service ,
134158):
135159 """Test getting context for a specific memory URI (permalink)."""
136160 # Create a test entity
@@ -143,13 +167,14 @@ async def test_get_memory_context_by_permalink(
143167 "permalink" : "context-test" ,
144168 }
145169 created_entity = await entity_repository .create (entity_data )
170+ await search_service .index_entity (created_entity )
146171
147172 # Get context for this entity
148173 response = await client .get (f"{ v2_project_url } /memory/context-test" )
149174
150175 assert response .status_code == 200
151176 data = response .json ()
152- assert "entities " in data
177+ assert "results " in data
153178
154179
155180@pytest .mark .asyncio
@@ -158,6 +183,7 @@ async def test_get_memory_context_by_id(
158183 test_project : Project ,
159184 v2_project_url : str ,
160185 entity_repository ,
186+ search_service ,
161187):
162188 """Test getting context using ID-based memory URI."""
163189 # Create a test entity
@@ -169,13 +195,14 @@ async def test_get_memory_context_by_id(
169195 "checksum" : "ghi789" ,
170196 }
171197 created_entity = await entity_repository .create (entity_data )
198+ await search_service .index_entity (created_entity )
172199
173200 # Get context using ID format (memory://id/123 or memory://123)
174201 response = await client .get (f"{ v2_project_url } /memory/id/{ created_entity .id } " )
175202
176203 assert response .status_code == 200
177204 data = response .json ()
178- assert "entities " in data
205+ assert "results " in data
179206
180207
181208@pytest .mark .asyncio
@@ -184,6 +211,7 @@ async def test_get_memory_context_with_depth(
184211 test_project : Project ,
185212 v2_project_url : str ,
186213 entity_repository ,
214+ search_service ,
187215):
188216 """Test getting context with depth parameter."""
189217 # Create a test entity
@@ -195,7 +223,8 @@ async def test_get_memory_context_with_depth(
195223 "checksum" : "jkl012" ,
196224 "permalink" : "depth-test" ,
197225 }
198- await entity_repository .create (entity_data )
226+ entity = await entity_repository .create (entity_data )
227+ await search_service .index_entity (entity )
199228
200229 # Get context with depth
201230 response = await client .get (
@@ -205,7 +234,7 @@ async def test_get_memory_context_with_depth(
205234
206235 assert response .status_code == 200
207236 data = response .json ()
208- assert "entities " in data
237+ assert "results " in data
209238
210239
211240@pytest .mark .asyncio
@@ -228,6 +257,7 @@ async def test_get_memory_context_with_timeframe(
228257 test_project : Project ,
229258 v2_project_url : str ,
230259 entity_repository ,
260+ search_service ,
231261):
232262 """Test getting context with timeframe filter."""
233263 # Create a test entity
@@ -239,7 +269,8 @@ async def test_get_memory_context_with_timeframe(
239269 "checksum" : "mno345" ,
240270 "permalink" : "timeframe-test" ,
241271 }
242- await entity_repository .create (entity_data )
272+ entity = await entity_repository .create (entity_data )
273+ await search_service .index_entity (entity )
243274
244275 # Get context with timeframe
245276 response = await client .get (
@@ -249,7 +280,7 @@ async def test_get_memory_context_with_timeframe(
249280
250281 assert response .status_code == 200
251282 data = response .json ()
252- assert "entities " in data
283+ assert "results " in data
253284
254285
255286@pytest .mark .asyncio
0 commit comments