test_smartplugv1.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. """Tests for the switch entity."""
  2. from homeassistant.components.switch import DEVICE_CLASS_OUTLET
  3. from homeassistant.const import (
  4. DEVICE_CLASS_CURRENT,
  5. DEVICE_CLASS_POWER,
  6. DEVICE_CLASS_VOLTAGE,
  7. ELECTRIC_CURRENT_MILLIAMPERE,
  8. ELECTRIC_POTENTIAL_VOLT,
  9. POWER_WATT,
  10. )
  11. from ..const import KOGAN_SOCKET_PAYLOAD
  12. from ..mixins.number import BasicNumberTests
  13. from ..mixins.sensor import MultiSensorTests
  14. from ..mixins.switch import SwitchableTests
  15. from .base_device_tests import TuyaDeviceTestCase
  16. SWITCH_DPS = "1"
  17. TIMER_DPS = "2"
  18. CURRENT_DPS = "4"
  19. POWER_DPS = "5"
  20. VOLTAGE_DPS = "6"
  21. class TestKoganSwitch(
  22. BasicNumberTests, MultiSensorTests, SwitchableTests, TuyaDeviceTestCase
  23. ):
  24. __test__ = True
  25. def setUp(self):
  26. self.setUpForConfig("smartplugv1.yaml", KOGAN_SOCKET_PAYLOAD)
  27. self.subject = self.entities.get("switch")
  28. self.setUpSwitchable(SWITCH_DPS, self.subject)
  29. self.setUpBasicNumber(TIMER_DPS, self.entities.get("number_timer"), max=1440)
  30. self.setUpMultiSensors(
  31. [
  32. {
  33. "name": "sensor_voltage",
  34. "dps": VOLTAGE_DPS,
  35. "unit": ELECTRIC_POTENTIAL_VOLT,
  36. "device_class": DEVICE_CLASS_VOLTAGE,
  37. "state_class": "measurement",
  38. "testdata": (2300, 230.0),
  39. },
  40. {
  41. "name": "sensor_current",
  42. "dps": CURRENT_DPS,
  43. "unit": ELECTRIC_CURRENT_MILLIAMPERE,
  44. "device_class": DEVICE_CLASS_CURRENT,
  45. "state_class": "measurement",
  46. },
  47. {
  48. "name": "sensor_power",
  49. "dps": POWER_DPS,
  50. "unit": POWER_WATT,
  51. "device_class": DEVICE_CLASS_POWER,
  52. "state_class": "measurement",
  53. "testdata": (1234, 123.4),
  54. },
  55. ]
  56. )
  57. def test_device_class_is_outlet(self):
  58. self.assertEqual(self.subject.device_class, DEVICE_CLASS_OUTLET)
  59. def test_current_power_w(self):
  60. self.dps[POWER_DPS] = 1234
  61. self.assertEqual(self.subject.current_power_w, 123.4)
  62. def test_device_state_attributes_set(self):
  63. self.dps[TIMER_DPS] = 1
  64. self.dps[VOLTAGE_DPS] = 2350
  65. self.dps[CURRENT_DPS] = 1234
  66. self.dps[POWER_DPS] = 5678
  67. self.assertDictEqual(
  68. self.subject.device_state_attributes,
  69. {
  70. "timer": 1,
  71. "current_a": 1.234,
  72. "voltage_v": 235.0,
  73. "current_power_w": 567.8,
  74. },
  75. )