def test_add_preload_service(mock_serv, mock_char): """Test method add_preload_service. The methods 'get_serv_loader' and 'get_char_loader' are mocked. """ acc = MockAccessory('Accessory') serv = add_preload_service(acc, 'TestService', ['TestChar', 'TestChar2'], ['TestOptChar', 'TestOptChar2']) assert serv.display_name == 'TestService' assert len(serv.characteristics) == 2 assert len(serv.opt_characteristics) == 2 acc.services = [] serv = add_preload_service(acc, 'TestService') assert not serv.characteristics assert not serv.opt_characteristics acc.services = [] serv = add_preload_service(acc, 'TestService', 'TestChar', 'TestOptChar') assert len(serv.characteristics) == 1 assert len(serv.opt_characteristics) == 1 assert serv.characteristics[0].display_name == 'TestChar' assert serv.opt_characteristics[0].display_name == 'TestOptChar'
def test_add_preload_service(self): """Test add_preload_service without additional characteristics.""" acc = Mock() serv = add_preload_service(acc, 'AirPurifier') self.assertEqual(acc.mock_calls, [call.add_service(serv)]) with self.assertRaises(ValueError): serv.get_characteristic('Name') # Test with typo in service name with self.assertRaises(KeyError): add_preload_service(Mock(), 'AirPurifierTypo') # Test adding additional characteristic as string serv = add_preload_service(Mock(), 'AirPurifier', 'Name') serv.get_characteristic('Name') # Test adding additional characteristics as list serv = add_preload_service(Mock(), 'AirPurifier', ['Name', 'RotationSpeed']) serv.get_characteristic('Name') serv.get_characteristic('RotationSpeed') # Test adding additional characteristic with typo with self.assertRaises(KeyError): add_preload_service(Mock(), 'AirPurifier', 'NameTypo')
def test_override_properties(self): """Test overriding property values.""" serv = add_preload_service(Mock(), 'AirPurifier', 'RotationSpeed') char_active = serv.get_characteristic('Active') char_rotation_speed = serv.get_characteristic('RotationSpeed') self.assertTrue( char_active.properties['ValidValues'].get('State') is None) self.assertEqual(char_rotation_speed.properties['maxValue'], 100) override_properties(char_active, valid_values={'State': 'On'}) override_properties(char_rotation_speed, properties={'maxValue': 200}) self.assertFalse( char_active.properties['ValidValues'].get('State') is None) self.assertEqual(char_rotation_speed.properties['maxValue'], 200)