def test_load_interface_call(self, mock_apicall): """Test if interface is called correctly.""" async def return_async_value(val): return val pyvlx = PyVLX() devices = Devices(pyvlx) get_response = \ '{"token":"aEGjVG0T3jj1VNEJTFmMBw==","result":true,"deviceSta' + \ 'tus":"IDLE","data":[{"name": "Volet roulant cour", "id": 0, ' + \ '"scenes": ["Fermer volet cour", "Ouvrir volet cour"], "categ' + \ 'ory": "Roller shutter", "typeId": 2, "subtype": 0}, {"name":' + \ '"Fenêtre cour", "id": 1, "scenes": ["Fermer fenetre cour", "' + \ 'Ouvrir fenetre cour"], "category": "Window opener", "typeId"' + \ ': 4, "subtype": 1}, {"name": "Fenêtre jardin", "id": 2, "sce' + \ 'nes": ["Fermer fenetre jardin", "Ouvrir fenetre jardin"], "c' + \ 'ategory": "Window opener", "typeId": 4, "subtype": 1}, {"nam' + \ 'e": "Volet roulant jardin", "id": 3, "scenes": ["Fermer vole' + \ 't jardin", "Ouvrir Volet jardin"], "category": "Roller shutt' + \ 'er", "typeId": 2, "subtype": 0}]}' mock_apicall.return_value = return_async_value( json.loads(get_response)) self.loop.run_until_complete(asyncio.Task(devices.load())) mock_apicall.assert_called_with('products', 'get') self.assertEqual(len(devices), 4) self.assertEqual(devices[0], RollerShutter(pyvlx, 0, 'Volet roulant cour', 0, 2)) self.assertEqual(devices[1], Window(pyvlx, 1, 'Fenêtre cour', 1, 4)) self.assertEqual(devices[2], Window(pyvlx, 2, 'Fenêtre jardin', 1, 4)) self.assertEqual(devices[3], RollerShutter(pyvlx, 3, 'Volet roulant jardin', 0, 2))
def test_load_windows_and_roller_shutters(self): """Test load configuration with windows and rollershutters.""" pyvlx = PyVLX() devices = Devices(pyvlx) get_response = \ '{"token":"aEGjVG0T3jj1VNEJTFmMBw==","result":true,"deviceSta' + \ 'tus":"IDLE","data":[{"name": "Volet roulant cour", "id": 0, ' + \ '"scenes": ["Fermer volet cour", "Ouvrir volet cour"], "categ' + \ 'ory": "Roller shutter", "typeId": 2, "subtype": 0}, {"name":' + \ '"Fenêtre cour", "id": 1, "scenes": ["Fermer fenetre cour", "' + \ 'Ouvrir fenetre cour"], "category": "Window opener", "typeId"' + \ ': 4, "subtype": 1}, {"name": "Fenêtre jardin", "id": 2, "sce' + \ 'nes": ["Fermer fenetre jardin", "Ouvrir fenetre jardin"], "c' + \ 'ategory": "Window opener", "typeId": 4, "subtype": 1}, {"nam' + \ 'e": "Volet roulant jardin", "id": 3, "scenes": ["Fermer vole' + \ 't jardin", "Ouvrir Volet jardin"], "category": "Roller shutt' + \ 'er", "typeId": 2, "subtype": 0}]}' devices.data_import(json.loads(get_response)) self.assertEqual(len(devices), 4) self.assertEqual(devices[0], RollerShutter(pyvlx, 0, 'Volet roulant cour', 0, 2)) self.assertEqual(devices[1], Window(pyvlx, 1, 'Fenêtre cour', 1, 4)) self.assertEqual(devices[2], Window(pyvlx, 2, 'Fenêtre jardin', 1, 4)) self.assertEqual(devices[3], RollerShutter(pyvlx, 3, 'Volet roulant jardin', 0, 2))
def test_clear(self): """Test clear() method.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, "Window_1", "aa:bb:aa:bb:aa:bb:aa:00")) nodes.add(Window(pyvlx, 1, "Window_2", "aa:bb:aa:bb:aa:bb:aa:01")) nodes.clear() self.assertEqual(len(nodes), 0)
def test_clear(self): """Test clear() method.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, 'Window_1')) nodes.add(Window(pyvlx, 1, 'Window_2')) nodes.clear() self.assertEqual(len(nodes), 0)
def test_len(self): """Test len.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, 'Window_1')) nodes.add(Window(pyvlx, 1, 'Window_2')) nodes.add(Window(pyvlx, 2, 'Window_3')) nodes.add(Window(pyvlx, 3, 'Window_4')) self.assertEqual(len(nodes), 4)
def test_len(self): """Test len.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, "Window_1", "aa:bb:aa:bb:aa:bb:aa:00")) nodes.add(Window(pyvlx, 1, "Window_2", "aa:bb:aa:bb:aa:bb:aa:01")) nodes.add(Window(pyvlx, 2, "Window_3", "aa:bb:aa:bb:aa:bb:aa:02")) nodes.add(Window(pyvlx, 3, "Window_4", "aa:bb:aa:bb:aa:bb:aa:03")) self.assertEqual(len(nodes), 4)
def test_iter(self): """Test iterator.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window1 = Window(pyvlx, 0, "Window_1", "aa:bb:aa:bb:aa:bb:aa:00") nodes.add(window1) window2 = Window(pyvlx, 1, "Window_2", "aa:bb:aa:bb:aa:bb:aa:01") nodes.add(window2) window3 = Window(pyvlx, 2, "Window_3", "aa:bb:aa:bb:aa:bb:aa:02") nodes.add(window3) self.assertEqual(tuple(nodes.__iter__()), (window1, window2, window3))
def test_iter(self): """Test iterator.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window1 = Window(pyvlx, 0, 'Window_1') nodes.add(window1) window2 = Window(pyvlx, 1, 'Window_2') nodes.add(window2) window3 = Window(pyvlx, 2, 'Window_3') nodes.add(window3) self.assertEqual(tuple(nodes.__iter__()), (window1, window2, window3))
def test_add_same_object(self): """Test adding object with same node_id.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, 'Window_1')) nodes.add(Window(pyvlx, 1, 'Window_2')) nodes.add(Window(pyvlx, 2, 'Window_3')) nodes.add(Window(pyvlx, 1, 'Window_2_same_id')) self.assertEqual(len(nodes), 3) self.assertEqual(nodes[1].name, 'Window_2_same_id')
def test_add_same_object(self): """Test adding object with same node_id.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) self.assertEqual(len(nodes), 0) nodes.add(Window(pyvlx, 0, "Window_1", "aa:bb:aa:bb:aa:bb:aa:00")) nodes.add(Window(pyvlx, 1, "Window_2", "aa:bb:aa:bb:aa:bb:aa:01")) nodes.add(Window(pyvlx, 2, "Window_3", "aa:bb:aa:bb:aa:bb:aa:02")) nodes.add( Window(pyvlx, 1, "Window_2_same_id", "aa:bb:aa:bb:aa:bb:aa:01")) self.assertEqual(len(nodes), 3) self.assertEqual(nodes[1].name, "Window_2_same_id")
def test_contains_item(self): """Test contains operator.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window1 = Window(pyvlx, 23, 'Window_1') nodes.add(window1) window2 = Window(pyvlx, 42, 'Window_2') # not added self.assertTrue('Window_1' in nodes) self.assertTrue(23 in nodes) self.assertTrue(window1 in nodes) self.assertFalse('Window_2' in nodes) self.assertFalse(42 in nodes) self.assertFalse(window2 in nodes)
def test_iter(self): """Test iterator.""" pyvlx = PyVLX() devices = Devices(pyvlx) window1 = Window(pyvlx, 0, 'Window_1', 0, 0) devices.add(window1) window2 = Window(pyvlx, 1, 'Window_2', 0, 0) devices.add(window2) window3 = Window(pyvlx, 2, 'Window_3', 0, 0) devices.add(window3) window4 = Window(pyvlx, 3, 'Window_4', 0, 0) devices.add(window4) self.assertEqual(tuple(devices.__iter__()), (window1, window2, window3, window4))
def test_contains_item(self): """Test contains operator.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window1 = Window(pyvlx, 23, "Window_1", "aa:bb:aa:bb:aa:bb:aa:23") nodes.add(window1) window2 = Window(pyvlx, 42, "Window_2", "aa:bb:aa:bb:aa:bb:aa:42") # not added self.assertTrue("Window_1" in nodes) self.assertTrue(23 in nodes) self.assertTrue(window1 in nodes) self.assertFalse("Window_2" in nodes) self.assertFalse(42 in nodes) self.assertFalse(window2 in nodes)
def test_str(self): """Test string representation of Window object.""" pyvlx = PyVLX() window = Window(pyvlx, 0, 'Test Window', 0, 2) self.assertEqual( str(window), '<Window name="Test Window" id="0" subtype="0" ' 'typeId="2" />')
def test_len(self): """Test len.""" pyvlx = PyVLX() devices = Devices(pyvlx) self.assertEqual(len(devices), 0) window1 = Window(pyvlx, 0, 'Window_1', 0, 0) devices.add(window1) self.assertEqual(len(devices), 1) window2 = Window(pyvlx, 1, 'Window_2', 0, 0) devices.add(window2) self.assertEqual(len(devices), 2) window3 = Window(pyvlx, 2, 'Window_3', 0, 0) devices.add(window3) self.assertEqual(len(devices), 3) window4 = Window(pyvlx, 3, 'Window_4', 0, 0) devices.add(window4) self.assertEqual(len(devices), 4)
def test_window(self): """Test convert_frame_to_node with window.""" frame = FrameGetNodeInformationNotification() frame.node_id = 23 frame.name = "Fnord23" frame.node_type = NodeTypeWithSubtype.WINDOW_OPENER pyvlx = PyVLX() node = convert_frame_to_node(pyvlx, frame) self.assertEqual(node, Window(pyvlx=pyvlx, name="Fnord23", node_id=23))
def test_get_item_failed(self): """Test get_item with non existing object.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window1 = Window(pyvlx, 0, "Window_1", "aa:bb:aa:bb:aa:bb:aa:00") nodes.add(window1) with self.assertRaises(KeyError): nodes["Window_2"] # pylint: disable=pointless-statement with self.assertRaises(KeyError): nodes[1] # pylint: disable=pointless-statement
def test_window_str(self): """Test string representation of Window object.""" pyvlx = PyVLX() window = Window(pyvlx=pyvlx, node_id=23, name='Test Window', rain_sensor=True) self.assertEqual( str(window), '<Window name="Test Window" node_id="23" rain_sensor=True/>')
def test_get_item_failed(self): """Test get_item with non existing object.""" pyvlx = PyVLX() devices = Devices(pyvlx) window1 = Window(pyvlx, 0, 'Window_1', 0, 0) devices.add(window1) with self.assertRaises(KeyError): devices['Window_2'] # pylint: disable=pointless-statement with self.assertRaises(IndexError): devices[1] # pylint: disable=pointless-statement
def test_get_item(self): """Test get_item.""" pyvlx = PyVLX() devices = Devices(pyvlx) window1 = Window(pyvlx, 0, 'Window_1', 0, 0) devices.add(window1) window2 = Window(pyvlx, 1, 'Window_2', 0, 0) devices.add(window2) window3 = Window(pyvlx, 2, 'Window_3', 0, 0) devices.add(window3) window4 = Window(pyvlx, 3, 'Window_4', 0, 0) devices.add(window4) self.assertEqual(devices['Window_1'], window1) self.assertEqual(devices['Window_2'], window2) self.assertEqual(devices['Window_3'], window3) self.assertEqual(devices['Window_4'], window4) self.assertEqual(devices[0], window1) self.assertEqual(devices[1], window2) self.assertEqual(devices[2], window3) self.assertEqual(devices[3], window4)
def test_window_with_rain_sensor(self): """Test convert_frame_to_node with window with rain sensor.""" frame = FrameGetNodeInformationNotification() frame.node_id = 23 frame.name = "Fnord23" frame.node_type = NodeTypeWithSubtype.WINDOW_OPENER_WITH_RAIN_SENSOR pyvlx = PyVLX() node = convert_frame_to_node(pyvlx, frame) self.assertEqual( node, Window(pyvlx=pyvlx, name="Fnord23", node_id=23, rain_sensor=True))
def test_load_windows(self): """Test load configuration with windows.""" pyvlx = PyVLX() devices = Devices(pyvlx) get_response = \ '{"token":"aEGjVG0T3jj1VNEJTFmMBw==","result":true,"deviceSta' + \ 'tus":"IDLE","data":[{"name":"Window 1","category":"Window op' + \ 'ener","id":0,"typeId":4,"subtype":1,"scenes":["All windows c' + \ 'losed","Sleeping wide Open","Sleeping slight open"]},{"name"' + \ ':"Window 2","category":"Window opener","id":1,"typeId":4,"su' + \ 'btype":1,"scenes":["All windows closed","Sleeping wide Open"' + \ ',"Sleeping slight open"]},{"name":"Window 3","category":"Win' + \ 'dow opener","id":2,"typeId":4,"subtype":1,"scenes":["All win' + \ 'dows closed","Sleeping wide Open","Sleeping slight open"]},{' + \ '"name":"Window 4","category":"Window opener","id":3,"typeId"' + \ ':4,"subtype":1,"scenes":["All windows closed","Sleeping wide' + \ 'Open","Sleeping slight open"]}],"errors":[]}' devices.data_import(json.loads(get_response)) self.assertEqual(len(devices), 4) self.assertEqual(devices[0], Window(pyvlx, 0, 'Window 1', 1, 4)) self.assertEqual(devices[1], Window(pyvlx, 1, 'Window 2', 1, 4)) self.assertEqual(devices[2], Window(pyvlx, 2, 'Window 3', 1, 4)) self.assertEqual(devices[3], Window(pyvlx, 3, 'Window 4', 1, 4))
def test_window_str(self): """Test string representation of Window object.""" pyvlx = PyVLX() window = Window( pyvlx=pyvlx, node_id=23, name="Test Window", rain_sensor=True, serial_number="aa:bb:aa:bb:aa:bb:aa:23", ) self.assertEqual( str(window), '<Window name="Test Window" node_id="23" rain_sensor=True serial_number="aa:bb:aa:bb:aa:bb:aa:23" position="UNKNOWN"/>', )
def test_get_item(self): """Test get_item.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window = Window(pyvlx, 0, 'Window') nodes.add(window) blind = Blind(pyvlx, 1, 'Blind') nodes.add(blind) roller_shutter = RollerShutter(pyvlx, 4, 'Roller Shutter') nodes.add(roller_shutter) self.assertEqual(nodes['Window'], window) self.assertEqual(nodes['Blind'], blind) self.assertEqual(nodes['Roller Shutter'], roller_shutter) self.assertEqual(nodes[0], window) self.assertEqual(nodes[1], blind) self.assertEqual(nodes[4], roller_shutter)
def test_get_item(self): """Test get_item.""" pyvlx = PyVLX() nodes = Nodes(pyvlx) window = Window(pyvlx, 0, "Window", "aa:bb:aa:bb:aa:bb:aa:00") nodes.add(window) blind = Blind(pyvlx, 1, "Blind", "aa:bb:aa:bb:aa:bb:aa:01") nodes.add(blind) roller_shutter = RollerShutter(pyvlx, 4, "Roller Shutter", "aa:bb:aa:bb:aa:bb:aa:04") nodes.add(roller_shutter) self.assertEqual(nodes["Window"], window) self.assertEqual(nodes["Blind"], blind) self.assertEqual(nodes["Roller Shutter"], roller_shutter) self.assertEqual(nodes[0], window) self.assertEqual(nodes[1], blind) self.assertEqual(nodes[4], roller_shutter)
def test_get_name(self): """Test get_name().""" pyvlx = PyVLX() window = Window(pyvlx, 0, 'Test Window', 0, 2) self.assertEqual(window.get_name(), "Test Window")