Ejemplo n.º 1
0
 def test_date_year_1_digit(self):
     result = ExpiryValidator.validate(CHARGE_EXPIRED, '1', '1', '1').errors
     self.assertIsNotNone(result)
     self.assertEqual(result['charge_expiry_date'].summary_message,
                      DATE_INVALID)
     self.assertEqual(result['charge_expiry_date'].inline_message,
                      DATE_YEAR_FORMAT_MESSAGE)
Ejemplo n.º 2
0
    def test_charge_does_not_expire_should_not_require_other_fields(
            self, mock_field_validator, mock_validation_error_builder):
        mock_validation_error_builder.return_value = validationErrorBuilder
        does_charge_expire = 'no'
        ExpiryValidator.validate(does_charge_expire, '', '', '')

        calls = [
            call(does_charge_expire,
                 'does_charge_expire',
                 None,
                 validationErrorBuilder,
                 summary_message='Choose one option',
                 inline_message=
                 'Choose \'No\' if you don’t have this information.'),
            call().is_required()
        ]
        mock_field_validator.assert_has_calls(calls)
def post_expiry():
    current_app.logger.info("Endpoint called")
    if g.session.add_charge_state is None:
        current_app.logger.error("Charge state not found in session - Returning error")
        raise ApplicationError(500)
    does_charge_expire = request.form.get('does_charge_expire', '')
    charge_expiry_day = request.form.get('charge_expiry_day', '')
    charge_expiry_month = request.form.get('charge_expiry_month', '')
    charge_expiry_year = request.form.get('charge_expiry_year', '')

    current_app.logger.info("Validating expiry information")
    validation_errors = ExpiryValidator.validate(
        does_charge_expire,
        charge_expiry_day,
        charge_expiry_month,
        charge_expiry_year
    )

    if validation_errors.errors:
        current_app.logger.warning("Validation errors present - Rendering page with validation errors")
        return render_template(
            'expiry.html',
            validation_errors=validation_errors.errors,
            validation_summary_heading=validation_errors.summary_heading_text,
            request_body=request.form,
            submit_url=url_for('modify_land_charge.post_expiry')
        ), 400

    current_app.logger.info("Field values validated - Updating session charge")
    charge_expiry_date = None
    edited = False
    if does_charge_expire == 'yes':
        if charge_expiry_day and charge_expiry_month and charge_expiry_year:
            charge_expiry_date = datetime.date(
                int(charge_expiry_year),
                int(charge_expiry_month),
                int(charge_expiry_day)
            )
        if g.session.add_charge_state.expiry_date is None \
                or g.session.add_charge_state.expiry_date != charge_expiry_date:
            edited = True
        g.session.add_charge_state.expiry_date = charge_expiry_date
    else:
        if g.session.add_charge_state.expiry_date is not None:
            edited = True
        g.session.add_charge_state.expiry_date = None
    if edited:
        g.session.edited_fields.append('expiry_date')
        g.session.commit()
    charge_disp_id = calc_display_id(g.session.add_charge_state.local_land_charge)
    current_app.logger.info(
        "Session charge updated - Redirecting back to modify_land_charge with local_land_charge='{}'"
        .format(charge_disp_id)
    )
    return redirect(url_for("modify_land_charge.modify_land_charge", local_land_charge=charge_disp_id))
Ejemplo n.º 4
0
def post_expiry():
    current_app.logger.info(
        "Endpoint called with does_charge_expire = '{}', charge_expiry_day = '{}', "
        "charge_expiry_month = '{}', charge_expiry_year = '{}'".format(
            request.form.get('does_charge_expire', ''),
            request.form.get('charge_expiry_day', ''),
            request.form.get('charge_expiry_month', ''),
            request.form.get('charge_expiry_year', '')))

    if g.session.add_charge_state is None:
        current_app.logger.info('Redirecting to: {}'.format(
            url_for('add_land_charge.new')))
        return redirect(url_for('add_land_charge.new'))

    does_charge_expire = request.form.get('does_charge_expire', '')
    charge_expiry_day = request.form.get('charge_expiry_day', '')
    charge_expiry_month = request.form.get('charge_expiry_month', '')
    charge_expiry_year = request.form.get('charge_expiry_year', '')

    validation_errors = ExpiryValidator.validate(does_charge_expire,
                                                 charge_expiry_day,
                                                 charge_expiry_month,
                                                 charge_expiry_year)

    current_app.logger.info('Running validation')
    if validation_errors.errors:
        current_app.logger.warning('Validation errors occurred')
        return render_template(
            'expiry.html',
            validation_errors=validation_errors.errors,
            validation_summary_heading=validation_errors.summary_heading_text,
            submit_url=url_for('add_land_charge.post_expiry'),
            request_body=request.form), 400

    if does_charge_expire == 'yes':
        charge_expiry_date = None

        if (charge_expiry_day and charge_expiry_month and charge_expiry_year):
            charge_expiry_date = date(int(charge_expiry_year),
                                      int(charge_expiry_month),
                                      int(charge_expiry_day))

        current_app.logger.info('Update expiry_date in session object')
        ReviewRouter.update_edited_field('expiry_date', charge_expiry_date)

        g.session.add_charge_state.expiry_date = charge_expiry_date
        g.session.commit()
    else:
        g.session.add_charge_state.expiry_date = None
        g.session.commit()

    return redirect(
        ReviewRouter.get_redirect_url('add_land_charge.get_additional_info'))
Ejemplo n.º 5
0
    def test_valid_date_if_provided(self, mock_fieldset_validator,
                                    mock_validation_error_builder):
        mock_validation_error_builder.return_value = validationErrorBuilder
        does_charge_expire = 'yes'
        charge_expiry_day = '12'
        charge_expiry_month = '12'
        charge_expiry_year = '2020'

        ExpiryValidator.validate(does_charge_expire, charge_expiry_day,
                                 charge_expiry_month, charge_expiry_year)

        charge_expiry_date = [
            charge_expiry_day, charge_expiry_month, charge_expiry_year
        ]

        calls = [
            call(charge_expiry_date, 'charge_expiry_date', 'Date',
                 validationErrorBuilder),
            call().is_valid_date()
        ]
        mock_fieldset_validator.assert_has_calls(calls)
Ejemplo n.º 6
0
 def test_charge_does_expire_should_require_other_fields(self):
     result = ExpiryValidator.validate(CHARGE_EXPIRED, '', '', '').errors
     self.assertIsNotNone(result)
     self.assertEqual(result['charge_expiry_date'].summary_message,
                      'Enter an expiry date')
Ejemplo n.º 7
0
 def test_date_year_4_digits(self):
     result = ExpiryValidator.validate(CHARGE_EXPIRED, '1', '1',
                                       '0001').errors
     self.assertIsNotNone(result)
     self.assertEqual(len(result), 0)