def test_post_financial_charge_details_success_with_interest( 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_description') 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': '100.50', 'interest-paid-indicator': 'Yes', 'interest-rate': '5.11' }) calls = [ call('amount_originally_secured', '100.50'), call('rate_of_interest', '5.11') ] 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_description'))
def test_post_with_validation_errors(self, mock_validator): """Should respond with a 200, render the expected template, and return the expected error object.""" self.mock_session.return_value.add_charge_state = LocalLandChargeItem() self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] mock_validator.validate.return_value.errors = VALIDATION_ERRORS response = self.client.post( url_for('modify_land_charge.post_charge_date'), data={ 'date-day': CHARGE_DAY, 'date-month': CHARGE_MONTH, 'date-year': CHARGE_YEAR }) mock_validator.validate.assert_called_with(CHARGE_DAY, CHARGE_MONTH, CHARGE_YEAR) self.assert_status(response, 200) self.assert_template_used(HTML) self.assert_context('validation_errors', VALIDATION_ERRORS)
def test_get_with_date(self): """should respond with a 200 and render the expected template""" charge = LocalLandChargeItem() charge.charge_creation_date = date(2011, 1, 1) self.mock_session.return_value.add_charge_state = charge self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] response = self.client.get( url_for('modify_land_charge.get_charge_date')) self.status = self.assert_status(response, 200) self.assert_template_used(HTML)
def view_land_charge(local_land_charge): current_app.logger.info("Endpoint called - Clearing session charge") local_land_charge_service = LocalLandChargeService(current_app.config) # Clear these session values if someone quit an edit back to the view page g.session.add_charge_state = None g.session.edited_fields = None g.session.charge_added_outside_users_authority = None g.session.other_authority_update_permission = None g.session.other_authority_cancel_permission = None g.session.commit() current_app.logger.info("Charge cleared from session") validate_charge_id(local_land_charge) current_app.logger.info( "Retrieving charge for local_land_charge='{}'".format( local_land_charge)) response = local_land_charge_service.get_by_charge_number( local_land_charge) if response.status_code == 404: current_app.logger.info( "Search service reports '{}' not found - Returning error".format( local_land_charge)) raise ApplicationError(404) response.raise_for_status() current_app.logger.info( "Retrieved charge for local_land_charge='{}'".format( local_land_charge)) charge_data = response.json()[0]['item'] charge_item = LocalLandChargeItem.from_json(charge_data) # Let the LON blueprint handle LONS if charge_item.charge_type == LonDefaults.charge_type: return redirect( url_for('view_lon.view_lon', charge_id=local_land_charge)) current_app.logger.info( "Retrieving charge history for local_land_charge='{}'".format( local_land_charge)) updated, updated_date = get_history_update_info_by_charge_id( local_land_charge, local_land_charge_service) current_app.logger.info( "Rendering template for local_land_charge='{}'".format( local_land_charge)) AuditAPIService.audit_event( "User viewing charge: {}".format(local_land_charge)) return render_template('view_charge.html', charge_item=charge_item, charge_id=response.json()[0]['display_id'], updated_date=updated_date, updated=updated, geometry=json.dumps(charge_item.geometry))
def test_post_with_add_england_permission_succeeds_when_address_data_set_if_in_authority( 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}}]}' selected_address = { 'address': 'display address', 'line_1': 'Flat 1', 'line_2': 'Place', 'line_3': 'Holder', 'line_4': 'Flat 1', 'line_5': 'Flat 1', 'line_6': 'Flat 1', 'postcode': 'postcode', 'uprn': 123456789 } state = LocalLandChargeItem() self.mock_session.return_value.add_charge_state = state self.mock_session.return_value.user.permissions = [ Permissions.add_llc, Permissions.add_extent_england ] mock_la_api.return_value.get_authorities_by_extent.return_value = { "abc": True } response = self.client.post(url_for('add_land_charge.post_location'), data={ 'saved-features': input, 'selected-address': json.dumps(selected_address) }) mock_review_router.update_edited_field.assert_called_with( 'geometry', json.loads(input.strip())) mock_la_api.return_value.get_authorities_by_extent.assert_called() self.assert_status(response, 302) self.assertRedirects( response, url_for('add_land_charge.get_address_confirmation'))
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_get_with_financial_interest_maybe(self): """should respond with a 200 and render the expected template""" charge = LocalLandChargeItem() charge.amount_originally_secured = '150000' charge.rate_of_interest = 'Interest may be payable' self.mock_session.return_value.add_charge_state = charge self.client.set_cookie('localhost', Session.session_cookie_name, 'cookie_value') self.mock_session.return_value.user.permissions = [ Permissions.vary_llc ] response = self.client.get( url_for('modify_land_charge.get_financial_charge')) self.status = self.assert_status(response, 200) self.assert_template_used(HTML)
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_get_all_laws_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] self.mock_session.return_value.category_details = None response = self.client.get(url_for('add_land_charge.search_law')) 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_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_location_confirmation_post_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.post( url_for('modify_land_charge.post_location_confirmation')) self.assert_status(response, 302) self.assertRedirects(response, '/error')
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_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_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_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_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_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_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_confirm_redirects_to_new_when_statutory_provision_none( self, mock_current_app): 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.get( url_for('add_land_charge.law_document_confirmed')) 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_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 test_address_for_charge_renders(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.get(url_for(GET_ADDRESS_FOR_CHARGE)) self.assertStatus(response, 200) self.assert_template_used(TEMPLATE)
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_get_originating_authority_success(self, mock_authority_service): 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.get(url_for(ORIGINATING_AUTHORITY_GET)) self.assert_status(response, 200) self.assert_template_used('originating_authority.html')
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_get_land_compensation_land_sold_success(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.get(url_for('add_land_charge.get_land_compensation_land_sold')) self.assert_status(response, 200) self.assert_template_used('land_compensation_land_sold.html')
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_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())