From 34515fb999d8552dba2aa05b683ef43b3e333a0a Mon Sep 17 00:00:00 2001 From: natdeanlewissoftwire Date: Wed, 31 Jan 2024 15:39:19 +0000 Subject: [PATCH] feat: update answers and hint for 24/25 and test --- .../form/lettings/questions/ethnic_white.rb | 27 +++++-- .../buyer1_ethnic_background_white.rb | 27 +++++-- .../lettings/questions/ethnic_white_spec.rb | 80 +++++++++++++++++++ .../buyer1_ethnic_background_white_spec.rb | 48 ++++++++--- 4 files changed, 157 insertions(+), 25 deletions(-) create mode 100644 spec/models/form/lettings/questions/ethnic_white_spec.rb diff --git a/app/models/form/lettings/questions/ethnic_white.rb b/app/models/form/lettings/questions/ethnic_white.rb index 707330175..11bb3ef8a 100644 --- a/app/models/form/lettings/questions/ethnic_white.rb +++ b/app/models/form/lettings/questions/ethnic_white.rb @@ -6,15 +6,26 @@ class Form::Lettings::Questions::EthnicWhite < ::Form::Question @header = "Which of the following best describes the lead tenant’s White background?" @type = "radio" @check_answers_card_number = 1 - @hint_text = "The lead tenant is the person in the household who does the most paid work. If several people do the same paid work, the lead tenant is whoever is the oldest." - @answer_options = ANSWER_OPTIONS + @hint_text = form.start_year_after_2024? ? "" : "The lead tenant is the person in the household who does the most paid work. If several people do the same paid work, the lead tenant is whoever is the oldest." @question_number = 35 end - ANSWER_OPTIONS = { - "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, - "2" => { "value" => "Irish" }, - "18" => { "value" => "Gypsy or Irish Traveller" }, - "3" => { "value" => "Any other White background" }, - }.freeze + def answer_options + if form.start_year_after_2024? + { + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "20" => { "value" => "Roma" }, + "3" => { "value" => "Any other White background" }, + }.freeze + else + { + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "3" => { "value" => "Any other White background" }, + }.freeze + end + end end diff --git a/app/models/form/sales/questions/buyer1_ethnic_background_white.rb b/app/models/form/sales/questions/buyer1_ethnic_background_white.rb index 644839979..fb4673a05 100644 --- a/app/models/form/sales/questions/buyer1_ethnic_background_white.rb +++ b/app/models/form/sales/questions/buyer1_ethnic_background_white.rb @@ -5,16 +5,27 @@ class Form::Sales::Questions::Buyer1EthnicBackgroundWhite < ::Form::Question @check_answer_label = "Buyer 1’s ethnic background" @header = "Which of the following best describes buyer 1’s White background?" @type = "radio" - @answer_options = ANSWER_OPTIONS - @hint_text = "Buyer 1 is the person in the household who does the most paid work. If it’s a joint purchase and the buyers do the same amount of paid work, buyer 1 is whoever is the oldest." + @hint_text = form.start_year_after_2024? ? "" : "Buyer 1 is the person in the household who does the most paid work. If it’s a joint purchase and the buyers do the same amount of paid work, buyer 1 is whoever is the oldest." @check_answers_card_number = 1 @question_number = 23 end - ANSWER_OPTIONS = { - "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, - "2" => { "value" => "Irish" }, - "18" => { "value" => "Gypsy or Irish Traveller" }, - "3" => { "value" => "Any other White background" }, - }.freeze + def answer_options + if form.start_year_after_2024? + { + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "20" => { "value" => "Roma" }, + "3" => { "value" => "Any other White background" }, + }.freeze + else + { + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "3" => { "value" => "Any other White background" }, + }.freeze + end + end end diff --git a/spec/models/form/lettings/questions/ethnic_white_spec.rb b/spec/models/form/lettings/questions/ethnic_white_spec.rb new file mode 100644 index 000000000..6a81afb88 --- /dev/null +++ b/spec/models/form/lettings/questions/ethnic_white_spec.rb @@ -0,0 +1,80 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Questions::EthnicWhite, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page) } + + let(:question_id) { nil } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("ethnic") + end + + it "has the correct header" do + expect(question.header).to eq("Which of the following best describes the lead tenant’s White background?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Lead tenant’s ethnic background") + end + + it "has the correct type" do + expect(question.type).to eq("radio") + end + + it "is not marked as derived" do + expect(question.derived?).to be false + end + + context "with 2023/24 form" do + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "3" => { "value" => "Any other White background" }, + }) + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("The lead tenant is the person in the household who does the most paid work. If several people do the same paid work, the lead tenant is whoever is the oldest.") + end + end + + context "with 2024/25 form" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "20" => { "value" => "Roma" }, + "3" => { "value" => "Any other White background" }, + }) + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("") + end + end + + it "has the correct check_answers_card_number" do + expect(question.check_answers_card_number).to eq(1) + end +end diff --git a/spec/models/form/sales/questions/buyer1_ethnic_background_white_spec.rb b/spec/models/form/sales/questions/buyer1_ethnic_background_white_spec.rb index 684477542..a4a3a6ef6 100644 --- a/spec/models/form/sales/questions/buyer1_ethnic_background_white_spec.rb +++ b/spec/models/form/sales/questions/buyer1_ethnic_background_white_spec.rb @@ -6,6 +6,14 @@ RSpec.describe Form::Sales::Questions::Buyer1EthnicBackgroundWhite, type: :model let(:question_id) { nil } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:subsection) { instance_double(Form::Subsection) } + let(:form) { instance_double(Form) } + + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + allow(page).to receive(:subsection).and_return(subsection) + allow(subsection).to receive(:form).and_return(form) + end it "has correct page" do expect(question.page).to eq(page) @@ -31,17 +39,39 @@ RSpec.describe Form::Sales::Questions::Buyer1EthnicBackgroundWhite, type: :model expect(question.derived?).to be false end - it "has the correct hint_text" do - expect(question.hint_text).to eq("Buyer 1 is the person in the household who does the most paid work. If it’s a joint purchase and the buyers do the same amount of paid work, buyer 1 is whoever is the oldest.") + context "with 2023/24 form" do + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "3" => { "value" => "Any other White background" }, + }) + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("Buyer 1 is the person in the household who does the most paid work. If it’s a joint purchase and the buyers do the same amount of paid work, buyer 1 is whoever is the oldest.") + end end - it "has the correct answer_options" do - expect(question.answer_options).to eq({ - "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, - "18" => { "value" => "Gypsy or Irish Traveller" }, - "2" => { "value" => "Irish" }, - "3" => { "value" => "Any other White background" }, - }) + context "with 2024/25 form" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(true) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "1" => { "value" => "English, Welsh, Northern Irish, Scottish or British" }, + "2" => { "value" => "Irish" }, + "18" => { "value" => "Gypsy or Irish Traveller" }, + "20" => { "value" => "Roma" }, + "3" => { "value" => "Any other White background" }, + }) + end + + it "has the correct hint_text" do + expect(question.hint_text).to eq("") + end end it "has the correct check_answers_card_number" do