Skip to content

Commit 7cb11db

Browse files
committed
Test pydantic usage in workflow
1 parent 5a9756f commit 7cb11db

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/contrib/test_pydantic.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,52 @@ async def test_mixed_collection_types(client: Client):
166166
)
167167
assert orig_dataclass_objects == round_tripped_dataclass_objects
168168
assert orig_pydantic_objects == round_tripped_pydantic_objects
169+
170+
171+
@workflow.defn
172+
class PydanticModelInWorkflow:
173+
@workflow.run
174+
async def run(self) -> None:
175+
o1, _ = make_pydantic_objects()
176+
assert isinstance(o1, MyPydanticModel)
177+
assert isinstance(o1, BaseModel)
178+
assert isinstance(o1.ip_field, IPv4Address)
179+
assert isinstance(o1.datetime_field, datetime)
180+
assert isinstance(o1.string_field_assigned_field, str)
181+
assert isinstance(o1.datetime_field_assigned_field, datetime)
182+
assert isinstance(o1.string_field_with_default, str)
183+
assert isinstance(o1.datetime_field_with_default, datetime)
184+
assert isinstance(o1.annotated_datetime, datetime)
185+
assert isinstance(o1.annotated_list_of_str, list)
186+
assert isinstance(o1.annotated_list_of_datetime, list)
187+
assert isinstance(o1.str_short_sequence, list)
188+
assert isinstance(o1.datetime_short_sequence, list)
189+
assert o1.annotated_datetime == datetime(2000, 1, 2, 3, 4, 5)
190+
assert o1.annotated_list_of_str == ["my-string-1", "my-string-2"]
191+
assert o1.annotated_list_of_datetime == [
192+
datetime(2000, 1, 2, 3, 4, 5),
193+
datetime(2000, 11, 12, 13, 14, 15),
194+
]
195+
assert o1.str_short_sequence == ["my-string-1", "my-string-2"]
196+
assert o1.datetime_short_sequence == [
197+
datetime(2000, 1, 2, 3, 4, 5),
198+
datetime(2000, 11, 12, 13, 14, 15),
199+
]
200+
201+
202+
async def test_pydantic_usage_in_workflow(client: Client):
203+
new_config = client.config()
204+
new_config["data_converter"] = pydantic_data_converter
205+
client = Client(**new_config)
206+
task_queue_name = str(uuid.uuid4())
207+
208+
async with Worker(
209+
client,
210+
task_queue=task_queue_name,
211+
workflows=[PydanticModelInWorkflow],
212+
):
213+
await client.execute_workflow(
214+
PydanticModelInWorkflow.run,
215+
id=str(uuid.uuid4()),
216+
task_queue=task_queue_name,
217+
)

0 commit comments

Comments
 (0)