Skip to content

Commit e2541c0

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

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

tests/contrib/test_pydantic.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,3 +166,53 @@ 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 issubclass(o1.annotated_datetime.__class__, datetime)
181+
assert isinstance(o1.string_field_assigned_field, str)
182+
assert isinstance(o1.datetime_field_assigned_field, datetime)
183+
assert isinstance(o1.string_field_with_default, str)
184+
assert isinstance(o1.datetime_field_with_default, datetime)
185+
assert isinstance(o1.annotated_datetime, datetime)
186+
assert isinstance(o1.annotated_list_of_str, list)
187+
assert isinstance(o1.annotated_list_of_datetime, list)
188+
assert isinstance(o1.str_short_sequence, list)
189+
assert isinstance(o1.datetime_short_sequence, list)
190+
assert o1.annotated_datetime == datetime(2000, 1, 2, 3, 4, 5)
191+
assert o1.annotated_list_of_str == ["my-string-1", "my-string-2"]
192+
assert o1.annotated_list_of_datetime == [
193+
datetime(2000, 1, 2, 3, 4, 5),
194+
datetime(2000, 11, 12, 13, 14, 15),
195+
]
196+
assert o1.str_short_sequence == ["my-string-1", "my-string-2"]
197+
assert o1.datetime_short_sequence == [
198+
datetime(2000, 1, 2, 3, 4, 5),
199+
datetime(2000, 11, 12, 13, 14, 15),
200+
]
201+
202+
203+
async def test_pydantic_usage_in_workflow(client: Client):
204+
new_config = client.config()
205+
new_config["data_converter"] = pydantic_data_converter
206+
client = Client(**new_config)
207+
task_queue_name = str(uuid.uuid4())
208+
209+
async with Worker(
210+
client,
211+
task_queue=task_queue_name,
212+
workflows=[PydanticModelInWorkflow],
213+
):
214+
await client.execute_workflow(
215+
PydanticModelInWorkflow.run,
216+
id=str(uuid.uuid4()),
217+
task_queue=task_queue_name,
218+
)

0 commit comments

Comments
 (0)