|
11 | 11 |
|
12 | 12 | from roborock.data.b01_q7 import ( |
13 | 13 | CleanTaskTypeMapping, |
| 14 | + CleanTypeMapping, |
14 | 15 | SCDeviceCleanParam, |
15 | 16 | SCWindMapping, |
16 | 17 | WaterLevelMapping, |
@@ -217,6 +218,32 @@ async def test_q7_api_set_water_level( |
217 | 218 | assert payload_data["dps"]["10000"]["params"] == {RoborockB01Props.WATER: WaterLevelMapping.HIGH.code} |
218 | 219 |
|
219 | 220 |
|
| 221 | +@pytest.mark.parametrize( |
| 222 | + ("mode", "expected_code"), |
| 223 | + [ |
| 224 | + (CleanTypeMapping.VACUUM, 0), |
| 225 | + (CleanTypeMapping.VAC_AND_MOP, 1), |
| 226 | + (CleanTypeMapping.MOP, 2), |
| 227 | + ], |
| 228 | +) |
| 229 | +async def test_q7_api_set_mode( |
| 230 | + mode: CleanTypeMapping, |
| 231 | + expected_code: int, |
| 232 | + q7_api: Q7PropertiesApi, |
| 233 | + fake_channel: FakeChannel, |
| 234 | + message_builder: B01MessageBuilder, |
| 235 | +): |
| 236 | + """Test setting cleaning mode (vacuum, mop, or both).""" |
| 237 | + fake_channel.response_queue.append(message_builder.build({"result": "ok"})) |
| 238 | + await q7_api.set_mode(mode) |
| 239 | + |
| 240 | + assert len(fake_channel.published_messages) == 1 |
| 241 | + message = fake_channel.published_messages[0] |
| 242 | + payload_data = json.loads(unpad(message.payload, AES.block_size)) |
| 243 | + assert payload_data["dps"]["10000"]["method"] == "prop.set" |
| 244 | + assert payload_data["dps"]["10000"]["params"] == {RoborockB01Props.MODE: expected_code} |
| 245 | + |
| 246 | + |
220 | 247 | async def test_q7_api_start_clean( |
221 | 248 | q7_api: Q7PropertiesApi, fake_channel: FakeChannel, message_builder: B01MessageBuilder |
222 | 249 | ): |
|
0 commit comments