import unittest from hue_collector.collector import Collector class FakeClient: data = { "device": [{"id": "d1", "metadata": {"name": "Motion"}}, {"id": "d2", "metadata": {"name": "Lamp"}}, {"id": "d3", "metadata": {"name": "Offline lamp"}}], "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): self.snapshot = Collector(FakeClient()).collect() 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) def test_sensor_values_have_location(self): 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)) if __name__ == "__main__": unittest.main()