def test_update_edited_dominant_address_with_redirect_route_not_set(self):
        """Should not update edited_fields if the redirect_route in session is not set."""
        with main.app.test_request_context():
            self.build_session()
            g.session.add_lon_charge_state.charge_geographic_description = CHARGE_GEOGRAPHIC_DESCRIPTION
            g.session.redirect_route = None

            ReviewRouter.update_edited_dominant_address(
                'charge_geographic_description', CHARGE_GEOGRAPHIC_DESCRIPTION)
            self.assertTrue(len(g.session.edited_fields) == 0)
def post_dominant_building():
    address_form = request.form

    validation_error_builder = DominantAddressValidator.validate(address_form)

    if validation_error_builder.errors:
        current_app.logger.warning("Validation errors occurred")
        return render_template(
            'dominant_building.html',
            validation_errors=validation_error_builder.errors,
            validation_summary_heading=validation_error_builder.
            summary_heading_text,
            submit_url=url_for('add_lon.post_dominant_building'),
            request_body=request.form), 400

    current_app.logger.info("Updating session object")

    if address_form['have_address'] == 'Yes':
        charge_address = {
            'unique-property-reference-number': int(address_form['uprn']),
            'postcode': address_form['postcode'],
            'line-1': address_form['address_line_1']
        }
        if address_form['address_line_2']:
            charge_address['line-2'] = address_form['address_line_2']
        if address_form['address_line_3']:
            charge_address['line-3'] = address_form['address_line_3']
        if address_form['address_line_4']:
            charge_address['line-4'] = address_form['address_line_4']
        if address_form['address_line_5']:
            charge_address['line-5'] = address_form['address_line_5']
        if address_form['address_line_6']:
            charge_address['line-6'] = address_form['address_line_6']

        ReviewRouter.update_edited_dominant_address('charge_address',
                                                    charge_address)
        g.session.add_lon_charge_state.charge_address = charge_address
        g.session.add_lon_charge_state.charge_geographic_description = ''
    else:
        charge_geographic_description = address_form[
            'charge_geographic_description']
        ReviewRouter.update_edited_dominant_address(
            'charge_geographic_description', charge_geographic_description)
        g.session.add_lon_charge_state.charge_address = ''
        g.session.add_lon_charge_state.charge_geographic_description = charge_geographic_description

    g.session.commit()

    return redirect(
        ReviewRouter.get_redirect_url('add_lon.get_dominant_building_extent'))
    def test_update_edited_dominant_address_with_old_address_new_description(
            self):
        """Should remove charge address if charge geo description is changed."""
        with main.app.test_request_context():
            self.build_session()
            g.session.add_lon_charge_state.charge_geographic_description = CHARGE_GEOGRAPHIC_DESCRIPTION
            g.session.redirect_route = REDIRECT_ROUTE
            g.session.edited_fields = {'charge_address': 'charge_address'}

            ReviewRouter.update_edited_dominant_address(
                'charge_geographic_description', 'new geographic description')
            self.assertTrue(len(g.session.edited_fields) == 1)
            self.assertIn('charge_geographic_description',
                          g.session.edited_fields)
            self.assertNotIn('charge_address', g.session.edited_fields)