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'
Beispiel #2
0
    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)
    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)