def test_simple(self): driver = Mock() primaryDevice = Mock() driver.getCommand = MagicMock( return_value=PolyTester.config['simple']['commands']['command1']) driver.getData = MagicMock(return_value={}) device = RemoteDevice(None, primaryDevice, None, None, None, "test device", PolyTester.config['simple'], driver) device.runCmd({'cmd': 'command1'}) driver.executeCommand.assert_called_with('command1', None)
def test_prefix(self): driver = Mock() driver.getData = Mock(return_value={'result': 1}) primaryDevice = Mock() driver.getCommand = MagicMock(return_value=None) primaryDevice.connected = True device = RemoteDevice(None, primaryDevice, None, None, None, "test device", PolyTester.config['prefix']['commandGroups']['group1'], driver) device.runCmd({'cmd': 'command1'}) driver.executeCommand.assert_called_with('g1_command1', None) driver.getData.assert_called_with('g1_command2')
def test_read_only(self): driver = Mock() primaryDevice = Mock() driver.getCommand = MagicMock( return_value=PolyTester.config['read_only']['commands']['command3']) driver.getData = MagicMock(return_value={}) device = RemoteDevice(None, primaryDevice, None, None, None, "test device", PolyTester.config['read_only'], driver) device.runCmd({'cmd': 'command3'}) driver.executeCommand.assert_called_with('command3', None) self.assertEqual(device.driverSetters['GV0'], 'command3')
def test_read_only_prefix(self): driver = Mock() primaryDevice = Mock() data = PolyTester.config['read_only_prefix']['commandGroups']['group1'] driver.getCommand = MagicMock( return_value=data['commands']['command1']) driver.getData = MagicMock(return_value={}) device = RemoteDevice(None, primaryDevice, None, None, None, "test device", data, driver) device.runCmd({'cmd': 'command1'}) driver.executeCommand.assert_called_with('r1_command1', None) self.assertEqual(device.driverSetters['GV0'], 'r1_command1')
def test_skips_bad_input_command(self): driver = Mock() driver.getData = Mock(return_value={'result': 1}) driver.hasCommand = Mock(return_value=False) primaryDevice = Mock() driver.getCommand = MagicMock(return_value=None) primaryDevice.connected = True device = RemoteDevice(None, primaryDevice, None, None, None, "test device", PolyTester.config['state'], driver) device.runCmd({'cmd': 'command1'}) driver.executeCommand.assert_called_with('command1', None) driver.getData.assert_not_called()
def createDevices(self): customData = self.polyConfig.get('customData', {}) addressMap = copy.deepcopy(customData.get('addressMap', {})) discoveredDevices = customData.get('discoveredDevices', {}) removedDevices = customData.get('removedDevices', {}) devicesConfig = self.configData.get('devices', {}) if discoveredDevices is not None: devicesConfig.update(discoveredDevices) self.configData['devices'] = devicesConfig for deviceName, deviceData in devicesConfig.items(): if self.isDeviceConfigured(deviceData) and deviceData.get('enable', True): driverName = deviceData['driver'] deviceData.update(self.configData['drivers'][driverName]) polyData = self.configData['poly']['drivers'].get( driverName, {}) deviceData['poly'].update(polyData) deviceDriver = self.deviceDriverInstances.get(driverName, {}).get( deviceName) if deviceDriver is None: deviceDriver = self.get_device_driver(driverName, deviceData)( utils.merge_commands(deviceData), LOGGER, True) self.deviceDriverInstances[driverName][deviceName] = deviceDriver nodeAddress = self.getDeviceAddress(deviceName, addressMap) if nodeAddress not in removedDevices: nodeName = deviceData.get( 'name', utils.name_to_desc(deviceName)) primaryDevice = PrimaryRemoteDevice(self, nodeAddress, driverName, nodeName, deviceData, deviceDriver) self.addNode(primaryDevice) for commandGroup, commandGroupData in deviceData.get( 'commandGroups', {}).items(): commandGroupData['poly'] = polyData groupConfig = self.configData['poly']['commandGroups'].get( commandGroup) if groupConfig: groupDriverName = driverName + '_' + commandGroup groupNodeAddress = self.getDeviceAddress( deviceName + '_' + commandGroup, addressMap) if groupNodeAddress not in removedDevices: self.addNode(RemoteDevice(self, primaryDevice, nodeAddress, groupNodeAddress, groupDriverName, utils.name_to_desc( commandGroup), commandGroupData, deviceDriver)) if customData.get('addressMap') != addressMap: self.saveCustomData({ 'addressMap': addressMap, 'discoveredDevices': discoveredDevices, 'removedDevices': removedDevices })