test_nashone_mts700wb_thermostat.py 5.1 KB

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