|
23 | 23 |
|
24 | 24 | from __future__ import annotations |
25 | 25 |
|
26 | | -import pytest |
27 | | - |
28 | 26 | from airflow.sdk.api.datamodels._generated import AssetEventsResponse |
29 | 27 | from task_sdk_tests import console |
30 | 28 |
|
@@ -68,25 +66,65 @@ def test_asset_event_get_not_found(sdk_client_for_assets): |
68 | 66 | console.print("[green]✅ Asset event get (not found) test passed!") |
69 | 67 |
|
70 | 68 |
|
71 | | -@pytest.mark.skip(reason="TODO: Implement Asset Event get_by_uri test") |
72 | 69 | def test_asset_event_get_by_uri(sdk_client_for_assets, asset_test_setup): |
73 | 70 | """ |
74 | 71 | Test getting asset events by URI. |
75 | 72 |
|
76 | 73 | Expected: AssetEventsResponse with events |
77 | 74 | Endpoint: GET /execution/asset-events/by-asset?uri={uri} |
78 | 75 | """ |
79 | | - console.print("[yellow]TODO: Implement test_asset_event_get_by_uri") |
80 | | - raise NotImplementedError("test_asset_event_get_by_uri not implemented") |
| 76 | + console.print("[yellow]Getting asset events by URI...") |
| 77 | + |
| 78 | + response = sdk_client_for_assets.asset_events.get(uri=asset_test_setup["uri"]) |
| 79 | + |
| 80 | + console.print(" Asset Event Get Response ".center(72, "=")) |
| 81 | + console.print(f"[bright_blue]Response Type:[/] {type(response).__name__}") |
| 82 | + console.print(f"[bright_blue]Number of Events:[/] {len(response.asset_events)}") |
| 83 | + |
| 84 | + assert isinstance(response, AssetEventsResponse) |
| 85 | + assert len(response.asset_events) >= 1 |
| 86 | + |
| 87 | + event = response.asset_events[0] |
| 88 | + |
| 89 | + console.print(f"[bright_blue]First Event ID:[/] {event.id}") |
| 90 | + console.print(f"[bright_blue]First Event Asset Name:[/] {event.asset.name}") |
| 91 | + console.print(f"[bright_blue]First Event Asset URI:[/] {event.asset.uri}") |
| 92 | + console.print(f"[bright_blue]First Event Timestamp:[/] {event.timestamp}") |
| 93 | + console.print("=" * 72) |
| 94 | + |
| 95 | + assert event.asset.name == asset_test_setup["name"] |
| 96 | + assert event.asset.uri == asset_test_setup["uri"] |
| 97 | + |
| 98 | + console.print("[green]✅ Asset event get (URI) test passed!") |
81 | 99 |
|
82 | 100 |
|
83 | | -@pytest.mark.skip(reason="TODO: Implement Asset Event get_by_alias test") |
84 | | -def test_asset_event_get_by_alias(sdk_client_for_assets): |
| 101 | +def test_asset_event_get_by_alias(sdk_client_for_assets, asset_test_setup): |
85 | 102 | """ |
86 | 103 | Test getting asset events by alias name. |
87 | 104 |
|
88 | 105 | Expected: AssetEventsResponse with events |
89 | 106 | Endpoint: GET /execution/asset-events/by-asset-alias?name={alias_name} |
90 | 107 | """ |
91 | | - console.print("[yellow]TODO: Implement test_asset_event_get_by_alias") |
92 | | - raise NotImplementedError("test_asset_event_get_by_alias not implemented") |
| 108 | + console.print("[yellow]Getting asset events by alias...") |
| 109 | + |
| 110 | + response = sdk_client_for_assets.asset_events.get(alias_name=asset_test_setup["alias_name"]) |
| 111 | + |
| 112 | + console.print(" Asset Event Get Response ".center(72, "=")) |
| 113 | + console.print(f"[bright_blue]Response Type:[/] {type(response).__name__}") |
| 114 | + console.print(f"[bright_blue]Number of Events:[/] {len(response.asset_events)}") |
| 115 | + |
| 116 | + assert isinstance(response, AssetEventsResponse) |
| 117 | + assert len(response.asset_events) >= 1 |
| 118 | + |
| 119 | + event = response.asset_events[0] |
| 120 | + |
| 121 | + console.print(f"[bright_blue]First Event ID:[/] {event.id}") |
| 122 | + console.print(f"[bright_blue]First Event Asset Name:[/] {event.asset.name}") |
| 123 | + console.print(f"[bright_blue]First Event Asset URI:[/] {event.asset.uri}") |
| 124 | + console.print(f"[bright_blue]First Event Timestamp:[/] {event.timestamp}") |
| 125 | + console.print("=" * 72) |
| 126 | + |
| 127 | + assert event.asset.name == asset_test_setup["name"] |
| 128 | + assert event.asset.uri == asset_test_setup["uri"] |
| 129 | + |
| 130 | + console.print("[green]✅ Asset event get (alias) test passed!") |
0 commit comments