@@ -534,6 +534,58 @@ async def test_metadata_field_mapping(
534534 assert retrieved_none .metadata == {}
535535
536536
537+ @pytest .mark .asyncio
538+ async def test_metadata_empty_transitions (
539+ vertex_store : VertexTaskStore ,
540+ ) -> None :
541+ """Test that updating metadata between {} and None does not generate events."""
542+ task_id = 'task-metadata-empty-test'
543+
544+ # Step 1: Create task with metadata={}
545+ task = Task (
546+ id = task_id ,
547+ context_id = 'session-meta-empty' ,
548+ status = TaskStatus (state = TaskState .TASK_STATE_SUBMITTED ),
549+ metadata = {},
550+ )
551+ await vertex_store .save (task , ServerCallContext ())
552+
553+ full_name = f'{ vertex_store ._agent_engine_resource_id } /a2aTasks/{ task_id } '
554+
555+ # Get initial event sequence number
556+ stored_task_before = (
557+ await vertex_store ._client .aio .agent_engines .a2a_tasks .get (
558+ name = full_name
559+ )
560+ )
561+ initial_seq = stored_task_before .next_event_sequence_number
562+
563+ # Step 2: Update metadata to None
564+ updated_task = Task ()
565+ updated_task .CopyFrom (task )
566+ updated_task .metadata .Clear ()
567+ await vertex_store .save (updated_task , ServerCallContext ())
568+
569+ # Step 3: Update back to {}
570+ task_back = Task ()
571+ task_back .CopyFrom (updated_task )
572+ task_back .metadata = {}
573+ await vertex_store .save (task_back , ServerCallContext ())
574+
575+ # Verify that retrieved task still has {} (due to mapping)
576+ retrieved = await vertex_store .get (task_id , ServerCallContext ())
577+ assert retrieved is not None
578+ assert retrieved .metadata == {}
579+
580+ # Verify that next_event_sequence_number did NOT increase (no events generated)
581+ stored_task_after = (
582+ await vertex_store ._client .aio .agent_engines .a2a_tasks .get (
583+ name = full_name
584+ )
585+ )
586+ assert stored_task_after .next_event_sequence_number == initial_seq
587+
588+
537589@pytest .mark .asyncio
538590async def test_update_task_status_details (
539591 vertex_store : VertexTaskStore ,
0 commit comments