8000 Fix incorrect state updates in FakeTestProtocols (#861) · python-kasa/python-kasa@e410e4f · GitHub
[go: up one dir, main page]

Skip to content

Commit e410e4f

Browse files
authored
Fix incorrect state updates in FakeTestProtocols (#861)
1 parent 6e5cae1 commit e410e4f

File tree

10 files changed

+32
-18
lines changed

10 files changed

+32
-18
lines changed

kasa/iot/iotbulb.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ class IotBulb(IotDevice, Bulb):
182182
50
183183
>>> preset.brightness = 100
184184
>>> asyncio.run(bulb.save_preset(preset))
185+
>>> asyncio.run(bulb.update())
185186
>>> bulb.presets[0].brightness
186187
100
187188

kasa/iot/iotstrip.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ class IotStrip(IotDevice):
6666
>>> strip.is_on
6767
True
6868
>>> asyncio.run(strip.turn_off())
69+
>>> asyncio.run(strip.update())
6970
7071
Accessing individual plugs can be done using the `children` property:
7172

kasa/tests/fakeprotocol_iot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -413,4 +413,4 @@ def get_response_for_command(cmd):
413413
for target in request:
414414
response.update(get_response_for_module(target))
415415

416-
return response
416+
return copy.deepcopy(response)

kasa/tests/fakeprotocol_smart.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,15 @@ def _send_request(self, request_dict: dict):
157157
return self._handle_control_child(params)
158158
elif method == "component_nego" or method[:4] == "get_":
159159
if method in info:
160-
return {"result": info[method], "error_code": 0}
160+
result = copy.deepcopy(info[method])
161+
return {"result": result, "error_code": 0}
161162
if (
162163
# FIXTURE_MISSING is for service calls not in place when
163164
# SMART fixtures started to be generated
164165
missing_result := self.FIXTURE_MISSING_MAP.get(method)
165166
) and missing_result[0] in self.components:
166-
retval = {"result": missing_result[1], "error_code": 0}
167+
result = copy.deepcopy(missing_result[1])
168+
retval = {"result": result, "error_code": 0}
167169
else:
168170
# PARAMS error returned for KS240 when get_device_usage called
169171
# on parent device. Could be any error code though.

kasa/tests/smart/features/test_brightness.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async def test_brightness_component(dev: SmartDevice):
2020

2121
# Test setting the value
2222
await feature.set_value(10)
23+
await dev.update()
2324
assert feature.value == 10
2425

2526
with pytest.raises(ValueError):
@@ -42,6 +43,7 @@ async def test_brightness_dimmable(dev: SmartDevice):
4243

4344
# Test setting the value
4445
await feature.set_value(10)
46+
await dev.update()
4547
assert feature.value == 10
4648

4749
with pytest.raises(ValueError):

kasa/tests/smart/features/test_colortemp.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async def test_colortemp_component(dev: SmartDevice):
2020
# We need to take the min here, as L9xx reports a range [9000, 9000].
2121
new_value = min(feature.minimum_value + 1, feature.maximum_value)
2222
await feature.set_value(new_value)
23+
await dev.update()
2324
assert feature.value == new_value
2425

2526
with pytest.raises(ValueError):

kasa/tests/test_bulb.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ async def test_modify_preset(dev: IotBulb, mocker):
295295
assert preset.color_temp == 0
296296

297297
await dev.save_preset(preset)
298+
await dev.update()
298299
assert dev.presets[0].brightness == 10
299300

300301
with pytest.raises(KasaException):

kasa/tests/test_cli.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ async def test_sysinfo(dev, runner):
8888
@turn_on
8989
async def test_state(dev, turn_on, runner):
9090
await handle_turn_on(dev, turn_on)
91-
res = await runner.invoke(state, obj=dev)
9291
await dev.update()
92+
res = await runner.invoke(state, obj=dev)
9393

9494
if dev.is_on:
9595
assert "Device state: True" in res.output
@@ -100,12 +100,12 @@ async def test_state(dev, turn_on, runner):
100100
@turn_on
101101
async def test_toggle(dev, turn_on, runner):
102102
await handle_turn_on(dev, turn_on)
103-
await runner.invoke(toggle, obj=dev)
103+
await dev.update()
104+
assert dev.is_on == turn_on
104105

105-
if turn_on:
106-
assert not dev.is_on
107-
else:
108-
assert dev.is_on
106+
await runner.invoke(toggle, obj=dev)
107+
await dev.update()
108+
assert dev.is_on != turn_on
109109

110110

111111
@device_iot
@@ -118,6 +118,7 @@ async def test_alias(dev, runner):
118118
new_alias = "new alias"
119119
res = await runner.invoke(alias, [new_alias], obj=dev)
120120
assert f"Setting alias to {new_alias}" in res.output
121+
await dev.update()
121122

122123
res = await runner.invoke(alias, obj=dev)
123124
assert f"Alias: {new_alias}" in res.output
@@ -319,6 +320,7 @@ async def test_brightness(dev, runner):
319320

320321
res = await runner.invoke(brightness, ["12"], obj=dev)
321322
assert "Setting brightness" in res.output
323+
await dev.update()
322324

323325
res = await runner.invoke(brightness, obj=dev)
324326
assert "Brightness: 12" in res.output

kasa/tests/test_dimmer.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ async def test_set_brightness(dev, turn_on):
1212
await handle_turn_on(dev, turn_on)
1313

1414
await dev.set_brightness(99)
15+
await dev.update()
1516
assert dev.brightness == 99
1617
assert dev.is_on == turn_on
1718

1819
await dev.set_brightness(0)
20+
await dev.update()
1921
assert dev.brightness == 1
2022
assert dev.is_on == turn_on
2123

@@ -27,17 +29,18 @@ async def test_set_brightness_transition(dev, turn_on, mocker):
2729
query_helper = mocker.spy(IotDimmer, "_query_helper")
2830

2931
await dev.set_brightness(99, transition=1000)
30-
31-
assert dev.brightness == 99
32-
assert dev.is_on
3332
query_helper.assert_called_with(
3433
mocker.ANY,
3534
"smartlife.iot.dimmer",
3635
"set_dimmer_transition",
3736
{"brightness": 99, "duration": 1000},
3837
)
38+
await dev.update()
39+
assert dev.brightness == 99
40+
assert dev.is_on
3941

4042
await dev.set_brightness(0, transition=1000)
43+
await dev.update()
4144
assert dev.brightness == 1
4245

4346

@@ -58,15 +61,15 @@ async def test_turn_on_transition(dev, mocker):
5861
original_brightness = dev.brightness
5962

6063
await dev.turn_on(transition=1000)
61-
62-
assert dev.is_on
63-
assert dev.brightness == original_brightness
6464
query_helper.assert_called_with(
6565
mocker.ANY,
6666
"smartlife.iot.dimmer",
6767
"set_dimmer_transition",
6868
{"brightness": original_brightness, "duration": 1000},
6969
)
70+
await dev.update()
71+
assert dev.is_on
72+
assert dev.brightness == original_brightness
7073

7174

7275
@dimmer
@@ -94,15 +97,15 @@ async def test_set_dimmer_transition(dev, turn_on, mocker):
9497< DAD6 code class="diff-text syntax-highlighted-line">
query_helper = mocker.spy(IotDimmer, "_query_helper")
9598

9699
await dev.set_dimmer_transition(99, 1000)
97-
98-
assert dev.is_on
99-
assert dev.brightness == 99
100100
query_helper.assert_called_with(
101101
mocker.ANY,
102102
"smartlife.iot.dimmer",
103103
"set_dimmer_transition",
104104
{"brightness": 99, "duration": 1000},
105105
)
106+
await dev.update()
107+
assert dev.is_on
108+
assert dev.brightness == 99
106109

107110

108111
@dimmer

kasa/tests/test_lightstrip.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ async def test_effects_lightstrip_set_effect(dev: IotLightStrip):
2727
await dev.set_effect("Not real")
2828

2929
await dev.set_effect("Candy Cane")
30+
await dev.update()
3031
assert dev.effect["name"] == "Candy Cane"
3132

3233

0 commit comments

Comments
 (0)
0