|
20 | 20 | replace_url_origin, |
21 | 21 | ) |
22 | 22 | from durabletask import history as dt_history, task as dt_task |
23 | | -from durabletask.client import AsyncTaskHubGrpcClient, OrchestrationStatus |
| 23 | +from durabletask.client import AsyncTaskHubGrpcClient, OrchestrationStatus, PurgeInstancesResult |
24 | 24 | from durabletask.entities import EntityInstanceId |
25 | 25 | from durabletask.internal import orchestrator_service_pb2 as pb |
26 | 26 | from durabletask.task import RetryPolicy |
@@ -1288,14 +1288,54 @@ async def test_get_status_by_returns_wrapped_list(): |
1288 | 1288 | # Return-type shims: PurgeHistoryResult |
1289 | 1289 | # --------------------------------------------------------------------------- |
1290 | 1290 |
|
| 1291 | +@pytest.mark.parametrize("recursive", [None, True, False]) |
| 1292 | +def test_sync_purge_orchestration_request(recursive: bool | None) -> None: |
| 1293 | + client = df.SyncDurableFunctionsClient(_CLIENT_CONFIG) |
| 1294 | + stub = Mock() |
| 1295 | + stub.PurgeInstances.return_value = pb.PurgeInstancesResponse(deletedInstanceCount=3) |
| 1296 | + try: |
| 1297 | + with patch.object(client, "_stub", stub): |
| 1298 | + if recursive is None: |
| 1299 | + result = client.purge_orchestration("abc") |
| 1300 | + else: |
| 1301 | + result = client.purge_orchestration("abc", recursive=recursive) |
| 1302 | + stub.PurgeInstances.assert_called_once_with(pb.PurgeInstancesRequest( |
| 1303 | + instanceId="abc", recursive=True if recursive is None else recursive, |
| 1304 | + isOrchestration=True)) |
| 1305 | + assert result == PurgeInstancesResult(deleted_instance_count=3, is_complete=None) |
| 1306 | + finally: |
| 1307 | + client.close() |
| 1308 | + |
| 1309 | + |
| 1310 | +@pytest.mark.parametrize("recursive", [None, True, False]) |
| 1311 | +async def test_async_purge_orchestration_request(recursive: bool | None) -> None: |
| 1312 | + client = _make_client() |
| 1313 | + stub = Mock() |
| 1314 | + stub.PurgeInstances = AsyncMock(return_value=pb.PurgeInstancesResponse(deletedInstanceCount=3)) |
| 1315 | + try: |
| 1316 | + with patch.object(client, "_get_stub", return_value=stub): |
| 1317 | + if recursive is None: |
| 1318 | + result = await client.purge_orchestration("abc") |
| 1319 | + else: |
| 1320 | + result = await client.purge_orchestration("abc", recursive=recursive) |
| 1321 | + stub.PurgeInstances.assert_awaited_once_with(pb.PurgeInstancesRequest( |
| 1322 | + instanceId="abc", recursive=True if recursive is None else recursive, |
| 1323 | + isOrchestration=True)) |
| 1324 | + assert result == PurgeInstancesResult(deleted_instance_count=3, is_complete=None) |
| 1325 | + finally: |
| 1326 | + await client.close() |
| 1327 | + |
| 1328 | + |
1291 | 1329 | async def test_purge_instance_history_returns_purge_history_result(): |
1292 | 1330 | client = _make_client() |
| 1331 | + stub = Mock() |
| 1332 | + stub.PurgeInstances = AsyncMock(return_value=pb.PurgeInstancesResponse(deletedInstanceCount=3)) |
1293 | 1333 | try: |
1294 | | - result = SimpleNamespace(deleted_instance_count=3, is_complete=True) |
1295 | | - with patch.object(client, "purge_orchestration", |
1296 | | - new=AsyncMock(return_value=result)): |
| 1334 | + with patch.object(client, "_get_stub", return_value=stub): |
1297 | 1335 | with pytest.warns(DeprecationWarning): |
1298 | 1336 | purge = await client.purge_instance_history("abc") |
| 1337 | + stub.PurgeInstances.assert_awaited_once_with(pb.PurgeInstancesRequest( |
| 1338 | + instanceId="abc", recursive=True, isOrchestration=True)) |
1299 | 1339 | assert purge.instances_deleted == 3 |
1300 | 1340 | finally: |
1301 | 1341 | await client.close() |
|
0 commit comments