Browse Source

Update displayed answer options

pull/2788/head
Manny Dinssa 7 months ago
parent
commit
82f23d74fa
  1. 2
      app/models/form/sales/questions/mortgageused.rb
  2. 100
      spec/models/form/sales/questions/mortgageused_spec.rb

2
app/models/form/sales/questions/mortgageused.rb

@ -13,7 +13,7 @@ class Form::Sales::Questions::Mortgageused < ::Form::Question
def displayed_answer_options(log, _user = nil)
if log.outright_sale? && log.saledate && !form.start_year_2024_or_later?
answer_options_without_dont_know
elsif log.stairowned == 100 || log.outright_sale? || form.start_year_2025_or_later?
elsif log.stairowned_100? || log.outright_sale? || (log.is_staircase? && form.start_year_2025_or_later?)
ANSWER_OPTIONS
else
answer_options_without_dont_know

100
spec/models/form/sales/questions/mortgageused_spec.rb

@ -3,28 +3,39 @@ require "rails_helper"
RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page, ownershipsch:) }
let(:ownershipsch) { 1 }
let(:question_id) { nil }
let(:question_definition) { nil }
let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) }
let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form:)) }
let(:stairowned) { nil }
let(:staircase) { nil }
let(:saledate) { Time.zone.today }
let(:log) { build(:sales_log, :in_progress, ownershipsch:, stairowned:, staircase:) }
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
"3" => { "value" => "Don’t know" },
})
end
context "when the form start year is 2024" do
let(:form) { instance_double(Form, start_date: Time.zone.local(2024, 4, 1)) }
let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form:)) }
let(:saledate) { Time.zone.local(2024, 5, 1) }
let(:ownershipsch) { 1 }
before do
allow(form).to receive(:start_year_2024_or_later?).and_return true
allow(form).to receive(:start_year_2025_or_later?).and_return false
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
"3" => { "value" => "Don’t know" },
})
end
describe "the displayed answer options" do
context "when it is a discounted ownership sale" do
let(:ownershipsch) { 2 }
it "shows the correct question number" do
expect(question.question_number).to eq 104
end
it "does not show the don't know option" do
expect_the_question_not_to_show_dont_know
end
@ -34,20 +45,14 @@ RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do
let(:ownershipsch) { 3 }
context "and the saledate is before 24/25" do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return false
end
let(:saledate) { Time.zone.local(2023, 5, 1) }\
it "does not show the don't know option" do
expect_the_question_not_to_show_dont_know
it "does show the don't know option" do
expect_the_question_to_show_dont_know
end
end
context "and the saledate is 24/25 or after" do
before do
allow(form).to receive(:start_year_2024_or_later?).and_return true
end
context "and the saledate is 24/25" do
it "shows the don't know option" do
expect_the_question_to_show_dont_know
end
@ -87,7 +92,58 @@ RSpec.describe Form::Sales::Questions::Mortgageused, type: :model do
end
end
private
context "when the form start year is 2025" do
let(:form) { instance_double(Form, start_date: Time.zone.local(2025, 4, 1)) }
let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form:)) }
let(:saledate) { Time.zone.local(2025, 5, 1) }
before do
allow(form).to receive(:start_year_2024_or_later?).and_return true
allow(form).to receive(:start_year_2025_or_later?).and_return true
end
context "when it is a discounted ownership sale" do
let(:ownershipsch) { 2 }
it "shows the correct question number" do
expect(question.question_number).to eq 104
end
it "does not show the don't know option" do
expect_the_question_not_to_show_dont_know
end
end
context "when it is a shared ownership scheme" do
let(:ownershipsch) { 1 }
context "and it is a staircasing transaction" do
let(:staircase) { 1 }
it "does show the don't know option" do
expect_the_question_to_show_dont_know
end
context "and stairowned is 100" do
let(:stairowned) { 100 }
it "shows the don't know option" do
expect_the_question_to_show_dont_know
end
end
end
context "and it is not a staircasing transaction" do
let(:staircase) { 2 }
it "does not show the don't know option" do
expect_the_question_not_to_show_dont_know
end
end
end
end
private
def expect_the_question_not_to_show_dont_know
expect(question.displayed_answer_options(log)).to eq({

Loading…
Cancel
Save