def setUp(self): self.line_dao = Mock() self.extension_dao = Mock() self.line_extension_dao = Mock() self.device_dao = Mock(DeviceDao) self.service = LineDeviceUpdater(self.line_dao, self.extension_dao, self.line_extension_dao, self.device_dao) self.device = Device(id=sentinel.device_id) self.device_dao.get_registrar.return_value = sentinel.registrar
class TestLineDeviceUpdater(unittest.TestCase): def setUp(self): self.line_dao = Mock() self.extension_dao = Mock() self.line_extension_dao = Mock() self.device_dao = Mock(DeviceDao) self.service = LineDeviceUpdater(self.line_dao, self.extension_dao, self.line_extension_dao, self.device_dao) self.device = Device(id=sentinel.device_id) self.device_dao.get_registrar.return_value = sentinel.registrar def build_line(self, **kwargs): parameters = {'id': sentinel.line_id, 'device_id': sentinel.device_id, 'configregistrar': 'registrar'} parameters.update(kwargs) line = Line(**parameters) self.line_dao.find_all_by_device_id.return_value = [line] return line def build_extension(self, **kwargs): parameters = {'id': sentinel.extension_id} parameters.update(kwargs) extension = Extension(**parameters) self.extension_dao.get.return_value = extension return extension def build_line_extension(self, line, extension): line_extension = LineExtension(line_id=line.id, extension_id=extension.id) self.line_extension_dao.find_by_line_id.return_value = line_extension return line_extension def test_given_no_lines_then_lines_on_device_are_emptied(self): self.line_dao.find_all_by_device_id.return_value = [] self.service.update(self.device) self.device_dao.update_lines.assert_called_once_with(self.device, []) def test_given_no_lines_then_resets_device_to_autoprov(self): self.line_dao.find_all_by_device_id.return_value = [] self.service.update(self.device) self.device_dao.reset_autoprov.assert_called_once_with(self.device) def test_given_unknown_line_protocol_then_does_not_update_lines(self): self.build_line(protocol='foobar') self.service.update(self.device) self.device_dao.update_lines.assert_called_once_with(self.device, []) def test_given_sccp_line_then_updates_lines_using_sccp_converter(self): line = self.build_line(protocol='sccp') expected_converter = LineSCCPConverter(sentinel.registrar) self.service.update(self.device) self.device_dao.update_lines.assert_called_once_with(self.device, [expected_converter]) self.device_dao.get_registrar.assert_called_once_with(line.configregistrar) self.line_dao.find_all_by_device_id.assert_called_once_with(line.device_id) def test_given_sip_line_without_extension_then_does_not_update_lines(self): self.build_line(protocol='sip') self.line_extension_dao.find_by_line_id.return_value = None self.service.update(self.device) self.device_dao.update_lines.assert_called_once_with(self.device, []) def test_given_sip_line_with_extension_then_updates_lines_using_sip_converter(self): line = self.build_line(protocol='sip') extension = self.build_extension() self.build_line_extension(line, extension) expected_converter = LineSIPConverter(sentinel.registrar, line, extension) self.service.update(self.device) self.device_dao.update_lines.assert_called_once_with(self.device, [expected_converter]) self.device_dao.get_registrar.assert_called_once_with(line.configregistrar) self.line_dao.find_all_by_device_id.assert_called_once_with(line.device_id) self.line_extension_dao.find_by_line_id.assert_called_once_with(line.id) self.extension_dao.get.assert_called_once_with(extension.id)