test_moebot.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. """
  2. Test MoeBot S mower.
  3. Primarily for testing the STOP command which this device is the first to use,
  4. and the lawn_mower platform.
  5. """
  6. from homeassistant.components.lawn_mower.const import (
  7. LawnMowerActivity,
  8. LawnMowerEntityFeature,
  9. )
  10. from ..const import MOEBOT_PAYLOAD
  11. from ..helpers import assert_device_properties_set
  12. from .base_device_tests import TuyaDeviceTestCase
  13. BATTERY_DP = "6"
  14. STATUS_DP = "101"
  15. ERROR_DP = "102"
  16. PROBLEM_DP = "103"
  17. RAINMODE_DP = "104"
  18. RUNTIME_DP = "105"
  19. PASSWD_DP = "106"
  20. CLEARSCHED_DP = "107"
  21. QUERYSCHED_DP = "108"
  22. QUERYZONE_DP = "109"
  23. SCHEDULE_DP = "110"
  24. ERRLOG_DP = "111"
  25. WORKLOG_DP = "112"
  26. ZONES_DP = "113"
  27. AUTOMODE_DP = "114"
  28. COMMAND_DP = "115"
  29. class TestMoebot(TuyaDeviceTestCase):
  30. __test__ = True
  31. def setUp(self):
  32. self.setUpForConfig("moebot_s_mower.yaml", MOEBOT_PAYLOAD)
  33. self.mower = self.entities.get("lawn_mower")
  34. self.start_button = self.entities.get("button_start_fixed_mowing")
  35. self.mark_secondary(
  36. [
  37. "binary_sensor_cover",
  38. "binary_sensor_problem",
  39. "select_mowing_mode",
  40. "sensor_problem",
  41. "switch_backward_blade_stop",
  42. "switch_rain_mode",
  43. "number_running_time",
  44. "button_clear_schedule",
  45. "button_query_schedule",
  46. "button_query_zones",
  47. "switch_hedgehog_protection",
  48. ]
  49. )
  50. def test_supported_features(self):
  51. self.assertEqual(
  52. self.mower.supported_features,
  53. (
  54. LawnMowerEntityFeature.START_MOWING
  55. | LawnMowerEntityFeature.PAUSE
  56. | LawnMowerEntityFeature.DOCK
  57. ),
  58. )
  59. def test_available(self):
  60. """Skip available tests as this device has disabled entities."""
  61. pass
  62. def test_lawnmower_activity(self):
  63. self.dps[STATUS_DP] = "ERROR"
  64. self.assertEqual(self.mower.activity, LawnMowerActivity.ERROR)
  65. self.dps[STATUS_DP] = "EMERGENCY"
  66. self.assertEqual(self.mower.activity, LawnMowerActivity.ERROR)
  67. self.dps[STATUS_DP] = "PAUSED"
  68. self.assertEqual(self.mower.activity, LawnMowerActivity.PAUSED)
  69. self.dps[STATUS_DP] = "PARK"
  70. self.assertEqual(self.mower.activity, LawnMowerActivity.RETURNING)
  71. self.dps[STATUS_DP] = "MOWING"
  72. self.assertEqual(self.mower.activity, LawnMowerActivity.MOWING)
  73. self.dps[STATUS_DP] = "FIXED_MOWING"
  74. self.assertEqual(self.mower.activity, LawnMowerActivity.MOWING)
  75. self.dps[STATUS_DP] = "STANDBY"
  76. self.assertEqual(self.mower.activity, LawnMowerActivity.DOCKED)
  77. self.dps[STATUS_DP] = "CHARGING"
  78. self.assertEqual(self.mower.activity, LawnMowerActivity.DOCKED)
  79. self.dps[STATUS_DP] = "LOCKED"
  80. self.assertEqual(self.mower.activity, LawnMowerActivity.DOCKED)
  81. self.dps[STATUS_DP] = "CHARGING_WITH_TASK_SUSPEND"
  82. self.assertEqual(self.mower.activity, LawnMowerActivity.DOCKED)
  83. async def test_async_start_mowing(self):
  84. async with assert_device_properties_set(
  85. self.mower._device,
  86. {COMMAND_DP: "StartMowing"},
  87. ):
  88. await self.mower.async_start_mowing()
  89. async def test_async_start_fixed_mowing(self):
  90. async with assert_device_properties_set(
  91. self.start_button._device,
  92. {COMMAND_DP: "StartFixedMowing"},
  93. ):
  94. await self.start_button.async_press()
  95. async def test_async_pause(self):
  96. async with assert_device_properties_set(
  97. self.mower._device,
  98. {COMMAND_DP: "PauseWork"},
  99. ):
  100. await self.mower.async_pause()
  101. async def test_async_dock(self):
  102. async with assert_device_properties_set(
  103. self.mower._device,
  104. {COMMAND_DP: "StartReturnStation"},
  105. ):
  106. await self.mower.async_dock()