def test_edit_dominant_description_update_success(self, mock_validator,
                                                      mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {
            'charge-address': "Dominant address"
        }

        mock_validator.validate.return_value.errors = None
        mock_request.form = {
            'have_address': 'No',
            'charge_geographic_description': 'CHANGED'
        }

        response = self.client.post(
            url_for('modify_lon.edit_dominant_building_post'))
        self.assert_status(response, 302)
        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.charge_address,
            '')
        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.
            charge_geographic_description, 'CHANGED')
        self.assertNotIn('charge-address',
                         self.mock_session.return_value.edited_fields)
        self.assertEqual(
            self.mock_session.return_value.
            edited_fields['charge_geographic_description'], 'Dominant address')
示例#2
0
    def test_edit_lon_land_interest_update_success(self, mock_validator,
                                                   mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())

        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        mock_validator.return_value.errors = None
        mock_request.form.get.return_value = "tenant"

        response = self.client.post(
            url_for('modify_lon.edit_lon_land_interest_post'))

        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.
            servient_land_interest_description, "tenant")
        self.assertEqual(
            self.mock_session.return_value.
            edited_fields['servient-land-interest-description'], "Interest")
        self.assert_status(response, 302)
示例#3
0
    def test_edit_dominant_building_extent_update_success(
            self, mock_validator, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        geometry = {
            'coordinates': [294230.7392612094, 93185.05361812815],
            'type': 'Point'
        }
        saved_features = {
            'saved-features':
            json.dumps({'features': [{
                'geometry': geometry
            }]})
        }
        mock_request.form = saved_features

        mock_validator.validate.return_value.errors = None

        response = self.client.post(
            url_for('modify_lon.edit_dominant_building_extent_post'))

        self.assert_status(response, 302)
        self.assertIsNotNone(
            self.mock_session.return_value.add_lon_charge_state.geometry)
        self.assertEqual(
            self.mock_session.return_value.edited_fields['geometry'], "Extent")
示例#4
0
    def test_cancel_confirm_success(self, mock_service, mock_maintain_api,
                                    mock_audit):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.cancel_lon
        ]
        self.mock_session.add_lon_charge_state = LightObstructionNoticeItem()
        g.session = self.mock_session

        mock_response = MagicMock()
        mock_service.return_value.get_by_charge_number.return_value = mock_response
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST"
        }]

        response = self.client.post(
            url_for('cancel_lon.confirm', charge_id='LLC-TST'))

        mock_maintain_api.update_charge.assert_called_with(
            g.session.add_lon_charge_state)
        mock_audit.audit_event.assert_called_with(
            'Cancelling charge', supporting_info={'id': 'LLC-TST'})
        self.assert_status(response, 302)
        self.assertRedirects(
            response,
            url_for('cancel_lon.charge_cancelled', charge_id='LLC-TST'))
