test_smartplugv2.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. TIME_MINUTES,
  11. )
  12. from ..const import KOGAN_SOCKET_PAYLOAD2
  13. from ..mixins.number import BasicNumberTests
  14. from ..mixins.sensor import MultiSensorTests
  15. from ..mixins.switch import SwitchableTests
  16. from .base_device_tests import TuyaDeviceTestCase
  17. SWITCH_DPS = "1"
  18. TIMER_DPS = "9"
  19. CURRENT_DPS = "18"
  20. POWER_DPS = "19"
  21. VOLTAGE_DPS = "20"
  22. class TestSwitchV2(
  23. BasicNumberTests, MultiSensorTests, SwitchableTests, TuyaDeviceTestCase
  24. ):
  25. __test__ = True
  26. def setUp(self):
  27. self.setUpForConfig("smartplugv2.yaml", KOGAN_SOCKET_PAYLOAD2)
  28. self.subject = self.entities.get("switch")
  29. self.setUpSwitchable(SWITCH_DPS, self.subject)
  30. self.setUpBasicNumber(
  31. TIMER_DPS,
  32. self.entities.get("number_timer"),
  33. max=1440,
  34. unit=TIME_MINUTES,
  35. )
  36. self.setUpMultiSensors(
  37. [
  38. {
  39. "name": "sensor_voltage",
  40. "dps": VOLTAGE_DPS,
  41. "unit": ELECTRIC_POTENTIAL_VOLT,
  42. "device_class": DEVICE_CLASS_VOLTAGE,
  43. "state_class": "measurement",
  44. "testdata": (2300, 230.0),
  45. },
  46. {
  47. "name": "sensor_current",
  48. "dps": CURRENT_DPS,
  49. "unit": ELECTRIC_CURRENT_MILLIAMPERE,
  50. "device_class": DEVICE_CLASS_CURRENT,
  51. "state_class": "measurement",
  52. },
  53. {
  54. "name": "sensor_power",
  55. "dps": POWER_DPS,
  56. "unit": POWER_WATT,
  57. "device_class": DEVICE_CLASS_POWER,
  58. "state_class": "measurement",
  59. "testdata": (1234, 123.4),
  60. },
  61. ]
  62. )
  63. self.mark_secondary(
  64. [
  65. "number_timer",
  66. "sensor_current",
  67. "sensor_power",
  68. "sensor_voltage",
  69. ]
  70. )
  71. def test_device_class_is_outlet(self):
  72. self.assertEqual(self.subject.device_class, DEVICE_CLASS_OUTLET)
  73. def test_current_power_w(self):
  74. self.dps[POWER_DPS] = 1234
  75. self.assertEqual(self.subject.current_power_w, 123.4)
  76. def test_extra_state_attributes_set(self):
  77. self.dps[TIMER_DPS] = 1
  78. self.dps[VOLTAGE_DPS] = 2350
  79. self.dps[CURRENT_DPS] = 1234
  80. self.dps[POWER_DPS] = 5678
  81. self.assertDictEqual(
  82. self.subject.extra_state_attributes,
  83. {
  84. "timer": 1,
  85. "current_a": 1.234,
  86. "voltage_v": 235.0,
  87. "current_power_w": 567.8,
  88. },
  89. )