binary_sensor.py 2.5 KB

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