def test_edit_dominant_building_extent_update_success( self, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} geometry = { 'coordinates': [294230.7392612094, 93185.05361812815], 'type': 'Point' } saved_features = { 'saved-features': json.dumps({'features': [{ 'geometry': geometry }]}) } mock_request.form = saved_features mock_validator.validate.return_value.errors = None response = self.client.post( url_for('modify_lon.edit_dominant_building_extent_post')) self.assert_status(response, 302) self.assertIsNotNone( self.mock_session.return_value.add_lon_charge_state.geometry) self.assertEqual( self.mock_session.return_value.edited_fields['geometry'], "Extent")
def test_edit_lon_land_interest_update_success(self, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} mock_validator.return_value.errors = None mock_request.form.get.return_value = "tenant" response = self.client.post( url_for('modify_lon.edit_lon_land_interest_post')) self.assertEqual( self.mock_session.return_value.add_lon_charge_state. servient_land_interest_description, "tenant") self.assertEqual( self.mock_session.return_value. edited_fields['servient-land-interest-description'], "Interest") self.assert_status(response, 302)
def test_edit_servient_structure_position_update_success_amend( self, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) mock_lon.structure_position_and_dimension[ 'extent-covered'] = 'Part of the extent' mock_lon.structure_position_and_dimension[ 'part-explanatory-text'] = 'northern hedge' self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} mock_validator.validate.return_value.errors = None mock_request.form.get.return_value = "All of the extent" response = self.client.post( url_for('modify_lon.edit_servient_structure_position_post')) structure_position_and_dimension = \ self.mock_session.return_value.add_lon_charge_state.structure_position_and_dimension self.assert_status(response, 302) self.assertEqual(structure_position_and_dimension["extent-covered"], "All of the extent") self.assertEqual( self.mock_session.return_value.edited_fields['structure-position'], "Extent - planned development")
def test_edit_dominant_description_update_success(self, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = { 'charge-address': "Dominant address" } mock_validator.validate.return_value.errors = None mock_request.form = { 'have_address': 'No', 'charge_geographic_description': 'CHANGED' } response = self.client.post( url_for('modify_lon.edit_dominant_building_post')) self.assert_status(response, 302) self.assertEqual( self.mock_session.return_value.add_lon_charge_state.charge_address, '') self.assertEqual( self.mock_session.return_value.add_lon_charge_state. charge_geographic_description, 'CHANGED') self.assertNotIn('charge-address', self.mock_session.return_value.edited_fields) self.assertEqual( self.mock_session.return_value. edited_fields['charge_geographic_description'], 'Dominant address')
def test_edit_servient_structure_height_update_success_amend( self, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) mock_lon.structure_position_and_dimension['height'] = '20' mock_lon.structure_position_and_dimension['units'] = 'Metres' self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} mock_validator.validate.return_value.errors = None mock_request.form.get.return_value = "Unlimited height" response = self.client.post( url_for('modify_lon.edit_servient_structure_height_post')) structure_position_and_dimension = \ self.mock_session.return_value.add_lon_charge_state.structure_position_and_dimension self.assert_status(response, 302) self.assertEqual(structure_position_and_dimension["height"], "Unlimited height") self.assertEqual( self.mock_session.return_value. edited_fields['structure-dimension'], "Height - planned development")
def test_edit_lon_land_interest_get_with_state(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon response = self.client.get( url_for('modify_lon.edit_lon_land_interest_get')) self.assert_status(response, 200) self.assert_template_used('lon_land_interest.html')
def test_modify_lon_redirect_when_different_id_in_session( self, mock_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] state = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = state response = self.client.get( url_for('modify_lon.modify_lon_upload_get', charge_id=3)) self.assert_status(response, 302)
def test_modify_lon_details_get_with_state(self, mock_service, mock_calc_display_id): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] self.mock_session.return_value.add_lon_charge_state = LightObstructionNoticeItem.from_json( get_mock_lon_item()) mock_calc_display_id.return_value = "LLC-TST" response = self.client.get( url_for('modify_lon.modify_lon_details_get', charge_id='LLC-TST')) self.assert_status(response, 200) self.assert_template_used('modify_lon_details.html')
def test_edit_dominant_building_extent_update_errors(self, mock_validator): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon mock_validator.validate.return_value.errors = {"error": "test-error"} response = self.client.post( url_for('modify_lon.edit_dominant_building_extent_post')) self.assert_status(response, 400) self.assert_template_used('dominant_building_extent.html') self.assert_context("validation_errors", {"error": "test-error"})
def get_lon_by_charge_id(charge_id, local_land_charge_service): validate_charge_id(charge_id) current_app.logger.info("Retrieving charge information from charge_id='{}'".format(charge_id)) response = local_land_charge_service.get_by_charge_number(charge_id) if response.status_code == 404: current_app.logger.info("Search service reports '{}' not found - Returning error".format(charge_id)) raise ApplicationError(404) response.raise_for_status() charge_item = LightObstructionNoticeItem.from_json(response.json()[0]['item']) display_id = response.json()[0]['display_id'] current_app.logger.info("Retrieved charge for local_land_charge='{}'".format(charge_id)) return display_id, charge_item
def test_edit_lon_land_interest_other_missing_details( self, mock_render_template, mock_validator, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} mock_request.form.get.side_effect = ["Other", ""] mock_validator.return_value.errors = {"error": "test-error"} mock_render_template.return_value = "Template was called" response = self.client.post( url_for('modify_lon.edit_lon_land_interest_post')) self.assert_status(response, 400) mock_render_template.assert_called()
def test_edit_applicant_info_update_success(self, mock_validator, mock_converter, mock_request): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item()) mock_edited_name = "Test" mock_edited_address = { "line-1": "street", "line-2": "town", "postcode": "postcode", "country": "country" } self.mock_session.return_value.add_lon_charge_state = mock_lon self.mock_session.return_value.edited_fields = {} mock_validator.validate.return_value.errors = None mock_request.form.get.return_value = mock_edited_name mock_converter.condense_address.return_value = mock_edited_address response = self.client.post( url_for('modify_lon.edit_applicant_info_post')) self.assert_status(response, 302) self.assertEqual( self.mock_session.return_value.add_lon_charge_state.applicant_name, mock_edited_name) self.assertEqual( self.mock_session.return_value.add_lon_charge_state. applicant_address, mock_edited_address) self.assertEqual( self.mock_session.return_value.edited_fields['applicant-name'], "Name") self.assertEqual( self.mock_session.return_value.edited_fields['applicant-address'], "Address")
def populate_state(self): """Populates the add charge from session state.""" current_app.logger.info( "Method called, getting session state from session api") response = SessionAPIService.get_session_state( self.session_key, Session.session_state_key) if response is not None: current_app.logger.info("Non-empty session state contents") if 'add_charge_state' in response: current_app.logger.info("add_charge_state in session state") self.add_charge_state = LocalLandChargeItem.from_json( response['add_charge_state']) if 'add_lon_charge_state' in response: current_app.logger.info( "add_lon_charge_state in session state") self.add_lon_charge_state = LightObstructionNoticeItem.from_json( response['add_lon_charge_state']) if 'last_created_charge' in response: current_app.logger.info("last_created_charge in session state") self.last_created_charge = LastCreatedCharge.from_dict( response['last_created_charge']) if 'statutory_provision_list' in response: current_app.logger.info( "statutory_provision_list in session state") self.statutory_provision_list = response[ 'statutory_provision_list'] if 'edited_fields' in response: current_app.logger.info("edited_fields in session state") self.edited_fields = response['edited_fields'] if 'llc1_state' in response: current_app.logger.info("llc1_state in session state") self.llc1_state = LLC1Search.from_json(response['llc1_state']) if 'redirect_route' in response: current_app.logger.info('redirect_route in session state') self.redirect_route = response['redirect_route'] if 'search_extent' in response: current_app.logger.info('search_extent in session state') self.search_extent = response['search_extent'] if 'filenames' in response: current_app.logger.info('filenames in session state') self.filenames = response['filenames'] if 'previously_selected_address' in response: current_app.logger.info( 'previously_selected_address in session state') self.previously_selected_address = response[ 'previously_selected_address'] if 'adding_charge_for_other_authority' in response: current_app.logger.info( 'adding_charge_for_other_authority in session state') self.adding_charge_for_other_authority = response[ 'adding_charge_for_other_authority'] if 'submit_token' in response: current_app.logger.info('submit token in session state') self.submit_token = response['submit_token'] if 'upload_shapefile_processed' in response: current_app.logger.info( 'upload_shapefile_processed in session state') self.upload_shapefile_processed = response[ 'upload_shapefile_processed'] if 'category_details' in response: self.category_details = Category.from_dict( response['category_details']) if 'category_confirmation' in response: self.category_confirmation = response['category_confirmation'] if 'charge_added_outside_users_authority' in response: self.charge_added_outside_users_authority = response[ 'charge_added_outside_users_authority'] if 'other_authority_update_permission' in response: self.other_authority_update_permission = response[ 'other_authority_update_permission'] if 'other_authority_cancel_permission' in response: self.other_authority_cancel_permission = response[ 'other_authority_cancel_permission'] if 'source_information' in response: self.source_information = response['source_information'] if 'source_information_id' in response: self.source_information_id = response['source_information_id'] if 'send_payment_link_info' in response: current_app.logger.info( "send_payment_link_info in session state") self.send_payment_link_info = PaymentLink.from_json( response['send_payment_link_info']) if 'payment_info' in response: current_app.logger.info("payment_info in session state") self.payment_info = PaymentInfo.from_json( response['payment_info']) if 'search_details' in response: self.search_details = SearchDetails.from_json( response['search_details'])