Exemple #1
0
    def test_update_lights_with_lights_and_groups(self, mock_phue):
        """Test the update_lights function with both lights and groups."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        self.mock_lights = ['some', 'light']
        self.mock_groups = ['and', 'groups']

        with patch('homeassistant.components.light.hue.get_bridge_type',
                   return_value=self.mock_bridge_type):
            with patch('homeassistant.components.light.hue.process_lights',
                       return_value=self.mock_lights) as mock_process_lights:
                with patch('homeassistant.components.light.hue.process_groups',
                           return_value=self.mock_groups) \
                        as mock_process_groups:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    self.mock_add_devices.assert_called_once_with(
                        self.mock_lights)
Exemple #2
0
    def test_update_lights_with_lights_and_groups(self, mock_phue):
        """Test the update_lights function with both lights and groups."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        mock_lights = [
            self.build_mock_light(self.mock_bridge, 42, 'some'),
            self.build_mock_light(self.mock_bridge, 84, 'light'),
        ]
        mock_groups = [
            self.build_mock_light(self.mock_bridge, 15, 'and'),
            self.build_mock_light(self.mock_bridge, 72, 'groups'),
        ]

        with patch(HUE_LIGHT_NS + 'process_lights',
                   return_value=mock_lights) as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups',
                       return_value=mock_groups) as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    # note that mock_lights has been modified in place and
                    # now contains both lights and groups
                    self.mock_add_devices.assert_called_once_with(mock_lights)
                    dispatcher_send.assert_not_called()
