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_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_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_cancel_confirm_success(self, mock_service, mock_maintain_api, mock_audit): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.cancel_lon ] self.mock_session.add_lon_charge_state = LightObstructionNoticeItem() g.session = self.mock_session mock_response = MagicMock() mock_service.return_value.get_by_charge_number.return_value = mock_response mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST" }] response = self.client.post( url_for('cancel_lon.confirm', charge_id='LLC-TST')) mock_maintain_api.update_charge.assert_called_with( g.session.add_lon_charge_state) mock_audit.audit_event.assert_called_with( 'Cancelling charge', supporting_info={'id': 'LLC-TST'}) self.assert_status(response, 302) self.assertRedirects( response, url_for('cancel_lon.charge_cancelled', charge_id='LLC-TST'))
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_cancel_upload_post_success(self, mock_request, mock_llc_service, mock_validator, mock_storage_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.cancel_lon ] mock_response = MagicMock() mock_llc_service.return_value.get_by_charge_number.return_value = mock_response mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST" }] mock_request.form.getlist.return_value = ["Form B"] mock_storage_service.return_value.save_files.return_value.json.return_value = uploaded_form_b_response mock_validator.validate.return_value.errors = None g.session = self.mock_session response = self.client.post( url_for('cancel_lon.cancel_post', charge_id='LLC-TST')) expected_charge_document_state = { "form-a": uploaded_form_a_response["form-a"], "form-b": uploaded_form_b_response["form-b"], } print(g.session.add_lon_charge_state.documents_filed) self.assertEqual(g.session.add_lon_charge_state.documents_filed, expected_charge_document_state) self.assert_status(response, 302)
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_vary_lon_validator_required_fields_court_order( self, mock_service, mock_request): 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.edited_fields = {} mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_request.form.getlist.return_value = ["Court Order"] mock_request.files.get.return_value = None response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) context_validation_error = self.get_context_variable( 'validation_errors') self.assert_status(response, 400) self.assertIsNotNone( context_validation_error["court-order-file-input"]) self.assertEqual( context_validation_error["court-order-file-input"].inline_message, "Upload a document for Court Order")
def test_vary_lon_validator_no_option_selected(self, mock_service, mock_request): 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.edited_fields = {} mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_request.form.getlist.return_value = [] response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) context_validation_error = self.get_context_variable( 'validation_errors') self.assert_status(response, 400) self.assertIsNotNone(context_validation_error["vary-lon-options"]) self.assertEqual( context_validation_error["vary-lon-options"].inline_message, "Choose one option")
def test_upload_lon_documents_no_errors(self, mock_service, mock_validator, mock_handle_options): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_validator.validate.return_value.errors = None response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) self.assert_status(response, 302) self.assertRedirects( response, url_for('modify_lon.modify_lon_details_get', charge_id="LLC-TST"))
def test_upload_lon_documents_no_select(self, mock_service, mock_validator): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_lon ] mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_validator.validate.return_value.errors = { 'vary-lon-options': ['Choose one'] } response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) self.assert_context('validation_errors', {'vary-lon-options': ['Choose one']}) self.assert_status(response, 400) self.assert_template_used('modify_lon_upload.html')
def test_upload_definitive_certificate_fields(self, mock_service, mock_storage_service, 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 ] state = LightObstructionNoticeItem() self.mock_session.return_value.add_lon_charge_state = state self.mock_session.return_value.edited_fields = {} expected_expiry_date = datetime.date.today() + relativedelta(years=+21) expected_definitive_date = datetime.date(1, 1, 1) mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_validator.validate.return_value.errors = None mock_request.form.getlist.return_value = ["Definitive Certificate"] mock_request.form.get('definitive_cert_day').return_value = 1 mock_request.form.get('definitive_cert_month').return_value = 1 mock_request.form.get('definitive_cert_year').return_value = 1 mock_request.files.get( 'definitive-certificate-file-input').return_value = True response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) self.assertEqual( self.mock_session.return_value.add_lon_charge_state.expiry_date, expected_expiry_date) self.assertEqual( self.mock_session.return_value.add_lon_charge_state. tribunal_definitive_certificate_date, expected_definitive_date) self.assertEqual( self.mock_session.return_value. edited_fields['tribunal-definitive-certificate-date'], "Tribunal definitive certificate date") self.assertEqual( self.mock_session.return_value.edited_fields['expiry-date'], "Expiry date") self.assert_status(response, 302) self.assertRedirects( response, url_for('modify_lon.modify_lon_details_get', charge_id="LLC-TST"))
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 test_cancel_get_found(self, mock_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.cancel_lon ] mock_response = MagicMock() mock_service.return_value.get_by_charge_number.return_value = mock_response mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST" }] response = self.client.get( url_for('cancel_lon.cancel_get', charge_id='LLC-TST')) self.assert_status(response, 200)
def test_view_found(self, mock_service, mock_audit, mock_storage): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.retrieve_llc ] mock_response = MagicMock() mock_service.return_value.get_by_charge_number.return_value = mock_response mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] response = self.client.get( url_for('view_lon.view_lon', charge_id='LLC-TST')) self.assert_status(response, 200)
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 test_vary_lon_validator_required_fields_definitive_certificate( self, mock_service, mock_request): 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.edited_fields = {} mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST", "cancelled": False }] mock_service.return_value.get_by_charge_number.return_value = mock_response mock_request.form.getlist.return_value = ["Definitive Certificate"] mock_request.form.get.return_value = "" mock_request.files.get.return_value = None response = self.client.post( url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST")) context_validation_error = self.get_context_variable( 'validation_errors') self.assert_status(response, 400) self.assertIsNotNone( context_validation_error["tribunal_definitive_certificate_date"]) self.assertEqual( context_validation_error["tribunal_definitive_certificate_date"]. inline_message, "Check that the date is in Day/Month/Year format") self.assertIsNotNone( context_validation_error["definitive-certificate-file-input"]) self.assertEqual( context_validation_error["definitive-certificate-file-input"]. inline_message, "Upload a document for Definitive Certificate")
def test_modify_lon_upload_cancelled(self, mock_service): 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 = None mock_item = get_mock_lon_item().copy() mock_item['end-date'] = '2017-01-01' mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = [{ "item": mock_item, "display_id": "LLC-TST", "cancelled": True }] mock_service.return_value.get_by_charge_number.return_value = mock_response response = self.client.get( url_for('modify_lon.modify_lon_upload_get', charge_id='LLC-TST')) self.assert_redirects(response, '/error')
def test_cancel_upload_post_failed_validation(self, mock_service, mock_validator): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.cancel_lon ] mock_response = MagicMock() mock_service.return_value.get_by_charge_number.return_value = mock_response mock_response.status_code = 200 mock_response.json.return_value = [{ "item": get_mock_lon_item(), "display_id": "LLC-TST" }] validation_errors = {"error": "Something went wrong"} mock_validator.validate.return_value.errors = validation_errors response = self.client.post( url_for('cancel_lon.cancel_post', charge_id='LLC-TST')) self.assert_status(response, 400) self.assert_context('validation_errors', validation_errors)