示例#5
0
    def test_edit_servient_structure_position_update_success_amend(
            self, mock_validator, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        mock_lon.structure_position_and_dimension[
            'extent-covered'] = 'Part of the extent'
        mock_lon.structure_position_and_dimension[
            'part-explanatory-text'] = 'northern hedge'

        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        mock_validator.validate.return_value.errors = None
        mock_request.form.get.return_value = "All of the extent"

        response = self.client.post(
            url_for('modify_lon.edit_servient_structure_position_post'))

        structure_position_and_dimension = \
            self.mock_session.return_value.add_lon_charge_state.structure_position_and_dimension

        self.assert_status(response, 302)
        self.assertEqual(structure_position_and_dimension["extent-covered"],
                         "All of the extent")
        self.assertEqual(
            self.mock_session.return_value.edited_fields['structure-position'],
            "Extent - planned development")
示例#6
0
    def test_cancel_upload_post_success(self, mock_request, mock_llc_service,
                                        mock_validator, mock_storage_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.cancel_lon
        ]

        mock_response = MagicMock()
        mock_llc_service.return_value.get_by_charge_number.return_value = mock_response
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST"
        }]

        mock_request.form.getlist.return_value = ["Form B"]

        mock_storage_service.return_value.save_files.return_value.json.return_value = uploaded_form_b_response

        mock_validator.validate.return_value.errors = None
        g.session = self.mock_session

        response = self.client.post(
            url_for('cancel_lon.cancel_post', charge_id='LLC-TST'))

        expected_charge_document_state = {
            "form-a": uploaded_form_a_response["form-a"],
            "form-b": uploaded_form_b_response["form-b"],
        }

        print(g.session.add_lon_charge_state.documents_filed)
        self.assertEqual(g.session.add_lon_charge_state.documents_filed,
                         expected_charge_document_state)
        self.assert_status(response, 302)
    def test_edit_servient_structure_height_update_success_amend(
            self, mock_validator, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        mock_lon.structure_position_and_dimension['height'] = '20'
        mock_lon.structure_position_and_dimension['units'] = 'Metres'

        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        mock_validator.validate.return_value.errors = None
        mock_request.form.get.return_value = "Unlimited height"

        response = self.client.post(
            url_for('modify_lon.edit_servient_structure_height_post'))

        structure_position_and_dimension = \
            self.mock_session.return_value.add_lon_charge_state.structure_position_and_dimension

        self.assert_status(response, 302)
        self.assertEqual(structure_position_and_dimension["height"],
                         "Unlimited height")
        self.assertEqual(
            self.mock_session.return_value.
            edited_fields['structure-dimension'],
            "Height - planned development")
示例#8
0
    def test_vary_lon_validator_required_fields_court_order(
            self, mock_service, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]
        self.mock_session.return_value.edited_fields = {}

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_request.form.getlist.return_value = ["Court Order"]
        mock_request.files.get.return_value = None

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        context_validation_error = self.get_context_variable(
            'validation_errors')

        self.assert_status(response, 400)

        self.assertIsNotNone(
            context_validation_error["court-order-file-input"])
        self.assertEqual(
            context_validation_error["court-order-file-input"].inline_message,
            "Upload a document for Court Order")
示例#9
0
    def test_vary_lon_validator_no_option_selected(self, mock_service,
                                                   mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]
        self.mock_session.return_value.edited_fields = {}

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_request.form.getlist.return_value = []

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        context_validation_error = self.get_context_variable(
            'validation_errors')

        self.assert_status(response, 400)
        self.assertIsNotNone(context_validation_error["vary-lon-options"])
        self.assertEqual(
            context_validation_error["vary-lon-options"].inline_message,
            "Choose one option")
示例#10
0
    def test_upload_lon_documents_no_errors(self, mock_service, mock_validator,
                                            mock_handle_options):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_validator.validate.return_value.errors = None

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        self.assert_status(response, 302)
        self.assertRedirects(
            response,
            url_for('modify_lon.modify_lon_details_get', charge_id="LLC-TST"))
示例#11
0
    def test_upload_lon_documents_no_select(self, mock_service,
                                            mock_validator):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_validator.validate.return_value.errors = {
            'vary-lon-options': ['Choose one']
        }

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        self.assert_context('validation_errors',
                            {'vary-lon-options': ['Choose one']})
        self.assert_status(response, 400)
        self.assert_template_used('modify_lon_upload.html')
示例#12
0
    def test_upload_definitive_certificate_fields(self, mock_service,
                                                  mock_storage_service,
                                                  mock_validator,
                                                  mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        state = LightObstructionNoticeItem()
        self.mock_session.return_value.add_lon_charge_state = state
        self.mock_session.return_value.edited_fields = {}

        expected_expiry_date = datetime.date.today() + relativedelta(years=+21)
        expected_definitive_date = datetime.date(1, 1, 1)

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_validator.validate.return_value.errors = None

        mock_request.form.getlist.return_value = ["Definitive Certificate"]
        mock_request.form.get('definitive_cert_day').return_value = 1
        mock_request.form.get('definitive_cert_month').return_value = 1
        mock_request.form.get('definitive_cert_year').return_value = 1
        mock_request.files.get(
            'definitive-certificate-file-input').return_value = True

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.expiry_date,
            expected_expiry_date)
        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.
            tribunal_definitive_certificate_date, expected_definitive_date)
        self.assertEqual(
            self.mock_session.return_value.
            edited_fields['tribunal-definitive-certificate-date'],
            "Tribunal definitive certificate date")
        self.assertEqual(
            self.mock_session.return_value.edited_fields['expiry-date'],
            "Expiry date")
        self.assert_status(response, 302)
        self.assertRedirects(
            response,
            url_for('modify_lon.modify_lon_details_get', charge_id="LLC-TST"))
示例#13
0
    def test_edit_lon_land_interest_get_with_state(self):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]
        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = mock_lon

        response = self.client.get(
            url_for('modify_lon.edit_lon_land_interest_get'))

        self.assert_status(response, 200)
        self.assert_template_used('lon_land_interest.html')
示例#14
0
    def test_modify_lon_redirect_when_different_id_in_session(
            self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        state = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = state

        response = self.client.get(
            url_for('modify_lon.modify_lon_upload_get', charge_id=3))

        self.assert_status(response, 302)
示例#15
0
    def test_modify_lon_details_get_with_state(self, mock_service,
                                               mock_calc_display_id):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]
        self.mock_session.return_value.add_lon_charge_state = LightObstructionNoticeItem.from_json(
            get_mock_lon_item())
        mock_calc_display_id.return_value = "LLC-TST"

        response = self.client.get(
            url_for('modify_lon.modify_lon_details_get', charge_id='LLC-TST'))

        self.assert_status(response, 200)
        self.assert_template_used('modify_lon_details.html')
示例#16
0
    def test_edit_dominant_building_extent_update_errors(self, mock_validator):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = mock_lon
        mock_validator.validate.return_value.errors = {"error": "test-error"}

        response = self.client.post(
            url_for('modify_lon.edit_dominant_building_extent_post'))

        self.assert_status(response, 400)
        self.assert_template_used('dominant_building_extent.html')
        self.assert_context("validation_errors", {"error": "test-error"})
