55"""
66
77import asyncio
8- from datetime import datetime , timedelta
9-
8+ from datetime import datetime , timedelta , timezone
109import pytest
11-
1210from mcp_as_a_judge .db .providers .sqlite_provider import SQLiteProvider
1311
14-
1512class TestConversationHistoryLifecycle :
1613 """Test the complete lifecycle of conversation history records."""
1714
@@ -50,17 +47,13 @@ async def test_save_retrieve_fifo_cleanup_lifecycle(self):
5047 # Records should be in reverse chronological order (newest first)
5148 sources = [r .source for r in records ]
5249 expected_sources = ["tool_2" , "tool_1" , "tool_0" ] # Newest first
53- assert sources == expected_sources , (
54- f"Expected { expected_sources } , got { sources } "
55- )
50+ assert sources == expected_sources , f"Expected { expected_sources } , got { sources } "
5651
5752 # Verify timestamps are in descending order
5853 timestamps = [r .timestamp for r in records ]
5954 for i in range (len (timestamps ) - 1 ):
60- assert timestamps [i ] >= timestamps [i + 1 ], (
61- "Records should be ordered newest first"
62- )
63-
55+ assert timestamps [i ] >= timestamps [i + 1 ], "Records should be ordered newest first"
56+
6457 print (f"✅ Phase 2: Records retrieved in correct order: { sources } " )
6558
6659 # PHASE 3: Trigger FIFO cleanup by adding more records
@@ -78,16 +71,12 @@ async def test_save_retrieve_fifo_cleanup_lifecycle(self):
7871
7972 # Verify FIFO cleanup worked
8073 records = await db .get_session_conversations (session_id )
81- assert len (records ) == 3 , (
82- f"Expected 3 records after cleanup, got { len (records )} "
83- )
74+ assert len (records ) == 3 , f"Expected 3 records after cleanup, got { len (records )} "
8475
8576 # Should have the 3 most recent records
8677 sources = [r .source for r in records ]
8778 expected_sources = ["tool_4" , "tool_3" , "tool_2" ] # Most recent 3
88- assert sources == expected_sources , (
89- f"Expected { expected_sources } , got { sources } "
90- )
79+ assert sources == expected_sources , f"Expected { expected_sources } , got { sources } "
9180
9281 print (f"✅ Phase 3: FIFO cleanup worked correctly: { sources } " )
9382
@@ -180,7 +169,7 @@ async def test_time_based_cleanup_integration(self):
180169 print (f"✅ Before cleanup: { len (records_before )} records" )
181170
182171 # Force time-based cleanup by mocking old cleanup time
183- old_time = datetime .utcnow ( ) - timedelta (days = 2 )
172+ old_time = datetime .now ( timezone . utc ) - timedelta (days = 2 )
184173 db ._last_cleanup_time = old_time
185174
186175 # Trigger cleanup by adding another record
@@ -194,10 +183,7 @@ async def test_time_based_cleanup_integration(self):
194183 # Records should still exist (within retention period)
195184 records_after = await db .get_session_conversations ("time_test_session" )
196185 assert len (records_after ) == 4
197- print (
198- f"✅ After time-based cleanup: { len (records_after )} records "
199- f"(within retention)"
200- )
186+ print (f"✅ After time-based cleanup: { len (records_after )} records (within retention)" )
201187
202188 @pytest .mark .asyncio
203189 async def test_lru_session_cleanup_lifecycle (self ):
@@ -265,7 +251,7 @@ async def test_lru_session_cleanup_lifecycle(self):
265251 print ("\n 🧹 PHASE 3: Triggering LRU session cleanup..." )
266252
267253 # Force cleanup by mocking old cleanup time
268- old_time = datetime .utcnow ( ) - timedelta (days = 2 )
254+ old_time = datetime .now ( timezone . utc ) - timedelta (days = 2 )
269255 db ._cleanup_service .last_session_cleanup_time = old_time
270256
271257 # Trigger cleanup
@@ -280,13 +266,7 @@ async def test_lru_session_cleanup_lifecycle(self):
280266 # PHASE 4: Verify which sessions remain
281267 print ("\n 🔍 PHASE 4: Verifying remaining sessions..." )
282268
283- sessions_to_check = [
284- "session_A" ,
285- "session_B" ,
286- "session_C" ,
287- "session_D" ,
288- "session_E" ,
289- ]
269+ sessions_to_check = ["session_A" , "session_B" , "session_C" , "session_D" , "session_E" ]
290270 remaining_sessions = []
291271 deleted_sessions = []
292272
@@ -295,10 +275,7 @@ async def test_lru_session_cleanup_lifecycle(self):
295275 if records :
296276 remaining_sessions .append (session_id )
297277 last_activity = max (r .timestamp for r in records )
298- print (
299- f" ✅ { session_id } : { len (records )} records, "
300- f"last activity: { last_activity } "
301- )
278+ print (f" ✅ { session_id } : { len (records )} records, last activity: { last_activity } " )
302279 else :
303280 deleted_sessions .append (session_id )
304281 print (f" ❌ { session_id } : DELETED (was least recently used)" )
0 commit comments