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"))
Example #2
0
    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')
Example #4
0
    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)))
Example #6
0
    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'))
Example #7
0
    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'))
Example #8
0
    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())
Example #11
0
    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())
Example #12
0
    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')
Example #17
0
    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'))
Example #18
0
    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'))
Example #25
0
    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'))
Example #30
0
    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'))