11import pytest
22from unittest .mock import AsyncMock , Mock , patch
33from a2a .client .client_task_manager import ClientTaskManager
4- from a2a .client .errors import A2AClientInvalidArgsError , A2AClientInvalidStateError
4+ from a2a .client .errors import (
5+ A2AClientInvalidArgsError ,
6+ A2AClientInvalidStateError ,
7+ )
58from a2a .types import (
69 Task ,
710 TaskStatus ,
@@ -24,8 +27,8 @@ def task_manager():
2427@pytest .fixture
2528def sample_task ():
2629 return Task (
27- id = " task123" ,
28- context_id = " context456" ,
30+ id = ' task123' ,
31+ context_id = ' context456' ,
2932 status = TaskStatus (state = TaskState .working ),
3033 history = [],
3134 artifacts = [],
@@ -35,18 +38,20 @@ def sample_task():
3538@pytest .fixture
3639def sample_message ():
3740 return Message (
38- message_id = " msg1" ,
41+ message_id = ' msg1' ,
3942 role = Role .user ,
40- parts = [Part (root = TextPart (text = " Hello" ))],
43+ parts = [Part (root = TextPart (text = ' Hello' ))],
4144 )
4245
4346
4447def test_get_task_no_task_id_returns_none (task_manager : ClientTaskManager ):
4548 assert task_manager .get_task () is None
4649
4750
48- def test_get_task_or_raise_no_task_raises_error (task_manager : ClientTaskManager ):
49- with pytest .raises (A2AClientInvalidStateError , match = "no current Task" ):
51+ def test_get_task_or_raise_no_task_raises_error (
52+ task_manager : ClientTaskManager ,
53+ ):
54+ with pytest .raises (A2AClientInvalidStateError , match = 'no current Task' ):
5055 task_manager .get_task_or_raise ()
5156
5257
@@ -67,7 +72,7 @@ async def test_save_task_event_with_task_already_set_raises_error(
6772 await task_manager .save_task_event (sample_task )
6873 with pytest .raises (
6974 A2AClientInvalidArgsError ,
70- match = " Task is already set, create new manager for new tasks." ,
75+ match = ' Task is already set, create new manager for new tasks.' ,
7176 ):
7277 await task_manager .save_task_event (sample_task )
7378
@@ -94,15 +99,17 @@ async def test_save_task_event_with_artifact_update(
9499):
95100 await task_manager .save_task_event (sample_task )
96101 artifact = Artifact (
97- artifact_id = " art1" , parts = [Part (root = TextPart (text = " artifact content" ))]
102+ artifact_id = ' art1' , parts = [Part (root = TextPart (text = ' artifact content' ))]
98103 )
99104 artifact_update = TaskArtifactUpdateEvent (
100105 task_id = sample_task .id ,
101106 context_id = sample_task .context_id ,
102107 artifact = artifact ,
103108 )
104109
105- with patch ("a2a.client.client_task_manager.append_artifact_to_task" ) as mock_append :
110+ with patch (
111+ 'a2a.client.client_task_manager.append_artifact_to_task'
112+ ) as mock_append :
106113 updated_task = await task_manager .save_task_event (artifact_update )
107114 mock_append .assert_called_once_with (updated_task , artifact_update )
108115
@@ -112,21 +119,23 @@ async def test_save_task_event_creates_task_if_not_exists(
112119 task_manager : ClientTaskManager ,
113120):
114121 status_update = TaskStatusUpdateEvent (
115- task_id = " new_task" ,
116- context_id = " new_context" ,
122+ task_id = ' new_task' ,
123+ context_id = ' new_context' ,
117124 status = TaskStatus (state = TaskState .working ),
118125 final = False ,
119126 )
120127 updated_task = await task_manager .save_task_event (status_update )
121128 assert updated_task is not None
122- assert updated_task .id == " new_task"
129+ assert updated_task .id == ' new_task'
123130 assert updated_task .status .state == TaskState .working
124131
125132
126133@pytest .mark .asyncio
127- async def test_process_with_task_event (task_manager : ClientTaskManager , sample_task : Task ):
134+ async def test_process_with_task_event (
135+ task_manager : ClientTaskManager , sample_task : Task
136+ ):
128137 with patch .object (
129- task_manager , " save_task_event" , new_callable = AsyncMock
138+ task_manager , ' save_task_event' , new_callable = AsyncMock
130139 ) as mock_save :
131140 await task_manager .process (sample_task )
132141 mock_save .assert_called_once_with (sample_task )
@@ -135,9 +144,9 @@ async def test_process_with_task_event(task_manager: ClientTaskManager, sample_t
135144@pytest .mark .asyncio
136145async def test_process_with_non_task_event (task_manager : ClientTaskManager ):
137146 with patch .object (
138- task_manager , " save_task_event" , new_callable = Mock
147+ task_manager , ' save_task_event' , new_callable = Mock
139148 ) as mock_save :
140- non_task_event = " not a task event"
149+ non_task_event = ' not a task event'
141150 await task_manager .process (non_task_event )
142151 mock_save .assert_not_called ()
143152
@@ -153,9 +162,9 @@ def test_update_with_message_moves_status_message(
153162 task_manager : ClientTaskManager , sample_task : Task , sample_message : Message
154163):
155164 status_message = Message (
156- message_id = " status_msg" ,
165+ message_id = ' status_msg' ,
157166 role = Role .agent ,
158- parts = [Part (root = TextPart (text = " Status" ))],
167+ parts = [Part (root = TextPart (text = ' Status' ))],
159168 )
160169 sample_task .status .message = status_message
161170 updated_task = task_manager .update_with_message (sample_message , sample_task )
0 commit comments