Exemple #3
0
    def test_update_lights_no_groups(self, mock_phue):
        """Test the update_lights function when no groups are found."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        mock_lights = [
            self.build_mock_light(self.mock_bridge, 42, 'some'),
            self.build_mock_light(self.mock_bridge, 84, 'light'),
        ]

        with patch(HUE_LIGHT_NS + 'process_lights',
                   return_value=mock_lights) as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups', return_value=[]) \
                    as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    self.mock_add_devices.assert_called_once_with(
                        mock_lights)
                    dispatcher_send.assert_not_called()
    def test_update_lights_with_lights_and_groups(self, mock_phue):
        """Test the update_lights function with both lights and groups."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        self.mock_lights = ['some', 'light']
        self.mock_groups = ['and', 'groups']

        with patch('homeassistant.components.light.hue.get_bridge_type',
                   return_value=self.mock_bridge_type):
            with patch('homeassistant.components.light.hue.process_lights',
                       return_value=self.mock_lights) as mock_process_lights:
                with patch('homeassistant.components.light.hue.process_groups',
                           return_value=self.mock_groups) \
                        as mock_process_groups:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    self.mock_add_devices.assert_called_once_with(
                        self.mock_lights)
    def test_update_lights_with_lights_and_groups(self, mock_phue):
        """Test the update_lights function with both lights and groups."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        mock_lights = [
            self.build_mock_light(self.mock_bridge, 42, 'some'),
            self.build_mock_light(self.mock_bridge, 84, 'light'),
        ]
        mock_groups = [
            self.build_mock_light(self.mock_bridge, 15, 'and'),
            self.build_mock_light(self.mock_bridge, 72, 'groups'),
        ]

        with patch(HUE_LIGHT_NS + 'process_lights',
                   return_value=mock_lights) as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups',
                       return_value=mock_groups) as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    # note that mock_lights has been modified in place and
                    # now contains both lights and groups
                    self.mock_add_devices.assert_called_once_with(
                        mock_lights)
                    dispatcher_send.assert_not_called()
    def test_update_lights_no_groups(self, mock_phue):
        """Test the update_lights function when no groups are found."""
        self.setup_mocks_for_update_lights()
        self.mock_bridge.allow_hue_groups = True
        mock_lights = [
            self.build_mock_light(self.mock_bridge, 42, 'some'),
            self.build_mock_light(self.mock_bridge, 84, 'light'),
        ]

        with patch(HUE_LIGHT_NS + 'process_lights',
                   return_value=mock_lights) as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups', return_value=[]) \
                    as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    self.mock_add_devices.assert_called_once_with(
                        mock_lights)
                    dispatcher_send.assert_not_called()
Exemple #7
0
    def test_update_lights_with_two_bridges(self, mock_phue):
        """Test the update_lights function with two bridges."""
        self.setup_mocks_for_update_lights()

        mock_bridge_one = self.create_mock_bridge('one', False)
        mock_bridge_one_lights = self.create_mock_lights({
            1: {
                'name': 'b1l1'
            },
            2: {
                'name': 'b1l2'
            }
        })

        mock_bridge_two = self.create_mock_bridge('two', False)
        mock_bridge_two_lights = self.create_mock_lights({
            1: {
                'name': 'b2l1'
            },
            3: {
                'name': 'b2l3'
            }
        })

        with patch('homeassistant.components.light.hue.HueLight.'
                   'schedule_update_ha_state'):
            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_one_lights
            with patch.object(mock_bridge_one,
                              'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(self.hass, mock_bridge_one,
                                                    self.mock_add_devices)

            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_two_lights
            with patch.object(mock_bridge_two,
                              'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(self.hass, mock_bridge_two,
                                                    self.mock_add_devices)

        self.assertEqual(sorted(mock_bridge_one.lights.keys()), [1, 2])
        self.assertEqual(sorted(mock_bridge_two.lights.keys()), [1, 3])

        self.assertEqual(len(self.mock_add_devices.mock_calls), 2)

        # first call
        name, args, kwargs = self.mock_add_devices.mock_calls[0]
        self.assertEqual(len(args), 1)
        self.assertEqual(len(kwargs), 0)

        # second call works the same
        name, args, kwargs = self.mock_add_devices.mock_calls[1]
        self.assertEqual(len(args), 1)
        self.assertEqual(len(kwargs), 0)
Exemple #8
0
    def test_update_lights_with_no_lights(self, mock_phue):
        """Test the update_lights function when no lights are found."""
        self.setup_mocks_for_update_lights()

        with patch(HUE_LIGHT_NS + 'process_lights', return_value=[]) \
                as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups', return_value=[]) \
                    as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_not_called()
                    self.mock_add_devices.assert_not_called()
                    dispatcher_send.assert_not_called()
    def test_update_lights_with_no_lights(self, mock_phue):
        """Test the update_lights function when no lights are found."""
        self.setup_mocks_for_update_lights()

        with patch(HUE_LIGHT_NS + 'process_lights', return_value=[]) \
                as mock_process_lights:
            with patch(HUE_LIGHT_NS + 'process_groups', return_value=[]) \
                    as mock_process_groups:
                with patch.object(self.hass.helpers.dispatcher,
                                  'dispatcher_send') as dispatcher_send:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge, mock.ANY)
                    mock_process_groups.assert_not_called()
                    self.mock_add_devices.assert_not_called()
                    dispatcher_send.assert_not_called()
Exemple #10
0
    def test_update_lights_with_no_lights(self, mock_phue):
        """Test the update_lights function when no lights are found."""
        self.setup_mocks_for_update_lights()

        with patch('homeassistant.components.light.hue.get_bridge_type',
                   return_value=self.mock_bridge_type):
            with patch('homeassistant.components.light.hue.process_lights',
                       return_value=[]) as mock_process_lights:
                with patch('homeassistant.components.light.hue.process_groups',
                           return_value=self.mock_groups) \
                        as mock_process_groups:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    mock_process_groups.assert_not_called()
                    self.mock_add_devices.assert_not_called()
    def test_update_lights_with_no_lights(self, mock_phue):
        """Test the update_lights function when no lights are found."""
        self.setup_mocks_for_update_lights()

        with patch('homeassistant.components.light.hue.get_bridge_type',
                   return_value=self.mock_bridge_type):
            with patch('homeassistant.components.light.hue.process_lights',
                       return_value=[]) as mock_process_lights:
                with patch('homeassistant.components.light.hue.process_groups',
                           return_value=self.mock_groups) \
                        as mock_process_groups:
                    hue_light.unthrottled_update_lights(
                        self.hass, self.mock_bridge, self.mock_add_devices)

                    mock_process_lights.assert_called_once_with(
                        self.hass, self.mock_api, self.mock_bridge,
                        self.mock_bridge_type, mock.ANY)
                    mock_process_groups.assert_not_called()
                    self.mock_add_devices.assert_not_called()
    def test_update_lights_with_two_bridges(self, mock_phue):
        """Test the update_lights function with two bridges."""
        self.setup_mocks_for_update_lights()

        mock_bridge_one = self.create_mock_bridge('one', False)
        mock_bridge_one_lights = self.create_mock_lights(
            {1: {'name': 'b1l1'}, 2: {'name': 'b1l2'}})

        mock_bridge_two = self.create_mock_bridge('two', False)
        mock_bridge_two_lights = self.create_mock_lights(
            {1: {'name': 'b2l1'}, 3: {'name': 'b2l3'}})

        with patch('homeassistant.components.light.hue.HueLight.'
                   'schedule_update_ha_state'):
            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_one_lights
            with patch.object(mock_bridge_one, 'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(
                    self.hass, mock_bridge_one, self.mock_add_devices)

            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_two_lights
            with patch.object(mock_bridge_two, 'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(
                    self.hass, mock_bridge_two, self.mock_add_devices)

        self.assertEqual(sorted(mock_bridge_one.lights.keys()), [1, 2])
        self.assertEqual(sorted(mock_bridge_two.lights.keys()), [1, 3])

        self.assertEqual(len(self.mock_add_devices.mock_calls), 2)

        # first call
        name, args, kwargs = self.mock_add_devices.mock_calls[0]
        self.assertEqual(len(args), 1)
        self.assertEqual(len(kwargs), 0)

        # second call works the same
        name, args, kwargs = self.mock_add_devices.mock_calls[1]
        self.assertEqual(len(args), 1)
        self.assertEqual(len(kwargs), 0)
Exemple #13
0
    def test_update_lights_with_two_bridges(self, mock_phue):
        """Test the update_lights function with two bridges."""
        self.setup_mocks_for_update_lights()

        mock_bridge_one = self.create_mock_bridge('one', False)
        mock_bridge_one_lights = self.create_mock_lights({
            1: {
                'name': 'b1l1'
            },
            2: {
                'name': 'b1l2'
            }
        })

        mock_bridge_two = self.create_mock_bridge('two', False)
        mock_bridge_two_lights = self.create_mock_lights({
            1: {
                'name': 'b2l1'
            },
            3: {
                'name': 'b2l3'
            }
        })

        with patch('homeassistant.components.light.hue.HueLight.'
                   'schedule_update_ha_state'):
            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_one_lights
            with patch.object(mock_bridge_one,
                              'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(self.hass, mock_bridge_one,
                                                    self.mock_add_devices)

            mock_api = MagicMock()
            mock_api.get.return_value = mock_bridge_two_lights
            with patch.object(mock_bridge_two,
                              'get_api',
                              return_value=mock_api):
                hue_light.unthrottled_update_lights(self.hass, mock_bridge_two,
                                                    self.mock_add_devices)

        self.assertEquals(sorted(mock_bridge_one.lights.keys()), [1, 2])
        self.assertEquals(sorted(mock_bridge_two.lights.keys()), [1, 3])

        self.assertEquals(len(self.mock_add_devices.mock_calls), 2)

        # first call
        name, args, kwargs = self.mock_add_devices.mock_calls[0]
        self.assertEquals(len(args), 1)
        self.assertEquals(len(kwargs), 0)

        # one argument, a list of lights in bridge one; each of them is an
        # object of type HueLight so we can't straight up compare them
        lights = args[0]
        self.assertEquals(lights[0].unique_id,
                          '{}.b1l1.Light.1'.format(hue_light.HueLight))
        self.assertEquals(lights[1].unique_id,
                          '{}.b1l2.Light.2'.format(hue_light.HueLight))

        # second call works the same
        name, args, kwargs = self.mock_add_devices.mock_calls[1]
        self.assertEquals(len(args), 1)
        self.assertEquals(len(kwargs), 0)

        lights = args[0]
        self.assertEquals(lights[0].unique_id,
                          '{}.b2l1.Light.1'.format(hue_light.HueLight))
        self.assertEquals(lights[1].unique_id,
                          '{}.b2l3.Light.3'.format(hue_light.HueLight))
    def test_update_lights_with_two_bridges(self, mock_phue):
        """Test the update_lights function with two bridges."""
        self.setup_mocks_for_update_lights()

        mock_bridge_one = self.create_mock_bridge('one', False)
        mock_bridge_one_lights = self.create_mock_lights(
            {1: {'name': 'b1l1'}, 2: {'name': 'b1l2'}})

        mock_bridge_two = self.create_mock_bridge('two', False)
        mock_bridge_two_lights = self.create_mock_lights(
            {1: {'name': 'b2l1'}, 3: {'name': 'b2l3'}})

        with patch('homeassistant.components.light.hue.get_bridge_type',
                   return_value=self.mock_bridge_type):
            with patch('homeassistant.components.light.hue.HueLight.'
                       'schedule_update_ha_state'):
                mock_api = MagicMock()
                mock_api.get.return_value = mock_bridge_one_lights
                with patch.object(mock_bridge_one, 'get_api',
                                  return_value=mock_api):
                    hue_light.unthrottled_update_lights(
                        self.hass, mock_bridge_one, self.mock_add_devices)

                mock_api = MagicMock()
                mock_api.get.return_value = mock_bridge_two_lights
                with patch.object(mock_bridge_two, 'get_api',
                                  return_value=mock_api):
                    hue_light.unthrottled_update_lights(
                        self.hass, mock_bridge_two, self.mock_add_devices)

        self.assertEquals(sorted(mock_bridge_one.lights.keys()), [1, 2])
        self.assertEquals(sorted(mock_bridge_two.lights.keys()), [1, 3])

        self.assertEquals(len(self.mock_add_devices.mock_calls), 2)

        # first call
        name, args, kwargs = self.mock_add_devices.mock_calls[0]
        self.assertEquals(len(args), 1)
        self.assertEquals(len(kwargs), 0)

        # one argument, a list of lights in bridge one; each of them is an
        # object of type HueLight so we can't straight up compare them
        lights = args[0]
        self.assertEquals(
            lights[0].unique_id,
            '{}.b1l1.Light.1'.format(hue_light.HueLight))
        self.assertEquals(
            lights[1].unique_id,
            '{}.b1l2.Light.2'.format(hue_light.HueLight))

        # second call works the same
        name, args, kwargs = self.mock_add_devices.mock_calls[1]
        self.assertEquals(len(args), 1)
        self.assertEquals(len(kwargs), 0)

        lights = args[0]
        self.assertEquals(
            lights[0].unique_id,
            '{}.b2l1.Light.1'.format(hue_light.HueLight))
        self.assertEquals(
            lights[1].unique_id,
            '{}.b2l3.Light.3'.format(hue_light.HueLight))