@@ -1197,6 +1197,70 @@ async def test_append_event():
11971197 assert retrieved_session .events [1 ] == event_to_append
11981198
11991199
1200+ @pytest .mark .asyncio
1201+ @pytest .mark .usefixtures ('mock_get_api_client' )
1202+ async def test_append_event_updates_session_last_update_time () -> None :
1203+ """Appending an event updates session.last_update_time to event.timestamp."""
1204+ session_service = mock_vertex_ai_session_service ()
1205+ session = await session_service .create_session (
1206+ app_name = '123' , user_id = 'user' , session_id = 'test_update_time_session'
1207+ )
1208+ original_update_time = session .last_update_time
1209+
1210+ event_timestamp = original_update_time + 10.0
1211+ event = Event (
1212+ invocation_id = 'invocation' ,
1213+ author = 'user' ,
1214+ timestamp = event_timestamp ,
1215+ )
1216+ await session_service .append_event (session = session , event = event )
1217+
1218+ assert session .last_update_time == pytest .approx (event_timestamp , abs = 1e-6 )
1219+
1220+
1221+ @pytest .mark .asyncio
1222+ @pytest .mark .usefixtures ('mock_get_api_client' )
1223+ async def test_append_event_partial_does_not_update_session_last_update_time ():
1224+ """Partial events do not update session.last_update_time or persist."""
1225+ session_service = mock_vertex_ai_session_service ()
1226+ session = await session_service .create_session (
1227+ app_name = '123' , user_id = 'user' , session_id = 'test_partial_session'
1228+ )
1229+ original_update_time = session .last_update_time
1230+
1231+ event = Event (
1232+ invocation_id = 'invocation' ,
1233+ author = 'user' ,
1234+ timestamp = original_update_time + 10.0 ,
1235+ partial = True ,
1236+ )
1237+ await session_service .append_event (session = session , event = event )
1238+
1239+ assert session .last_update_time == original_update_time
1240+ assert len (session .events ) == 0
1241+
1242+
1243+ @pytest .mark .asyncio
1244+ @pytest .mark .usefixtures ('mock_get_api_client' )
1245+ async def test_append_multiple_events_advances_last_update_time () -> None :
1246+ """Multiple sequential appends advance session.last_update_time each time."""
1247+ session_service = mock_vertex_ai_session_service ()
1248+ session = await session_service .create_session (
1249+ app_name = '123' , user_id = 'user' , session_id = 'test_multi_update_session'
1250+ )
1251+ original_update_time = session .last_update_time
1252+
1253+ t1 = original_update_time + 10.0
1254+ event1 = Event (invocation_id = 'inv1' , author = 'user' , timestamp = t1 )
1255+ await session_service .append_event (session = session , event = event1 )
1256+ assert session .last_update_time == pytest .approx (t1 , abs = 1e-6 )
1257+
1258+ t2 = original_update_time + 20.0
1259+ event2 = Event (invocation_id = 'inv2' , author = 'model' , timestamp = t2 )
1260+ await session_service .append_event (session = session , event = event2 )
1261+ assert session .last_update_time == pytest .approx (t2 , abs = 1e-6 )
1262+
1263+
12001264@pytest .mark .asyncio
12011265async def test_append_event_does_not_mutate_session_on_remote_failure () -> None :
12021266 """A failed remote append must not mutate the session.
0 commit comments