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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 8
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_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'))
Ejemplo n.º 10
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_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'))
Ejemplo n.º 13
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'))
    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)))
Ejemplo n.º 15
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())
    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')
Ejemplo n.º 18
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_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())
Ejemplo n.º 20
0
    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')
Ejemplo n.º 24
0
    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'))
Ejemplo n.º 27
0
    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())
Ejemplo n.º 29
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())