Browse Source

CLDC-3721: Sales - Move Q78 (Is this a staircasing transaction?) to setup section (25/26) (#2751)

pull/2716/head^2
Manny Dinssa 2 months ago committed by GitHub
parent
commit
154f4d9538
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 3
      app/models/form/sales/pages/staircase.rb
  2. 22
      app/models/form/sales/questions/staircase.rb
  3. 1
      app/models/form/sales/subsections/setup.rb
  4. 2
      app/models/form/sales/subsections/shared_ownership_scheme.rb
  5. 5
      config/locales/forms/2025/sales/sale_information.en.yml
  6. 6
      config/locales/forms/2025/sales/setup.en.yml
  7. 40
      spec/models/form/sales/pages/staircase_spec.rb
  8. 64
      spec/models/form/sales/questions/staircase_spec.rb
  9. 1
      spec/models/form/sales/subsections/setup_spec.rb
  10. 2
      spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb

3
app/models/form/sales/pages/staircase.rb

@ -2,7 +2,8 @@ class Form::Sales::Pages::Staircase < ::Form::Page
def initialize(id, hsh, subsection) def initialize(id, hsh, subsection)
super super
@id = "staircasing" @id = "staircasing"
@copy_key = "sales.sale_information.staircasing" @depends_on = [{ "ownershipsch" => 1 }]
@copy_key = "sales.#{subsection.id}.staircasing"
end end
def questions def questions

22
app/models/form/sales/questions/staircase.rb

@ -2,17 +2,25 @@ class Form::Sales::Questions::Staircase < ::Form::Question
def initialize(id, hsh, page) def initialize(id, hsh, page)
super super
@id = "staircase" @id = "staircase"
@copy_key = "sales.sale_information.staircasing" @copy_key = "sales.#{page.subsection.id}.staircasing"
@type = "radio" @type = "radio"
@answer_options = ANSWER_OPTIONS
@question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max] @question_number = QUESTION_NUMBER_FROM_YEAR[form.start_date.year] || QUESTION_NUMBER_FROM_YEAR[QUESTION_NUMBER_FROM_YEAR.keys.max]
end end
ANSWER_OPTIONS = { def answer_options
"1" => { "value" => "Yes" }, if form.start_year_2025_or_later?
"2" => { "value" => "No" }, {
"3" => { "value" => "Don’t know" }, "1" => { "value" => "Yes" },
}.freeze "2" => { "value" => "No" },
}.freeze
else
{
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
"3" => { "value" => "Don’t know" },
}.freeze
end
end
QUESTION_NUMBER_FROM_YEAR = { 2023 => 76, 2024 => 78 }.freeze QUESTION_NUMBER_FROM_YEAR = { 2023 => 76, 2024 => 78 }.freeze
end end

1
app/models/form/sales/subsections/setup.rb

@ -13,6 +13,7 @@ class Form::Sales::Subsections::Setup < ::Form::Subsection
Form::Sales::Pages::CreatedBy.new(nil, nil, self), Form::Sales::Pages::CreatedBy.new(nil, nil, self),
Form::Sales::Pages::PurchaserCode.new(nil, nil, self), Form::Sales::Pages::PurchaserCode.new(nil, nil, self),
Form::Sales::Pages::OwnershipScheme.new(nil, nil, self), Form::Sales::Pages::OwnershipScheme.new(nil, nil, self),
(Form::Sales::Pages::Staircase.new(nil, nil, self) if form.start_year_2025_or_later?),
Form::Sales::Pages::SharedOwnershipType.new(nil, nil, self), Form::Sales::Pages::SharedOwnershipType.new(nil, nil, self),
Form::Sales::Pages::DiscountedOwnershipType.new(nil, nil, self), Form::Sales::Pages::DiscountedOwnershipType.new(nil, nil, self),
(Form::Sales::Pages::OutrightOwnershipType.new(nil, nil, self) unless form.start_year_2025_or_later?), (Form::Sales::Pages::OutrightOwnershipType.new(nil, nil, self) unless form.start_year_2025_or_later?),

2
app/models/form/sales/subsections/shared_ownership_scheme.rb

@ -10,7 +10,7 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection
@pages ||= [ @pages ||= [
Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_shared_ownership_joint_purchase", nil, self, ownershipsch: 1, joint_purchase: true), Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_shared_ownership_joint_purchase", nil, self, ownershipsch: 1, joint_purchase: true),
Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_shared_ownership", nil, self, ownershipsch: 1, joint_purchase: false), Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_shared_ownership", nil, self, ownershipsch: 1, joint_purchase: false),
Form::Sales::Pages::Staircase.new(nil, nil, self), (Form::Sales::Pages::Staircase.new(nil, nil, self) unless form.start_year_2025_or_later?),
Form::Sales::Pages::AboutStaircase.new("about_staircasing_joint_purchase", nil, self, joint_purchase: true), Form::Sales::Pages::AboutStaircase.new("about_staircasing_joint_purchase", nil, self, joint_purchase: true),
Form::Sales::Pages::AboutStaircase.new("about_staircasing_not_joint_purchase", nil, self, joint_purchase: false), Form::Sales::Pages::AboutStaircase.new("about_staircasing_not_joint_purchase", nil, self, joint_purchase: false),
Form::Sales::Pages::StaircaseBoughtValueCheck.new(nil, nil, self), Form::Sales::Pages::StaircaseBoughtValueCheck.new(nil, nil, self),

