sensor.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. # Mixins for testing sensor entities
  2. from homeassistant.components.sensor import SensorDeviceClass
  3. class BasicSensorTests:
  4. def setUpBasicSensor(
  5. self,
  6. dps,
  7. subject,
  8. unit=None,
  9. state_class=None,
  10. device_class=None,
  11. testdata=(30, 30),
  12. ):
  13. self.basicSensor = subject
  14. self.basicSensorDps = dps
  15. self.basicSensorUnit = unit
  16. self.basicSensorStateClass = state_class
  17. try:
  18. self.basicSensorDeviceClass = SensorDeviceClass(device_class)
  19. except ValueError:
  20. self.basicSensorDeviceClass = None
  21. self.basicSensorTestData = testdata
  22. def test_basic_sensor_units(self):
  23. self.assertEqual(
  24. self.basicSensor.native_unit_of_measurement, self.basicSensorUnit
  25. )
  26. def test_basic_sensor_device_class(self):
  27. self.assertEqual(self.basicSensor.device_class, self.basicSensorDeviceClass)
  28. def test_basic_sensor_state_class(self):
  29. self.assertEqual(self.basicSensor.state_class, self.basicSensorStateClass)
  30. def test_basic_sensor_value(self):
  31. dpval, val = self.basicSensorTestData
  32. self.dps[self.basicSensorDps] = dpval
  33. self.assertEqual(self.basicSensor.native_value, val)
  34. class MultiSensorTests:
  35. def setUpMultiSensors(self, sensors):
  36. self.multiSensor = {}
  37. self.multiSensorDps = {}
  38. self.multiSensorUnit = {}
  39. self.multiSensorDevClass = {}
  40. self.multiSensorStateClass = {}
  41. self.multiSensorTestData = {}
  42. for s in sensors:
  43. name = s.get("name")
  44. subject = self.entities.get(name)
  45. if subject is None:
  46. raise AttributeError(f"No sensor for {name} found.")
  47. self.multiSensor[name] = subject
  48. self.multiSensorDps[name] = s.get("dps")
  49. self.multiSensorUnit[name] = s.get("unit")
  50. self.multiSensorStateClass[name] = s.get("state_class")
  51. try:
  52. self.multiSensorDevClass[name] = SensorDeviceClass(
  53. s.get("device_class")
  54. )
  55. except ValueError:
  56. self.multiSensorDevClass[name] = None
  57. self.multiSensorTestData[name] = s.get("testdata", (30, 30))
  58. def test_multi_sensor_units(self):
  59. for key, subject in self.multiSensor.items():
  60. with self.subTest(key):
  61. self.assertEqual(
  62. subject.native_unit_of_measurement, self.multiSensorUnit[key]
  63. )
  64. def test_multi_sensor_device_class(self):
  65. for key, subject in self.multiSensor.items():
  66. with self.subTest(key):
  67. self.assertEqual(subject.device_class, self.multiSensorDevClass[key])
  68. def test_multi_sensor_state_class(self):
  69. for key, subject in self.multiSensor.items():
  70. with self.subTest(key):
  71. self.assertEqual(subject.state_class, self.multiSensorStateClass[key])
  72. def test_multi_sensor_value(self):
  73. for key, subject in self.multiSensor.items():
  74. with self.subTest(key):
  75. dpsval, val = self.multiSensorTestData[key]
  76. self.dps[self.multiSensorDps[key]] = dpsval
  77. self.assertEqual(subject.native_value, val)
  78. def test_multi_sensor_extra_state_attributes(self):
  79. for key, subject in self.multiSensor.items():
  80. with self.subTest(key):
  81. self.assertEqual(subject.extra_state_attributes, {})