diff --git a/app/models/form/sales/questions/mortgage_lender.rb b/app/models/form/sales/questions/mortgage_lender.rb index e2f57306e..ee78ca639 100644 --- a/app/models/form/sales/questions/mortgage_lender.rb +++ b/app/models/form/sales/questions/mortgage_lender.rb @@ -7,7 +7,6 @@ class Form::Sales::Questions::MortgageLender < ::Form::Question @type = "select" @hint_text = "" @page = page - @answer_options = ANSWER_OPTIONS @bottom_guidance_partial = "mortgage_lender" @ownershipsch = ownershipsch @question_number = question_number @@ -54,54 +53,24 @@ class Form::Sales::Questions::MortgageLender < ::Form::Question "37" => "Virgin Money", "38" => "West Bromwich Building Society", "39" => "Yorkshire Building Society", + "41" => "Kent Reliance", "40" => "Other", "0" => "Don’t know", }.freeze + OPTIONS_INTRODUCED_2024 = %w[41].freeze + OPTIONS_NOT_DISPLAYED = %w[0].freeze + + def answer_options + if form.start_year_after_2024? + ANSWER_OPTIONS + else + ANSWER_OPTIONS.dup.reject { |k, _v| OPTIONS_INTRODUCED_2024.include?(k) } + end + end + def displayed_answer_options(_log, _user = nil) - { - "" => "Select an option", - "1" => "Atom Bank", - "2" => "Barclays Bank PLC", - "3" => "Bath Building Society", - "4" => "Buckinghamshire Building Society", - "5" => "Cambridge Building Society", - "6" => "Coventry Building Society", - "7" => "Cumberland Building Society", - "8" => "Darlington Building Society", - "9" => "Dudley Building Society", - "10" => "Ecology Building Society", - "11" => "Halifax", - "12" => "Hanley Economic Building Society", - "13" => "Hinckley and Rugby Building Society", - "14" => "Holmesdale Building Society", - "15" => "Ipswich Building Society", - "16" => "Leeds Building Society", - "17" => "Lloyds Bank", - "18" => "Mansfield Building Society", - "19" => "Market Harborough Building Society", - "20" => "Melton Mowbray Building Society", - "21" => "Nationwide Building Society", - "22" => "Natwest", - "23" => "Nedbank Private Wealth", - "24" => "Newbury Building Society", - "25" => "OneSavings Bank", - "26" => "Parity Trust", - "27" => "Penrith Building Society", - "28" => "Pepper Homeloans", - "29" => "Royal Bank of Scotland", - "30" => "Santander", - "31" => "Skipton Building Society", - "32" => "Teachers Building Society", - "33" => "The Co-operative Bank", - "34" => "Tipton & Coseley Building Society", - "35" => "TSB", - "36" => "Ulster Bank", - "37" => "Virgin Money", - "38" => "West Bromwich Building Society", - "39" => "Yorkshire Building Society", - "40" => "Other", - } + answer_options.reject { |k, _v| OPTIONS_NOT_DISPLAYED.include?(k) } end def question_number diff --git a/spec/models/form/sales/questions/mortgage_lender_spec.rb b/spec/models/form/sales/questions/mortgage_lender_spec.rb index 1fcf928a3..e50dafb2b 100644 --- a/spec/models/form/sales/questions/mortgage_lender_spec.rb +++ b/spec/models/form/sales/questions/mortgage_lender_spec.rb @@ -6,6 +6,14 @@ RSpec.describe Form::Sales::Questions::MortgageLender, type: :model do 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?) + 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) @@ -44,96 +52,203 @@ RSpec.describe Form::Sales::Questions::MortgageLender, type: :model do expect(question.top_guidance_partial).to be_nil end - it "has the correct answer_options" do - expect(question.answer_options).to eq({ - "" => "Select an option", - "0" => "Don’t know", - "1" => "Atom Bank", - "2" => "Barclays Bank PLC", - "3" => "Bath Building Society", - "4" => "Buckinghamshire Building Society", - "5" => "Cambridge Building Society", - "6" => "Coventry Building Society", - "7" => "Cumberland Building Society", - "8" => "Darlington Building Society", - "9" => "Dudley Building Society", - "10" => "Ecology Building Society", - "11" => "Halifax", - "12" => "Hanley Economic Building Society", - "13" => "Hinckley and Rugby Building Society", - "14" => "Holmesdale Building Society", - "15" => "Ipswich Building Society", - "16" => "Leeds Building Society", - "17" => "Lloyds Bank", - "18" => "Mansfield Building Society", - "19" => "Market Harborough Building Society", - "20" => "Melton Mowbray Building Society", - "21" => "Nationwide Building Society", - "22" => "Natwest", - "23" => "Nedbank Private Wealth", - "24" => "Newbury Building Society", - "25" => "OneSavings Bank", - "26" => "Parity Trust", - "27" => "Penrith Building Society", - "28" => "Pepper Homeloans", - "29" => "Royal Bank of Scotland", - "30" => "Santander", - "31" => "Skipton Building Society", - "32" => "Teachers Building Society", - "33" => "The Co-operative Bank", - "34" => "Tipton & Coseley Building Society", - "35" => "TSB", - "36" => "Ulster Bank", - "37" => "Virgin Money", - "38" => "West Bromwich Building Society", - "39" => "Yorkshire Building Society", - "40" => "Other", - }) + context "when form year is before 2024" do + before do + allow(form).to receive(:start_year_after_2024?).and_return(false) + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "" => "Select an option", + "0" => "Don’t know", + "1" => "Atom Bank", + "2" => "Barclays Bank PLC", + "3" => "Bath Building Society", + "4" => "Buckinghamshire Building Society", + "5" => "Cambridge Building Society", + "6" => "Coventry Building Society", + "7" => "Cumberland Building Society", + "8" => "Darlington Building Society", + "9" => "Dudley Building Society", + "10" => "Ecology Building Society", + "11" => "Halifax", + "12" => "Hanley Economic Building Society", + "13" => "Hinckley and Rugby Building Society", + "14" => "Holmesdale Building Society", + "15" => "Ipswich Building Society", + "16" => "Leeds Building Society", + "17" => "Lloyds Bank", + "18" => "Mansfield Building Society", + "19" => "Market Harborough Building Society", + "20" => "Melton Mowbray Building Society", + "21" => "Nationwide Building Society", + "22" => "Natwest", + "23" => "Nedbank Private Wealth", + "24" => "Newbury Building Society", + "25" => "OneSavings Bank", + "26" => "Parity Trust", + "27" => "Penrith Building Society", + "28" => "Pepper Homeloans", + "29" => "Royal Bank of Scotland", + "30" => "Santander", + "31" => "Skipton Building Society", + "32" => "Teachers Building Society", + "33" => "The Co-operative Bank", + "34" => "Tipton & Coseley Building Society", + "35" => "TSB", + "36" => "Ulster Bank", + "37" => "Virgin Money", + "38" => "West Bromwich Building Society", + "39" => "Yorkshire Building Society", + "40" => "Other", + }) + end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(nil, nil)).to eq({ + "" => "Select an option", + "1" => "Atom Bank", + "2" => "Barclays Bank PLC", + "3" => "Bath Building Society", + "4" => "Buckinghamshire Building Society", + "5" => "Cambridge Building Society", + "6" => "Coventry Building Society", + "7" => "Cumberland Building Society", + "8" => "Darlington Building Society", + "9" => "Dudley Building Society", + "10" => "Ecology Building Society", + "11" => "Halifax", + "12" => "Hanley Economic Building Society", + "13" => "Hinckley and Rugby Building Society", + "14" => "Holmesdale Building Society", + "15" => "Ipswich Building Society", + "16" => "Leeds Building Society", + "17" => "Lloyds Bank", + "18" => "Mansfield Building Society", + "19" => "Market Harborough Building Society", + "20" => "Melton Mowbray Building Society", + "21" => "Nationwide Building Society", + "22" => "Natwest", + "23" => "Nedbank Private Wealth", + "24" => "Newbury Building Society", + "25" => "OneSavings Bank", + "26" => "Parity Trust", + "27" => "Penrith Building Society", + "28" => "Pepper Homeloans", + "29" => "Royal Bank of Scotland", + "30" => "Santander", + "31" => "Skipton Building Society", + "32" => "Teachers Building Society", + "33" => "The Co-operative Bank", + "34" => "Tipton & Coseley Building Society", + "35" => "TSB", + "36" => "Ulster Bank", + "37" => "Virgin Money", + "38" => "West Bromwich Building Society", + "39" => "Yorkshire Building Society", + "40" => "Other", + }) + end end - it "has the correct displayed_answer_options" do - expect(question.displayed_answer_options(nil, nil)).to eq({ - "" => "Select an option", - "1" => "Atom Bank", - "2" => "Barclays Bank PLC", - "3" => "Bath Building Society", - "4" => "Buckinghamshire Building Society", - "5" => "Cambridge Building Society", - "6" => "Coventry Building Society", - "7" => "Cumberland Building Society", - "8" => "Darlington Building Society", - "9" => "Dudley Building Society", - "10" => "Ecology Building Society", - "11" => "Halifax", - "12" => "Hanley Economic Building Society", - "13" => "Hinckley and Rugby Building Society", - "14" => "Holmesdale Building Society", - "15" => "Ipswich Building Society", - "16" => "Leeds Building Society", - "17" => "Lloyds Bank", - "18" => "Mansfield Building Society", - "19" => "Market Harborough Building Society", - "20" => "Melton Mowbray Building Society", - "21" => "Nationwide Building Society", - "22" => "Natwest", - "23" => "Nedbank Private Wealth", - "24" => "Newbury Building Society", - "25" => "OneSavings Bank", - "26" => "Parity Trust", - "27" => "Penrith Building Society", - "28" => "Pepper Homeloans", - "29" => "Royal Bank of Scotland", - "30" => "Santander", - "31" => "Skipton Building Society", - "32" => "Teachers Building Society", - "33" => "The Co-operative Bank", - "34" => "Tipton & Coseley Building Society", - "35" => "TSB", - "36" => "Ulster Bank", - "37" => "Virgin Money", - "38" => "West Bromwich Building Society", - "39" => "Yorkshire Building Society", - "40" => "Other", - }) + context "when form year is >= 2024" 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({ + "" => "Select an option", + "0" => "Don’t know", + "1" => "Atom Bank", + "2" => "Barclays Bank PLC", + "3" => "Bath Building Society", + "4" => "Buckinghamshire Building Society", + "5" => "Cambridge Building Society", + "6" => "Coventry Building Society", + "7" => "Cumberland Building Society", + "8" => "Darlington Building Society", + "9" => "Dudley Building Society", + "10" => "Ecology Building Society", + "11" => "Halifax", + "12" => "Hanley Economic Building Society", + "13" => "Hinckley and Rugby Building Society", + "14" => "Holmesdale Building Society", + "15" => "Ipswich Building Society", + "16" => "Leeds Building Society", + "17" => "Lloyds Bank", + "18" => "Mansfield Building Society", + "19" => "Market Harborough Building Society", + "20" => "Melton Mowbray Building Society", + "21" => "Nationwide Building Society", + "22" => "Natwest", + "23" => "Nedbank Private Wealth", + "24" => "Newbury Building Society", + "25" => "OneSavings Bank", + "26" => "Parity Trust", + "27" => "Penrith Building Society", + "28" => "Pepper Homeloans", + "29" => "Royal Bank of Scotland", + "30" => "Santander", + "31" => "Skipton Building Society", + "32" => "Teachers Building Society", + "33" => "The Co-operative Bank", + "34" => "Tipton & Coseley Building Society", + "35" => "TSB", + "36" => "Ulster Bank", + "37" => "Virgin Money", + "38" => "West Bromwich Building Society", + "39" => "Yorkshire Building Society", + "41" => "Kent Reliance", + "40" => "Other", + }) + end + + it "has the correct displayed_answer_options" do + expect(question.displayed_answer_options(nil, nil)).to eq({ + "" => "Select an option", + "1" => "Atom Bank", + "2" => "Barclays Bank PLC", + "3" => "Bath Building Society", + "4" => "Buckinghamshire Building Society", + "5" => "Cambridge Building Society", + "6" => "Coventry Building Society", + "7" => "Cumberland Building Society", + "8" => "Darlington Building Society", + "9" => "Dudley Building Society", + "10" => "Ecology Building Society", + "11" => "Halifax", + "12" => "Hanley Economic Building Society", + "13" => "Hinckley and Rugby Building Society", + "14" => "Holmesdale Building Society", + "15" => "Ipswich Building Society", + "16" => "Leeds Building Society", + "17" => "Lloyds Bank", + "18" => "Mansfield Building Society", + "19" => "Market Harborough Building Society", + "20" => "Melton Mowbray Building Society", + "21" => "Nationwide Building Society", + "22" => "Natwest", + "23" => "Nedbank Private Wealth", + "24" => "Newbury Building Society", + "25" => "OneSavings Bank", + "26" => "Parity Trust", + "27" => "Penrith Building Society", + "28" => "Pepper Homeloans", + "29" => "Royal Bank of Scotland", + "30" => "Santander", + "31" => "Skipton Building Society", + "32" => "Teachers Building Society", + "33" => "The Co-operative Bank", + "34" => "Tipton & Coseley Building Society", + "35" => "TSB", + "36" => "Ulster Bank", + "37" => "Virgin Money", + "38" => "West Bromwich Building Society", + "39" => "Yorkshire Building Society", + "41" => "Kent Reliance", + "40" => "Other", + }) + end end end