5
config/locales/forms/2025/sales/sale_information.en.yml

@ -25,11 +25,6 @@ en:
hint_text: "" hint_text: ""
question_text: "Did the buyer live in the property before purchasing it?" question_text: "Did the buyer live in the property before purchasing it?"
staircasing:
page_header: ""
check_answer_label: "Staircasing transaction"
hint_text: "A staircasing transaction is when the household purchases more shares in their property, increasing the proportion they own and decreasing the proportion the housing association owns. Once the household purchases 100% of the shares, they own the property"
question_text: "Is this a staircasing transaction?"
about_staircasing: about_staircasing:
page_header: "About the staircasing transaction" page_header: "About the staircasing transaction"
stairbought: stairbought:

6
config/locales/forms/2025/sales/setup.en.yml

@ -39,6 +39,12 @@ en:
hint_text: "" hint_text: ""
question_text: "Was this purchase made through an ownership scheme?" question_text: "Was this purchase made through an ownership scheme?"
staircasing:
page_header: ""
check_answer_label: "Staircasing transaction"
hint_text: "A staircasing transaction is when the household purchases more shares in their property, increasing the proportion they own and decreasing the proportion the housing association owns. Once the household purchases 100% of the shares, they own the property"
question_text: "Is this a staircasing transaction?"
type: type:
shared_ownership: shared_ownership:
page_header: "Type of shared ownership sale" page_header: "Type of shared ownership sale"

40
spec/models/form/sales/pages/staircase_spec.rb

@ -7,19 +7,39 @@ RSpec.describe Form::Sales::Pages::Staircase, type: :model do
let(:page_definition) { nil } let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1))) } let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1))) }
it "has correct subsection" do context "when start year is 2024" do
expect(page.subsection).to eq(subsection) let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)), id: "sale_information") }
end
it "has correct questions" do before do
expect(page.questions.map(&:id)).to eq(%w[staircase]) allow(subsection.form).to receive(:start_year_2025_or_later?).and_return(false)
end end
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
end
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[staircase])
end
it "has the correct id" do it "has the correct id" do
expect(page.id).to eq("staircasing") expect(page.id).to eq("staircasing")
end
it "has the correct description" do
expect(page.description).to be_nil
end
end end
it "has the correct description" do context "when start year is >= 2025" do
expect(page.description).to be_nil let(:subsection) { instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)), id: "setup") }
before do
allow(subsection.form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
end
end end
end end

64
spec/models/form/sales/questions/staircase_spec.rb

@ -5,33 +5,55 @@ RSpec.describe Form::Sales::Questions::Staircase, type: :model do
let(:question_id) { nil } let(:question_id) { nil }
let(:question_definition) { nil } let(:question_definition) { nil }
let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2023, 4, 1)))) }
it "has correct page" do context "when start year is 2024" do
expect(question.page).to eq(page) let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2024, 4, 1)), id: "sale_information")) }
end
it "has the correct id" do before do
expect(question.id).to eq("staircase") allow(page.subsection.form).to receive(:start_year_2025_or_later?).and_return(false)
end end
it "has the correct type" do it "has correct page" do
expect(question.type).to eq("radio") expect(question.page).to eq(page)
end end
it "is not marked as derived" do it "has the correct id" do
expect(question.derived?(nil)).to be false expect(question.id).to eq("staircase")
end end
it "has the correct type" do
expect(question.type).to eq("radio")
end
it "has the correct answer_options" do it "is not marked as derived" do
expect(question.answer_options).to eq({ expect(question.derived?(nil)).to be false
"1" => { "value" => "Yes" }, end
"2" => { "value" => "No" },
"3" => { "value" => "Don’t know" }, 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
it "has correct conditional for" do
expect(question.conditional_for).to eq(nil)
end
end end
it "has correct conditional for" do context "when start year is 2025" do
expect(question.conditional_for).to eq(nil) let(:page) { instance_double(Form::Page, subsection: instance_double(Form::Subsection, form: instance_double(Form, start_date: Time.zone.local(2025, 4, 1)), id: "setup")) }
before do
allow(page.subsection.form).to receive(:start_year_2025_or_later?).and_return(true)
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "Yes" },
"2" => { "value" => "No" },
})
end
end end
end end

1
spec/models/form/sales/subsections/setup_spec.rb

@ -93,6 +93,7 @@ RSpec.describe Form::Sales::Subsections::Setup, type: :model do
assigned_to assigned_to
purchaser_code purchaser_code
ownership_scheme ownership_scheme
staircasing
shared_ownership_type shared_ownership_type
discounted_ownership_type discounted_ownership_type
buyer_company buyer_company

2
spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb

@ -8,7 +8,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do
let(:section) { instance_double(Form::Sales::Sections::SaleInformation) } let(:section) { instance_double(Form::Sales::Sections::SaleInformation) }
before do before do
allow(section).to receive(:form).and_return(instance_double(Form, start_year_2024_or_later?: false, start_date: Time.zone.local(2023, 4, 1))) allow(section).to receive(:form).and_return(instance_double(Form, start_year_2024_or_later?: false, start_year_2025_or_later?: false, start_date: Time.zone.local(2023, 4, 1)))
end end
it "has correct section" do it "has correct section" do

Loading…
Cancel
Save