diff --git a/app/models/application_qualification.rb b/app/models/application_qualification.rb index 69e207a2ab1..540cacf71b3 100644 --- a/app/models/application_qualification.rb +++ b/app/models/application_qualification.rb @@ -59,6 +59,7 @@ class ApplicationQualification < ApplicationRecord validates :qualification_type, length: { maximum: MAX_QUALIFICATION_TYPE_LENGTH }, allow_blank: true validates :non_uk_qualification_type, length: { maximum: MAX_QUALIFICATION_TYPE_LENGTH }, allow_blank: true + validates :enic_reason, presence: true, on: :create enum enic_reason: { obtained: 'obtained', diff --git a/spec/factories/application_qualification.rb b/spec/factories/application_qualification.rb index 46fcc6aa74f..11c8b5132ef 100644 --- a/spec/factories/application_qualification.rb +++ b/spec/factories/application_qualification.rb @@ -23,6 +23,10 @@ institution_country { international? ? Faker::Address.country_code : 'GB' } equivalency_details { Faker::Lorem.paragraph_by_chars(number: 200) } + trait :skip_validate do + to_create { |instance| instance.save(validate: false) } + end + factory :gcse_qualification do level { 'gcse' } qualification_type { 'gcse' } diff --git a/spec/forms/candidate_interface/maths_gcse_grade_form_spec.rb b/spec/forms/candidate_interface/maths_gcse_grade_form_spec.rb index 8b77603f891..38d8f5d3a3e 100644 --- a/spec/forms/candidate_interface/maths_gcse_grade_form_spec.rb +++ b/spec/forms/candidate_interface/maths_gcse_grade_form_spec.rb @@ -121,6 +121,15 @@ expect(gcse.reload.grade).to eq('D') end + + it 'does not raise validation error for enic_reason being nil' do + gcse = create(:gcse_qualification, :skip_validate, enic_reason: nil, enic_reference: nil) + form = described_class.new(grade: 'other', other_grade: 'D', qualification_type: 'non_uk') + + form.save(gcse) + + expect(gcse.reload.enic_reason).to be_nil + end end describe '.build_from_qualification' do