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()
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_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)
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('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)
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))