|
15 | 15 | MockDevboxView, |
16 | 16 | MockObjectView, |
17 | 17 | MockScorerView, |
| 18 | + MockScenarioView, |
18 | 19 | MockSnapshotView, |
19 | 20 | MockBlueprintView, |
20 | 21 | create_mock_httpx_response, |
@@ -1067,6 +1068,82 @@ async def test_create_from_object_with_agent_setup( |
1067 | 1068 | ) |
1068 | 1069 |
|
1069 | 1070 |
|
| 1071 | +class TestAsyncScenarioOps: |
| 1072 | + """Tests for AsyncScenarioOps class.""" |
| 1073 | + |
| 1074 | + def test_from_id(self, mock_async_client: AsyncMock) -> None: |
| 1075 | + """Test from_id method.""" |
| 1076 | + from runloop_api_client.sdk import AsyncScenario |
| 1077 | + from runloop_api_client.sdk.async_ import AsyncScenarioOps |
| 1078 | + |
| 1079 | + ops = AsyncScenarioOps(mock_async_client) |
| 1080 | + scenario = ops.from_id("scn_123") |
| 1081 | + |
| 1082 | + assert isinstance(scenario, AsyncScenario) |
| 1083 | + assert scenario.id == "scn_123" |
| 1084 | + |
| 1085 | + @pytest.mark.asyncio |
| 1086 | + async def test_list_empty(self, mock_async_client: AsyncMock) -> None: |
| 1087 | + """Test list method with empty results.""" |
| 1088 | + from runloop_api_client.sdk.async_ import AsyncScenarioOps |
| 1089 | + |
| 1090 | + async def async_iter(): |
| 1091 | + return |
| 1092 | + yield # Make this a generator |
| 1093 | + |
| 1094 | + mock_async_client.scenarios.list = AsyncMock(return_value=async_iter()) |
| 1095 | + |
| 1096 | + ops = AsyncScenarioOps(mock_async_client) |
| 1097 | + scenarios = await ops.list(limit=10) |
| 1098 | + |
| 1099 | + assert len(scenarios) == 0 |
| 1100 | + mock_async_client.scenarios.list.assert_awaited_once() |
| 1101 | + |
| 1102 | + @pytest.mark.asyncio |
| 1103 | + async def test_list_single(self, mock_async_client: AsyncMock, scenario_view: MockScenarioView) -> None: |
| 1104 | + """Test list method with single result.""" |
| 1105 | + from runloop_api_client.sdk import AsyncScenario |
| 1106 | + from runloop_api_client.sdk.async_ import AsyncScenarioOps |
| 1107 | + |
| 1108 | + async def async_iter(): |
| 1109 | + yield scenario_view |
| 1110 | + |
| 1111 | + mock_async_client.scenarios.list = AsyncMock(return_value=async_iter()) |
| 1112 | + |
| 1113 | + ops = AsyncScenarioOps(mock_async_client) |
| 1114 | + scenarios = await ops.list(limit=10) |
| 1115 | + |
| 1116 | + assert len(scenarios) == 1 |
| 1117 | + assert isinstance(scenarios[0], AsyncScenario) |
| 1118 | + assert scenarios[0].id == "scn_123" |
| 1119 | + mock_async_client.scenarios.list.assert_awaited_once() |
| 1120 | + |
| 1121 | + @pytest.mark.asyncio |
| 1122 | + async def test_list_multiple(self, mock_async_client: AsyncMock) -> None: |
| 1123 | + """Test list method with multiple results.""" |
| 1124 | + from runloop_api_client.sdk import AsyncScenario |
| 1125 | + from runloop_api_client.sdk.async_ import AsyncScenarioOps |
| 1126 | + |
| 1127 | + scenario_view1 = MockScenarioView(id="scn_001", name="scenario-1") |
| 1128 | + scenario_view2 = MockScenarioView(id="scn_002", name="scenario-2") |
| 1129 | + |
| 1130 | + async def async_iter(): |
| 1131 | + yield scenario_view1 |
| 1132 | + yield scenario_view2 |
| 1133 | + |
| 1134 | + mock_async_client.scenarios.list = AsyncMock(return_value=async_iter()) |
| 1135 | + |
| 1136 | + ops = AsyncScenarioOps(mock_async_client) |
| 1137 | + scenarios = await ops.list(limit=10) |
| 1138 | + |
| 1139 | + assert len(scenarios) == 2 |
| 1140 | + assert isinstance(scenarios[0], AsyncScenario) |
| 1141 | + assert isinstance(scenarios[1], AsyncScenario) |
| 1142 | + assert scenarios[0].id == "scn_001" |
| 1143 | + assert scenarios[1].id == "scn_002" |
| 1144 | + mock_async_client.scenarios.list.assert_awaited_once() |
| 1145 | + |
| 1146 | + |
1070 | 1147 | class TestAsyncRunloopSDK: |
1071 | 1148 | """Tests for AsyncRunloopSDK class.""" |
1072 | 1149 |
|
|
0 commit comments