test_smartplugv1.py 3.1 KB

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