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)
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))
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'))
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)
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')
def test_date_year_4_digits(self): result = ExpiryValidator.validate(CHARGE_EXPIRED, '1', '1', '0001').errors self.assertIsNotNone(result) self.assertEqual(len(result), 0)