2026-08-30 14:26:11 +02:00
|
|
|
import unittest
|
|
|
|
|
|
|
|
|
|
from hue_collector.collector import Collector
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class FakeClient:
|
|
|
|
|
data = {
|
2026-09-06 15:31:57 +02:00
|
|
|
"device": [{"id": "d1", "metadata": {"name": "Motion"}}, {"id": "d2", "metadata": {"name": "Lamp"}}, {"id": "d3", "metadata": {"name": "Offline lamp"}}],
|
2026-08-30 14:26:11 +02:00
|
|
|
"room": [{"id": "r1", "metadata": {"name": "Office"}, "children": [{"rid": "d1"}, {"rid": "d2"}, {"rid": "d3"}]}],
|
|
|
|
|
"zone": [{"id": "z1", "metadata": {"name": "Downstairs"}, "children": [{"rid": "d2"}]}],
|
|
|
|
|
"light": [
|
|
|
|
|
{"id": "l1", "owner": {"rid": "d2"}, "on": {"on": True}, "dimming": {"brightness": 60}},
|
|
|
|
|
{"id": "l2", "owner": {"rid": "d3"}, "on": {"on": True}, "dimming": {"brightness": 100}},
|
|
|
|
|
],
|
|
|
|
|
"temperature": [{"id": "t1", "owner": {"rid": "d1"}, "temperature": {"temperature": 21.5}}],
|
|
|
|
|
"light_level": [{"id": "s1", "owner": {"rid": "d1"}, "light_level": {"light_level": 123.4}}],
|
|
|
|
|
"zigbee_connectivity": [
|
|
|
|
|
{"owner": {"rid": "d1"}, "status": "connected"},
|
|
|
|
|
{"owner": {"rid": "d2"}, "status": "connected"},
|
|
|
|
|
{"owner": {"rid": "d3"}, "status": "disconnected"},
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def get(self, resource):
|
|
|
|
|
return self.data[resource]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class CollectorTests(unittest.TestCase):
|
|
|
|
|
def setUp(self):
|
2026-09-06 15:31:57 +02:00
|
|
|
self.snapshot = Collector(FakeClient()).collect()
|
2026-08-30 14:26:11 +02:00
|
|
|
|
2026-09-06 15:31:57 +02:00
|
|
|
def test_group_light_state(self):
|
|
|
|
|
office = next(item for item in self.snapshot["groups"] if item["name"] == "Office")
|
|
|
|
|
self.assertEqual(office["available"], 1)
|
|
|
|
|
self.assertEqual(office["on"], 1)
|
|
|
|
|
self.assertEqual(office["off"], 0)
|
|
|
|
|
self.assertEqual(office["unavailable"], 1)
|
|
|
|
|
self.assertEqual(office["brightness"], 60)
|
2026-08-30 14:26:11 +02:00
|
|
|
|
|
|
|
|
def test_sensor_values_have_location(self):
|
2026-09-06 15:31:57 +02:00
|
|
|
temperature = next(item for item in self.snapshot["sensors"] if item["type"] == "temperature")
|
|
|
|
|
light = next(item for item in self.snapshot["sensors"] if item["type"] == "light_level")
|
|
|
|
|
self.assertEqual((temperature["name"], temperature["room"], temperature["value"]), ("Motion", "Office", 21.5))
|
|
|
|
|
self.assertEqual((light["name"], light["room"], light["value"]), ("Motion", "Office", 123.4))
|
2026-08-30 14:26:11 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
unittest.main()
|