diff --git a/app/controllers/applications/process/personal_informations_controller.rb b/app/controllers/applications/process/personal_informations_controller.rb index 929508dd3..818f4a459 100644 --- a/app/controllers/applications/process/personal_informations_controller.rb +++ b/app/controllers/applications/process/personal_informations_controller.rb @@ -21,7 +21,7 @@ def create private def path_to_next_page - if application.applicant.married? && ucd_changes_applies? + if application.applicant.married? && ucd_changes_applies? && application.applicant.ni_number.present? application_partner_informations_path(application) else application_details_path(application) diff --git a/app/models/applicant.rb b/app/models/applicant.rb index 84b71bedc..3f322d26a 100644 --- a/app/models/applicant.rb +++ b/app/models/applicant.rb @@ -4,7 +4,7 @@ class Applicant < ActiveRecord::Base include ApplicantCheckable before_validation :format_ni_number, :format_ho_number - before_validation :remove_partner_info, if: :married_changed? + before_validation :remove_partner_info validates :ni_number, format: { with: /\A(?!BG|GB|NK|KN|TN|NT|ZZ)[ABCEGHJ-PRSTW-Z][ABCEGHJ-NPRSTW-Z]\d{6}[A-D]\z/ @@ -35,7 +35,7 @@ def under_age? private def remove_partner_info - return if married == true + return if married == true && ni_number.present? self.partner_date_of_birth = nil self.partner_first_name = nil self.partner_last_name = nil diff --git a/app/views/online_applications/_post_ucd_show.html.slim b/app/views/online_applications/_post_ucd_show.html.slim index 498cf6b6f..a4bfed8b6 100644 --- a/app/views/online_applications/_post_ucd_show.html.slim +++ b/app/views/online_applications/_post_ucd_show.html.slim @@ -51,17 +51,17 @@ dl.govuk-summary-list dd.govuk-summary-list__value =@online_application_view.status - if @online_application_view.married - - if @online_application_view&.partner_full_name.present? + - if @online_application_view&.partner_full_name.present? && @online_application_view.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_full_name') dd.govuk-summary-list__value =@online_application_view.partner_full_name - - if @online_application_view.partner_date_of_birth.present? + - if @online_application_view.partner_date_of_birth.present? && @online_application_view.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_date_of_birth') dd.govuk-summary-list__value =@online_application_view.partner_date_of_birth - - if @online_application_view.partner_ni_number.present? + - if @online_application_view.partner_ni_number.present? && @online_application_view.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_ni_number') dd.govuk-summary-list__value =@online_application_view.partner_ni_number diff --git a/app/views/shared/_application_summary.html.slim b/app/views/shared/_application_summary.html.slim index 96d71ff43..3b218a62d 100644 --- a/app/views/shared/_application_summary.html.slim +++ b/app/views/shared/_application_summary.html.slim @@ -91,9 +91,8 @@ dl.govuk-summary-list span.govuk-visually-hidden=t('summary.status') - - if @applicant.married - - if @applicant&.partner_full_name.present? + - if @applicant&.partner_full_name.present? && @applicant.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_full_name') dd.govuk-summary-list__value =@applicant.partner_full_name @@ -104,7 +103,7 @@ dl.govuk-summary-list span.govuk-visually-hidden=t('summary.partner_full_name') - - if @applicant.partner_date_of_birth.present? + - if @applicant.partner_date_of_birth.present? && @applicant.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_date_of_birth') dd.govuk-summary-list__value =@applicant.partner_date_of_birth @@ -114,7 +113,7 @@ dl.govuk-summary-list = 'Change' span.govuk-visually-hidden=t('summary.partner_date_of_birth') - - if @applicant.partner_ni_number.present? + - if @applicant.partner_ni_number.present? && @applicant.ni_number.present? .govuk-summary-list__row dt.govuk-summary-list__key =t('summary.partner_ni_number') dd.govuk-summary-list__value =@applicant.partner_ni_number diff --git a/charts/help-with-fees-staffapp/Chart.yaml b/charts/help-with-fees-staffapp/Chart.yaml index 2e025a193..62c1a5572 100644 --- a/charts/help-with-fees-staffapp/Chart.yaml +++ b/charts/help-with-fees-staffapp/Chart.yaml @@ -3,7 +3,7 @@ appVersion: '1.0' description: A Helm chart for hwf-staffapp App name: help-with-fees-staffapp home: https://github.com/hmcts/hwf-staffapp -version: 0.0.73 +version: 0.0.74 dependencies: - name: base version: 1.3.0 diff --git a/spec/models/forms/application/partner_spec.rb b/spec/models/forms/application/partner_spec.rb index 4e6872554..ff810fda9 100644 --- a/spec/models/forms/application/partner_spec.rb +++ b/spec/models/forms/application/partner_spec.rb @@ -178,7 +178,7 @@ end describe 'when Applicant object is passed in' do - let(:applicant) { build(:applicant) } + let(:applicant) { build(:applicant, :married) } let(:form) { described_class.new(applicant) } params_list.each do |attr_name| @@ -220,7 +220,7 @@ end let(:applicant) { application.applicant } - let(:application) { create(:application, :applicant_full) } + let(:application) { create(:application, :applicant_full, married: true) } context 'when the attributes are correct' do let(:dob) { '01/01/1980' } @@ -270,5 +270,37 @@ is_expected.to be false end end + + context 'when married is true but no applicant NI number' do + let(:application) { create(:application, :applicant_full, married: true, ni_number: nil) } + let(:params) { { partner_first_name: 'John', partner_last_name: 'Doe', partner_ni_number: 'AB123456C' } } + + before do + form_save + applicant.reload + end + + it 'clears partner details' do + expect(applicant.partner_first_name).to be_nil + expect(applicant.partner_last_name).to be_nil + expect(applicant.partner_ni_number).to be_nil + end + end + + context 'when married is false but applicant provides an NI number' do + let(:application) { create(:application, :applicant_full, married: false, ni_number: 'AB123456C') } + let(:params) { { partner_first_name: 'John', partner_last_name: 'Doe', partner_ni_number: 'AB123456C' } } + + before do + form_save + applicant.reload + end + + it 'clears partner details' do + expect(applicant.partner_first_name).to be_nil + expect(applicant.partner_last_name).to be_nil + expect(applicant.partner_ni_number).to be_nil + end + end end end diff --git a/spec/models/views/reports/hmrc_ocmc_data_export_spec.rb b/spec/models/views/reports/hmrc_ocmc_data_export_spec.rb index fec55eae7..55eade319 100644 --- a/spec/models/views/reports/hmrc_ocmc_data_export_spec.rb +++ b/spec/models/views/reports/hmrc_ocmc_data_export_spec.rb @@ -41,9 +41,9 @@ Timecop.freeze(date_from + 5.days) { application5 } Timecop.freeze(date_from + 36.days) { application6 } Timecop.freeze(date_from + 6.days) { application7 } - application1.applicant.update(partner_ni_number: 'SN789654C') - application3.applicant.update(partner_ni_number: 'SN789654C', partner_last_name: 'Jones') - application4.applicant.update(partner_ni_number: '', partner_last_name: 'Jones') + application1.applicant.update(partner_ni_number: 'SN789654C', married: true, ni_number: 'SN789654C') + application3.applicant.update(partner_ni_number: 'SN789654C', partner_last_name: 'Jones', married: true, ni_number: 'SN789654C') + application4.applicant.update(partner_ni_number: '', partner_last_name: 'Jones', married: true, ni_number: 'SN789654C') end it 'return 5 rows csv data' do @@ -210,6 +210,7 @@ context 'plain application' do it { application1.update(decision: 'full') + application1.applicant.update(married: false) reference = application1.reference data_row = data.find { |row| row.split(',')[1] == reference } expect(data_row).to include('no,full,,,0.0') @@ -219,6 +220,7 @@ context 'evidence check' do it { application1.update(decision: 'full') + application1.applicant.update(married: false) evidence_check reference = application1.reference @@ -230,6 +232,7 @@ context 'part payment check' do it { application1.update(decision: 'full') + application1.applicant.update(married: false) evidence_check part_payment diff --git a/spec/models/views/reports/raw_data_export_spec.rb b/spec/models/views/reports/raw_data_export_spec.rb index 5c3a13dd1..5b298e60d 100644 --- a/spec/models/views/reports/raw_data_export_spec.rb +++ b/spec/models/views/reports/raw_data_export_spec.rb @@ -169,7 +169,7 @@ expect(export).to include(row) expect(export).to include("#{office},#{full_no_ec.reference}") - expect(export).to include("JK123455B,,#{dob},#{date_received},#{decision_date.to_fs},,,litigation_friend,true,false,post_ucd") + expect(export).to include("JK123455B,,#{dob},#{date_received},#{decision_date.to_fs},,,litigation_friend,false,false,post_ucd") end end