binary_sensor.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # Mixins for testing sensor entities
  2. from homeassistant.components.binary_sensor import BinarySensorDeviceClass
  3. class BasicBinarySensorTests:
  4. def setUpBasicBinarySensor(
  5. self,
  6. dps,
  7. subject,
  8. device_class=None,
  9. testdata=(True, False),
  10. ):
  11. self.basicBSensor = subject
  12. self.basicBSensorDps = dps
  13. try:
  14. self.basicBSensorDeviceClass = BinarySensorDeviceClass(device_class)
  15. except ValueError:
  16. self.basicBSensorDeviceClass = None
  17. self.basicBSensorTestData = testdata
  18. def test_basic_bsensor_device_class(self):
  19. self.assertEqual(self.basicBSensor.device_class, self.basicBSensorDeviceClass)
  20. def test_basic_bsensor_is_on(self):
  21. onval, offval = self.basicBSensorTestData
  22. self.dps[self.basicBSensorDps] = onval
  23. self.assertTrue(self.basicBSensor.is_on)
  24. self.dps[self.basicBSensorDps] = offval
  25. self.assertFalse(self.basicBSensor.is_on)
  26. def test_basic_bsensor_extra_state_attributes(self):
  27. self.assertEqual(self.basicBSensor.extra_state_attributes, {})
  28. class MultiBinarySensorTests:
  29. def setUpMultiBinarySensors(self, sensors):
  30. self.multiBSensor = {}
  31. self.multiBSensorDps = {}
  32. self.multiBSensorDevClass = {}
  33. self.multiBSensorTestData = {}
  34. for s in sensors:
  35. name = s.get("name")
  36. subject = self.entities.get(name)
  37. if subject is None:
  38. raise AttributeError(f"No binary sensor for {name} found.")
  39. self.multiBSensor[name] = subject
  40. self.multiBSensorDps[name] = s.get("dps")
  41. try:
  42. self.multiBSensorDevClass[name] = BinarySensorDeviceClass(
  43. s.get("device_class")
  44. )
  45. except ValueError:
  46. self.multiBSensorDevClass[name] = None
  47. self.multiBSensorTestData[name] = s.get("testdata", (True, False))
  48. def test_multi_bsensor_device_class(self):
  49. for key, subject in self.multiBSensor.items():
  50. with self.subTest(key):
  51. self.assertEqual(subject.device_class, self.multiBSensorDevClass[key])
  52. def test_multi_bsensor_is_on(self):
  53. for key, subject in self.multiBSensor.items():
  54. with self.subTest(key):
  55. dps = self.multiBSensorDps[key]
  56. onval, offval = self.multiBSensorTestData[key]
  57. self.dps[dps] = onval
  58. self.assertTrue(subject.is_on)
  59. self.dps[dps] = offval
  60. self.assertFalse(subject.is_on)
  61. def test_multi_bsensor_extra_state_attributes(self):
  62. for key, subject in self.multiBSensor.items():
  63. with self.subTest(key):
  64. self.assertEqual(subject.extra_state_attributes, {})