示例#17
0
    def test_cancel_get_found(self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.cancel_lon
        ]

        mock_response = MagicMock()
        mock_service.return_value.get_by_charge_number.return_value = mock_response
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST"
        }]

        response = self.client.get(
            url_for('cancel_lon.cancel_get', charge_id='LLC-TST'))

        self.assert_status(response, 200)
示例#18
0
    def test_view_found(self, mock_service, mock_audit, mock_storage):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.retrieve_llc
        ]

        mock_response = MagicMock()
        mock_service.return_value.get_by_charge_number.return_value = mock_response
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        response = self.client.get(
            url_for('view_lon.view_lon', charge_id='LLC-TST'))

        self.assert_status(response, 200)
示例#19
0
    def test_edit_lon_land_interest_other_missing_details(
            self, mock_render_template, mock_validator, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        mock_request.form.get.side_effect = ["Other", ""]
        mock_validator.return_value.errors = {"error": "test-error"}
        mock_render_template.return_value = "Template was called"

        response = self.client.post(
            url_for('modify_lon.edit_lon_land_interest_post'))

        self.assert_status(response, 400)
        mock_render_template.assert_called()
    def test_edit_applicant_info_update_success(self, mock_validator,
                                                mock_converter, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        mock_lon = LightObstructionNoticeItem.from_json(get_mock_lon_item())
        mock_edited_name = "Test"
        mock_edited_address = {
            "line-1": "street",
            "line-2": "town",
            "postcode": "postcode",
            "country": "country"
        }

        self.mock_session.return_value.add_lon_charge_state = mock_lon
        self.mock_session.return_value.edited_fields = {}

        mock_validator.validate.return_value.errors = None
        mock_request.form.get.return_value = mock_edited_name
        mock_converter.condense_address.return_value = mock_edited_address

        response = self.client.post(
            url_for('modify_lon.edit_applicant_info_post'))

        self.assert_status(response, 302)
        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.applicant_name,
            mock_edited_name)
        self.assertEqual(
            self.mock_session.return_value.add_lon_charge_state.
            applicant_address, mock_edited_address)
        self.assertEqual(
            self.mock_session.return_value.edited_fields['applicant-name'],
            "Name")
        self.assertEqual(
            self.mock_session.return_value.edited_fields['applicant-address'],
            "Address")
示例#21
0
    def test_vary_lon_validator_required_fields_definitive_certificate(
            self, mock_service, mock_request):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]
        self.mock_session.return_value.edited_fields = {}

        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST",
            "cancelled": False
        }]
        mock_service.return_value.get_by_charge_number.return_value = mock_response

        mock_request.form.getlist.return_value = ["Definitive Certificate"]
        mock_request.form.get.return_value = ""
        mock_request.files.get.return_value = None

        response = self.client.post(
            url_for('modify_lon.modify_lon_upload_post', charge_id="LLC-TST"))

        context_validation_error = self.get_context_variable(
            'validation_errors')

        self.assert_status(response, 400)
        self.assertIsNotNone(
            context_validation_error["tribunal_definitive_certificate_date"])
        self.assertEqual(
            context_validation_error["tribunal_definitive_certificate_date"].
            inline_message, "Check that the date is in Day/Month/Year format")

        self.assertIsNotNone(
            context_validation_error["definitive-certificate-file-input"])
        self.assertEqual(
            context_validation_error["definitive-certificate-file-input"].
            inline_message, "Upload a document for Definitive Certificate")
示例#22
0
    def test_modify_lon_upload_cancelled(self, mock_service):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.vary_lon
        ]

        self.mock_session.return_value.add_lon_charge_state = None
        mock_item = get_mock_lon_item().copy()
        mock_item['end-date'] = '2017-01-01'
        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": mock_item,
            "display_id": "LLC-TST",
            "cancelled": True
        }]

        mock_service.return_value.get_by_charge_number.return_value = mock_response

        response = self.client.get(
            url_for('modify_lon.modify_lon_upload_get', charge_id='LLC-TST'))
        self.assert_redirects(response, '/error')
示例#23
0
    def test_cancel_upload_post_failed_validation(self, mock_service,
                                                  mock_validator):
        self.client.set_cookie('localhost', Session.session_cookie_name,
                               'cookie_value')
        self.mock_session.return_value.user.permissions = [
            Permissions.cancel_lon
        ]

        mock_response = MagicMock()
        mock_service.return_value.get_by_charge_number.return_value = mock_response
        mock_response.status_code = 200
        mock_response.json.return_value = [{
            "item": get_mock_lon_item(),
            "display_id": "LLC-TST"
        }]

        validation_errors = {"error": "Something went wrong"}
        mock_validator.validate.return_value.errors = validation_errors

        response = self.client.post(
            url_for('cancel_lon.cancel_post', charge_id='LLC-TST'))

        self.assert_status(response, 400)
        self.assert_context('validation_errors', validation_errors)