def test_expiry_post_charge_does_not_expire(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [Permissions.vary_llc] state = LocalLandChargeItem() state.geometry = "abc" state.local_land_charge = 1 self.mock_session.return_value.add_charge_state = state response = self.client.post(url_for('modify_land_charge.post_expiry'), data={ 'does_charge_expire': 'no' }) self.assert_status(response, 302) self.assertRedirects(response, url_for('modify_land_charge.modify_land_charge', local_land_charge="LLC-1"))
def test_location_post_validation_errors(self, mock_location_validator): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] state = LocalLandChargeItem() state.geometry = "abc" self.mock_session.return_value.add_charge_state = state validation_errors = {'map': 'test error message'} mock_location_validator.validate.return_value.errors = validation_errors response = self.client.post( url_for('modify_land_charge.post_location')) self.assert_status(response, 400) self.assert_context('validation_errors', validation_errors)
def test_edit_get_location_confirmation_redirects_to_error_if_no_geometry( self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = None self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] response = self.client.get( url_for('modify_land_charge.get_location_confirmation')) self.assert_status(response, 302) self.assertRedirects(response, '/error')
def test_location_confirmation_post_redirects_when_address_not_set(self, mock_review_router): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for('add_land_charge.get_address_confirmation') state = LocalLandChargeItem() state.geometry = 'abc' self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for('add_land_charge.post_location_confirmation', address_selected=False), data={'location-confirmation': True}) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_address_confirmation')) self.assertTrue(self.mock_session.return_value.charge_added_outside_users_authority)
def test_post_location_description_successful(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.local_land_charge = 1 self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.vary_llc] charge_geographic_description = 'This is a valid description' response = self.client.post(url_for(POST_ADDRESS_CONFIRMATION), data={ 'has-address': 'No', 'charge-geographic-description': charge_geographic_description }) self.assert_status(response, 302) self.assertRedirects(response, url_for(NEXT_URL, local_land_charge=charge_id_services.calc_display_id( state.local_land_charge)))
def test_confirm_successful_lon(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" state.charge_type = "Light obstruction notice" state.statutory_provision = "test statutory provision" state.instrument = "test instrument" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get( url_for('add_land_charge.law_document_confirmed')) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_lon.new'))
def test_post_originating_authority_success(self, mock_review_router, mock_authority_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for('add_land_charge.get_charge_type') mock_authority_service.return_value.get_organisations.return_value = AUTHORITIES_JSON state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for(ORIGINATING_AUTHORITY_POST), data={'authority-search-field': ORIGINATING_AUTHORITIES[0]}) mock_review_router.update_edited_field.assert_called_with('originating_authority', ORIGINATING_AUTHORITIES[0]) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_charge_type'))
def test_get_successful(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" state.charge_type = "Top Level" state.statutory_provision = "test statutory provision" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get( url_for('add_land_charge.get_law_document_confirmation')) self.assert_status(response, 200) self.assert_template_used('confirm_law_and_document.html') self.assertIn("test statutory provision", response.data.decode())
def test_post_returns_select_address_validation(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.previously_selected_address = None self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for(POST_ADDRESS_CONFIRMATION), data={ 'has-address': 'ProvideAddress', 'selected-address': None }) self.assert_status(response, 400) self.assert_template_used(TEMPLATE) self.assertIn('Choose an address', response.data.decode())
def test_post_returns_description_length_validation(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for(POST_ADDRESS_CONFIRMATION), data={ 'has-address': 'No', 'charge-geographic-description': 'a' * 1005 }) self.assert_status(response, 400) self.assert_template_used(TEMPLATE) self.assertIn('Answer is too long', response.data.decode())
def test_renders_with_data_when_previously_set(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] state = LocalLandChargeItem() state.supplementary_information = "test-supplementary-information" self.mock_session.return_value.add_charge_state = state response = self.client.get( url_for('modify_land_charge.get_charge_description')) self.assertStatus(response, 200) self.assert_template_used('charge_description.html') self.assertIn('test-supplementary-information', response.data.decode())
def test_get_redirects_to_new_when_charge_type_none( self, mock_current_app): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get( url_for('add_land_charge.get_law_document_confirmation')) calls = [call("Redirecting to: %s", "/add-local-land-charge")] mock_current_app.logger.info.assert_has_calls(calls) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.new'))
def test_post_success(self, mock_current_app): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for('add_land_charge.post_charge_type'), data={ 'charge-type': 'ABC' }) calls = [call("Updating session object with charge type: %s", "ABC")] mock_current_app.logger.info.assert_has_calls(calls) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_sub_category'))
def test_get_all_laws_successful(self, mock_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" state.charge_type = "Top Level" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] mock_service.get_all_stat_provs.return_value = ["abc", "def"] response = self.client.get(url_for('add_land_charge.search_law')) self.assert_status(response, 200) self.assert_template_used('search_law.html') self.assertIn("abc", response.data.decode()) self.assertIn("def", response.data.decode())
def test_post_sub_category_success_dont_know_category(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" state.charge_type = "Top Level" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post( url_for('add_land_charge.post_sub_category'), data={'charge-sub-category': "I don't know the charge category"}) self.assert_status(response, 302) self.assertRedirects( response, url_for("add_land_charge.get_subcategory_not_known"))
def test_get_land_compensation_owned_success_freehold(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.land_capacity_description = 'Freehold' self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get( url_for('add_land_charge.get_land_compensation_owned')) self.assert_status(response, 200) self.assert_template_used('land_compensation_owned.html') self.assertEqual( self.get_context_variable('request_body')['land-owned-indicator'], 'Freehold')
def test_expiry_post_dates(self, mock_review_router): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for( 'add_land_charge.get_additional_info') state = LocalLandChargeItem() state.geometry = "abc" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for('add_land_charge.post_expiry'), data=EXPIRED_REQUEST) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_additional_info'))
def test_post_land_compensation_land_sold_success(self, mock_review_router): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for('add_land_charge.get_charge_date') state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post(url_for('add_land_charge.post_land_compensation_land_sold'), data={'land-sold-description': 'description', 'land-works-particulars': 'particulars'}) calls = [call('land_sold_description', 'description'), call('land_works_particulars', 'particulars')] mock_review_router.update_edited_field.assert_has_calls(calls) self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_charge_date'))
def test_post_financial_charge_details_min_required_validation(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post( url_for('add_land_charge.post_financial_charge_details'), data={ 'amount-secured': '', 'interest-paid-indicator': '' }) self.assert_status(response, 400) self.assert_template_used('financial_charge_details.html') self.assertIn('Amount is required', response.data.decode()) self.assertIn('Choose one option', response.data.decode())
def test_address_confirmation_renders(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') previously_selected_address = { "address": "previously selected address" } state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.previously_selected_address = previously_selected_address self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get(url_for(GET_ADDRESS_CONFIRMATION)) self.assertStatus(response, 200) self.assert_template_used(TEMPLATE) self.assertIn(previously_selected_address["address"], response.data.decode())
def test_add_location_post_redirects_to_location_confirmation_no_address( self, mock_review_router, mock_la_api): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for( 'add_land_charge.get_address_confirmation') input = '{"type":"FeatureCollection",' \ '"features":[' \ '{"type":"Feature",' \ '"geometry":{' \ '"type":"Polygon",' \ '"coordinates":[' \ '[[511076.08598934463,381319.1389185938],' \ '[502935.0162093069,344754.81621829123],' \ '[460299.51643357374,365124.6766137525],' \ '[478395.29646112275,392099.3797708411],' \ '[511076.08598934463,381319.1389185938]]]},' \ '"properties":{"id":1}}]}' state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] self.mock_session.return_value.user.organisation = 'Abc' mock_la_api.return_value.get_authorities_by_extent.return_value = { "DEF": True } response = self.client.post(url_for('add_land_charge.post_location'), data={'saved-features': input}) mock_review_router.update_edited_field.assert_called_with( 'geometry', json.loads(input.strip())) self.assert_status(response, 302) self.assertRedirects( response, url_for('add_land_charge.get_location_confirmation', address_selected=False))
def test_get_financial_charge_details_success_with_interest(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.rate_of_interest = '5.1' self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get( url_for('add_land_charge.get_financial_charge_details')) self.assert_status(response, 200) self.assert_template_used('financial_charge_details.html') self.assertEqual( self.get_context_variable('request_body') ['interest-paid-indicator'], 'Yes') self.assertEqual( self.get_context_variable('request_body')['interest-rate'], '5.1')
def test_expiry_post_charge_does_expire(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [Permissions.vary_llc] state = LocalLandChargeItem() state.local_land_charge = 1 self.mock_session.return_value.add_charge_state = state form_data = { 'does_charge_expire': 'yes', 'charge_expiry_day': '10', 'charge_expiry_month': '10', 'charge_expiry_year': '2010' } response = self.client.post(url_for('modify_land_charge.post_expiry'), data=form_data) self.assert_status(response, 302) self.assertRedirects(response, url_for('modify_land_charge.modify_land_charge', local_land_charge="LLC-1"))
def post_charge_type(): current_app.logger.info("Endpoint called with charge-type = '%s'", request.form['charge-type'] if 'charge-type' in request.form else None) if g.session.add_charge_state is None: current_app.logger.info("Redirecting to: %s", url_for("add_land_charge.new")) return redirect(url_for("add_land_charge.new")) charge_type = request.form.get('charge-type') current_app.logger.info("Running validation") validation_errors = ChargeTypeValidator.validate(charge_type) if validation_errors.errors: current_app.logger.warning("Validation errors occurred") categories = CategoryService.get_categories() return render_template( 'charge_type.html', categories=categories, validation_errors=validation_errors.errors, validation_summary_heading=validation_errors.summary_heading_text, submit_url=url_for('add_land_charge.post_charge_type') ), 400 current_app.logger.info( "Updating session object with charge type: %s", charge_type) if g.session.add_charge_state.charge_type is not None and g.session.add_charge_state.charge_type != charge_type: current_app.logger.info("Clearing session - charge type changed") if g.session.adding_charge_for_other_authority: authority = g.session.add_charge_state.originating_authority else: authority = g.session.user.organisation g.session.add_charge_state = LocalLandChargeItem() g.session.add_charge_state.originating_authority = authority g.session.add_charge_state.statutory_provision = 'Not provided' g.session.add_charge_state.schema_version = SCHEMA_VERSION g.session.redirect_route = None g.session.add_charge_state.charge_type = charge_type g.session.commit() return redirect(url_for('add_land_charge.get_sub_category'))
def test_post_renders_when_previous_information_set(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] state = LocalLandChargeItem() state.local_land_charge = 12345678 self.mock_session.return_value.add_charge_state = state response = self.client.post( url_for('modify_land_charge.post_charge_description'), data={'charge-description': 'test-charge-description'}) self.assert_status(response, 302) self.assertRedirects( response, url_for('modify_land_charge.modify_land_charge', local_land_charge='LLC-FCDPP'))
def test_post_all_laws_validation_errors_not_on_list(self, mock_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" state.charge_type = "Top Level" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] mock_service.get_all_stat_provs.return_value = ["abc", "def"] response = self.client.post(url_for('add_land_charge.post_search_law'), data={"legislation": "ghi"}) self.assert_status(response, 400) self.assert_template_used('search_law.html') self.assertIn("abc", response.data.decode()) self.assertIn("def", response.data.decode()) self.assertIn("There are errors on this page", response.data.decode()) self.assertIn("ghi is not a valid selection for law", response.data.decode())
def test_get_charge_type_success(self, mock_service): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" mock_service.get_categories.return_value = [ {"name": "ABC", "display": "ABC Display"}, {"name": "DEF", "display": "DEF Display"} ] self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.get(url_for('add_land_charge.get_charge_type')) self.assert_status(response, 200) self.assert_template_used('charge_type.html') self.assertIn("ABC Display", response.data.decode()) self.assertIn("DEF Display", response.data.decode())
def test_edit_location_confirmation_post_returns_required_validation(self): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = 'abc' self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] response = self.client.post( url_for('modify_land_charge.post_location_confirmation'), data={'location-confirmation': None}) self.assert_status(response, 400) self.assert_template_used('edit_location_confirmation.html') self.assertIn( 'Confirm that you have the authority to update this charge', response.data.decode())
def test_post_success_yes(self, mock_current_app): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') state = LocalLandChargeItem() state.geometry = "abc" self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post( url_for('add_land_charge.post_financial_charge'), data={'amount-known-indicator': 'Yes'}) calls = [ call("Endpoint called with amount-known-indicator = '%s'", "Yes") ] mock_current_app.logger.info.assert_has_calls(calls) self.assert_status(response, 302) self.assertRedirects( response, url_for('add_land_charge.get_financial_charge_details'))
def test_post_charge_description_success(self, mock_review_router): self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') mock_review_router.get_redirect_url.return_value = url_for( 'add_land_charge.get_charge_date') state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [Permissions.add_llc] response = self.client.post( url_for('add_land_charge.post_charge_description'), data={'charge-description': 'description'}) mock_review_router.update_edited_field.assert_called_with( 'supplementary_information', 'description') self.assert_status(response, 302) self.assertRedirects(response, url_for('add_land_charge.get_charge_date'))