test_nashone_mts700wb_thermostat.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. from homeassistant.components.button import ButtonDeviceClass
  2. from homeassistant.components.climate.const import (
  3. ClimateEntityFeature,
  4. HVACMode,
  5. )
  6. from homeassistant.components.sensor import SensorDeviceClass
  7. from homeassistant.const import (
  8. UnitOfTime,
  9. )
  10. from ..const import NASHONE_MTS700WB_THERMOSTAT_PAYLOAD
  11. from ..helpers import assert_device_properties_set
  12. from ..mixins.button import BasicButtonTests
  13. from ..mixins.climate import TargetTemperatureTests
  14. from ..mixins.number import BasicNumberTests
  15. from ..mixins.select import BasicSelectTests
  16. from ..mixins.sensor import BasicSensorTests
  17. from ..mixins.switch import BasicSwitchTests
  18. from .base_device_tests import TuyaDeviceTestCase
  19. POWER_DPS = "1"
  20. HVACMODE_DPS = "2"
  21. HVACACTION_DPS = "3"
  22. TEMPERATURE_DPS = "16"
  23. TEMPF_DPS = "17"
  24. UNIT_DPS = "23"
  25. CURRENTTEMP_DPS = "24"
  26. CALIBOFFSET_DPS = "27"
  27. CURRTEMPF_DPS = "29"
  28. RESET_DPS = "39"
  29. TIMER_DPS = "41"
  30. COUNTDOWN_DPS = "42"
  31. class TestNashoneMTS700WBThermostat(
  32. BasicButtonTests,
  33. BasicNumberTests,
  34. BasicSelectTests,
  35. BasicSensorTests,
  36. BasicSwitchTests,
  37. TargetTemperatureTests,
  38. TuyaDeviceTestCase,
  39. ):
  40. __test__ = True
  41. def setUp(self):
  42. self.setUpForConfig(
  43. "nashone_mts700wb_thermostat.yaml",
  44. NASHONE_MTS700WB_THERMOSTAT_PAYLOAD,
  45. )
  46. self.subject = self.entities.get("climate")
  47. self.setUpTargetTemperature(
  48. TEMPERATURE_DPS,
  49. self.subject,
  50. min=-20,
  51. max=105,
  52. )
  53. self.setUpBasicButton(
  54. RESET_DPS,
  55. self.entities.get("button_factory_reset"),
  56. device_class=ButtonDeviceClass.RESTART,
  57. )
  58. self.setUpBasicNumber(
  59. CALIBOFFSET_DPS,
  60. self.entities.get("number_calibration_offset"),
  61. min=-5,
  62. max=5,
  63. )
  64. self.setUpBasicSelect(
  65. TIMER_DPS,
  66. self.entities.get("select_timer"),
  67. {
  68. "cancel": "off",
  69. "1h": "1 hour",
  70. },
  71. )
  72. self.setUpBasicSensor(
  73. COUNTDOWN_DPS,
  74. self.entities.get("sensor_timer"),
  75. unit=UnitOfTime.SECONDS,
  76. device_class=SensorDeviceClass.DURATION,
  77. )
  78. self.setUpBasicSwitch(
  79. RESET_DPS,
  80. self.entities.get("switch_factory_reset"),
  81. )
  82. self.mark_secondary(
  83. [
  84. "button_factory_reset",
  85. "number_calibration_offset",
  86. "select_timer",
  87. "sensor_timer",
  88. "switch_factory_reset",
  89. ],
  90. )
  91. def test_supported_features(self):
  92. self.assertEqual(
  93. self.subject.supported_features,
  94. ClimateEntityFeature.TARGET_TEMPERATURE,
  95. )
  96. def test_current_temperature(self):
  97. self.dps[CURRENTTEMP_DPS] = 24
  98. self.assertEqual(self.subject.current_temperature, 24)
  99. def test_hvac_mode(self):
  100. self.dps[POWER_DPS] = False
  101. self.assertEqual(self.subject.hvac_mode, HVACMode.OFF)
  102. self.dps[POWER_DPS] = True
  103. self.dps[HVACMODE_DPS] = "hot"
  104. self.assertEqual(self.subject.hvac_mode, HVACMode.HEAT)
  105. self.dps[HVACMODE_DPS] = "cold"
  106. self.assertEqual(self.subject.hvac_mode, HVACMode.COOL)
  107. def test_hvac_modes(self):
  108. self.assertCountEqual(
  109. self.subject.hvac_modes,
  110. [
  111. HVACMode.COOL,
  112. HVACMode.HEAT,
  113. HVACMode.OFF,
  114. ],
  115. )
  116. async def test_set_hvac_mode_cool(self):
  117. async with assert_device_properties_set(
  118. self.subject._device,
  119. {POWER_DPS: True, HVACMODE_DPS: "cold"},
  120. ):
  121. await self.subject.async_set_hvac_mode(HVACMode.COOL)
  122. async def test_set_hvac_mode_heat(self):
  123. async with assert_device_properties_set(
  124. self.subject._device,
  125. {POWER_DPS: True, HVACMODE_DPS: "hot"},
  126. ):
  127. await self.subject.async_set_hvac_mode(HVACMode.HEAT)
  128. async def test_set_hvac_mode_off(self):
  129. async with assert_device_properties_set(
  130. self.subject._device,
  131. {POWER_DPS: False},
  132. ):
  133. await self.subject.async_set_hvac_mode(HVACMode.OFF)
  134. # def test_hvac_action(self):
  135. # self.dps[HVACMODE_DPS] = "hot"
  136. # self.dps[HVACACTION_DPS] = "manual"
  137. # self.assertEqual(self.subject.hvac_action, HVACAction.HEATING)
  138. # self.dps[HVACMODE_DPS] = "cold"
  139. # self.assertEqual(self.subject.hvac_action, HVACAction.COOLING)
  140. def test_extra_state_attributes(self):
  141. self.dps[HVACACTION_DPS] = "manual"
  142. self.assertEqual(
  143. self.subject.extra_state_attributes,
  144. {"work_state": "manual"},
  145. )
  146. def test_icons(self):
  147. self.assertEqual(self.basicNumber.icon, "mdi:arrow-collapse-up")
  148. self.assertEqual(self.basicSelect.icon, "mdi:timer")
  149. self.assertEqual(self.basicSensor.icon, "mdi:timer")
  150. self.assertEqual(self.basicSwitch.icon, "mdi:cog-refresh")