test_smartplugv1.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. """Tests for the switch entity."""
  2. from homeassistant.components.binary_sensor import BinarySensorDeviceClass
  3. from homeassistant.components.sensor import SensorDeviceClass
  4. from homeassistant.components.switch import SwitchDeviceClass
  5. from homeassistant.const import (
  6. UnitOfElectricCurrent,
  7. UnitOfElectricPotential,
  8. UnitOfPower,
  9. UnitOfTime,
  10. )
  11. from ..const import KOGAN_SOCKET_PAYLOAD
  12. from ..mixins.binary_sensor import BasicBinarySensorTests
  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 = "2"
  19. CURRENT_DPS = "4"
  20. POWER_DPS = "5"
  21. VOLTAGE_DPS = "6"
  22. OVERCURRENT_DPS = "7"
  23. class TestKoganSwitch(
  24. BasicBinarySensorTests,
  25. BasicNumberTests,
  26. MultiSensorTests,
  27. SwitchableTests,
  28. TuyaDeviceTestCase,
  29. ):
  30. __test__ = True
  31. def setUp(self):
  32. self.setUpForConfig("smartplugv1.yaml", KOGAN_SOCKET_PAYLOAD)
  33. self.subject = self.entities.get("switch")
  34. self.setUpSwitchable(SWITCH_DPS, self.subject)
  35. self.setUpBasicBinarySensor(
  36. OVERCURRENT_DPS,
  37. self.entities.get("binary_sensor_overcurrent_alarm"),
  38. device_class=BinarySensorDeviceClass.PROBLEM,
  39. )
  40. self.setUpBasicNumber(
  41. TIMER_DPS,
  42. self.entities.get("number_timer"),
  43. max=1440.0,
  44. unit=UnitOfTime.MINUTES,
  45. scale=60,
  46. )
  47. self.setUpMultiSensors(
  48. [
  49. {
  50. "name": "sensor_voltage",
  51. "dps": VOLTAGE_DPS,
  52. "unit": UnitOfElectricPotential.VOLT,
  53. "device_class": SensorDeviceClass.VOLTAGE,
  54. "state_class": "measurement",
  55. "testdata": (2300, 230.0),
  56. },
  57. {
  58. "name": "sensor_current",
  59. "dps": CURRENT_DPS,
  60. "unit": UnitOfElectricCurrent.MILLIAMPERE,
  61. "device_class": SensorDeviceClass.CURRENT,
  62. "state_class": "measurement",
  63. },
  64. {
  65. "name": "sensor_power",
  66. "dps": POWER_DPS,
  67. "unit": UnitOfPower.WATT,
  68. "device_class": SensorDeviceClass.POWER,
  69. "state_class": "measurement",
  70. "testdata": (1234, 123.4),
  71. },
  72. ]
  73. )
  74. self.mark_secondary(
  75. [
  76. "binary_sensor_overcurrent_alarm",
  77. "number_timer",
  78. "sensor_current",
  79. "sensor_power",
  80. "sensor_voltage",
  81. ]
  82. )
  83. def test_device_class_is_outlet(self):
  84. self.assertEqual(self.subject.device_class, SwitchDeviceClass.OUTLET)