|
12 | 12 |
|
13 | 13 | from kasa import Device, DeviceType, EmeterStatus, Module
|
14 | 14 | from kasa.interfaces.energy import Energy
|
15 |
| -from kasa.iot import IotDevice, IotStrip |
| 15 | +from kasa.iot import IotStrip |
16 | 16 | from kasa.iot.modules.emeter import Emeter
|
17 |
| -from kasa.smart import SmartDevice |
18 |
| -from kasa.smart.modules import Energy as SmartEnergyModule |
19 |
| -from kasa.smart.smartmodule import SmartModule |
20 |
| - |
21 |
| -from .conftest import has_emeter, has_emeter_iot, no_emeter |
| 17 | +from tests.conftest import has_emeter_iot, no_emeter_iot |
22 | 18 |
|
23 | 19 | CURRENT_CONSUMPTION_SCHEMA = Schema(
|
24 | 20 | Any(
|
|
40 | 36 | )
|
41 | 37 |
|
42 | 38 |
|
43 |
| -@no_emeter |
| 39 | +@no_emeter_iot |
44 | 40 | async def test_no_emeter(dev):
|
45 | 41 | assert not dev.has_emeter
|
46 | 42 |
|
47 | 43 | with pytest.raises(AttributeError):
|
48 | 44 | await dev.get_emeter_realtime()
|
49 |
| - # Only iot devices support the historical stats so other |
50 |
| - # devices will not implement the methods below |
51 |
| - if isinstance(dev, IotDevice): |
52 |
| - with pytest.raises(AttributeError): |
53 |
| - await dev.get_emeter_daily() |
54 |
| - with pytest.raises(AttributeError): |
55 |
| - await dev.get_emeter_monthly() |
56 |
| - with pytest.raises(AttributeError): |
57 |
| - await dev.erase_emeter_stats() |
58 |
| - |
59 |
| - |
60 |
| -@has_emeter |
61 |
| -async def test_get_emeter_realtime(dev): |
62 |
| - if isinstance(dev, SmartDevice): |
63 |
| - mod = SmartEnergyModule(dev, str(Module.Energy)) |
64 |
| - if not await mod._check_supported(): |
65 |
| - pytest.skip(f"Energy module not supported for {dev}.") |
66 | 45 |
|
| 46 | + with pytest.raises(AttributeError): |
| 47 | + await dev.get_emeter_daily() |
| 48 | + with pytest.raises(AttributeError): |
| 49 | + await dev.get_emeter_monthly() |
| 50 | + with pytest.raises(AttributeError): |
| 51 | + await dev.erase_emeter_stats() |
| 52 | + |
| 53 | + |
| 54 | +@has_emeter_iot |
| 55 | +async def test_get_emeter_realtime(dev): |
67 | 56 | emeter = dev.modules[Module.Energy]
|
68 | 57 |
|
69 | 58 | current_emeter = await emeter.get_status()
|
@@ -136,7 +125,7 @@ async def test_emeter_status(dev):
|
136 | 125 |
|
137 | 126 |
|
138 | 127 | @pytest.mark.skip("not clearing your stats..")
|
139 |
| -@has_emeter |
| 128 | +@has_emeter_iot |
140 | 129 | async def test_erase_emeter_stats(dev):
|
141 | 130 | emeter = dev.modules[Module.Energy]
|
142 | 131 |
|
@@ -191,37 +180,22 @@ def data(self):
|
191 | 180 | assert emeter.consumption_today == 0.500
|
192 | 181 |
|
193 | 182 |
|
194 |
| -@has_emeter |
| 183 | +@has_emeter_iot |
195 | 184 | async def test_supported(dev: Device):
|
196 |
| - if isinstance(dev, SmartDevice): |
197 |
| - mod = SmartEnergyModule(dev, str(Module.Energy)) |
198 |
| - if not await mod._check_supported(): |
199 |
| - pytest.skip(f"Energy module not supported for {dev}.") |
200 | 185 | energy_module = dev.modules.get(Module.Energy)
|
201 | 186 | assert energy_module
|
202 | 187 |
|
203 |
| - if isinstance(dev, IotDevice): |
204 |
| - info = ( |
205 |
| - dev._last_update |
206 |
| - if not isinstance(dev, IotStrip) |
207 |
| - else dev.children[0].internal_state |
208 |
| - ) |
209 |
| - emeter = info[energy_module._module]["get_realtime"] |
210 |
| - has_total = "total" in emeter or "total_wh" in emeter |
211 |
| - has_voltage_current = "voltage" in emeter or "voltage_mv" in emeter |
212 |
| - assert ( |
213 |
| - energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is has_total |
214 |
| - ) |
215 |
| - assert ( |
216 |
| - energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) |
217 |
| - is has_voltage_current |
218 |
| - ) |
219 |
| - assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is True |
220 |
| - else: |
221 |
| - assert isinstance(energy_module, SmartModule) |
222 |
| - assert energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is False |
223 |
| - assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is False |
224 |
| - if energy_module.supported_version < 2: |
225 |
| - assert energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) is False |
226 |
| - else: |
227 |
| - assert energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) is True |
| 188 | + info = ( |
| 189 | + dev._last_update |
| 190 | + if not isinstance(dev, IotStrip) |
| 191 | + else dev.children[0].internal_state |
| 192 | + ) |
| 193 | + emeter = info[energy_module._module]["get_realtime"] |
| 194 | + has_total = "total" in emeter or "total_wh" in emeter |
| 195 | + has_voltage_current = "voltage" in emeter or "voltage_mv" in emeter |
| 196 | + assert energy_module.supports(Energy.ModuleFeature.CONSUMPTION_TOTAL) is has_total |
| 197 | + assert ( |
| 198 | + energy_module.supports(Energy.ModuleFeature.VOLTAGE_CURRENT) |
| 199 | + is has_voltage_current |
| 200 | + ) |
| 201 | + assert energy_module.supports(Energy.ModuleFeature.PERIODIC_STATS) is True |
0 commit comments