diff --git a/app/models/form/sales/pages/shared_ownership_type.rb b/app/models/form/sales/pages/shared_ownership_type.rb new file mode 100644 index 000000000..c90074bae --- /dev/null +++ b/app/models/form/sales/pages/shared_ownership_type.rb @@ -0,0 +1,18 @@ +class Form::Sales::Pages::SharedOwnershipType < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "shared_ownership_type" + @header = "" + @description = "" + @subsection = subsection + @depends_on = [{ + "ownershipsch" => 1, + }] + end + + def questions + @questions ||= [ + Form::Sales::Questions::SharedOwnershipType.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/shared_ownership_type.rb b/app/models/form/sales/questions/shared_ownership_type.rb new file mode 100644 index 000000000..ab5e46bb3 --- /dev/null +++ b/app/models/form/sales/questions/shared_ownership_type.rb @@ -0,0 +1,22 @@ +class Form::Sales::Questions::SharedOwnershipType < ::Form::Question + def initialize(id, hsh, page) + super + @id = "type" + @check_answer_label = "Type of shared ownership sale" + @header = "What is the type of shared ownership sale?" + @hint_text = "A shared ownership sale is when the purchaser buys up to 75% of the property value and pays rent ro the Private Registered Provider (PRP) on the remaining portion" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @page = page + end + + ANSWER_OPTIONS = { + "2" => { "value" => "Shared Ownership" }, + "24" => { "value" => "Old Persons Shared Ownership" }, + "18" => { "value" => "Social HomeBuy (shared ownership purchase)" }, + "16" => { "value" => "Home Ownership for people with Long Term Disabilities (HOLD)" }, + "28" => { "value" => "Rent to Buy - Shared Ownership" }, + "31" => { "value" => "Right to Shared Ownership" }, + "30" => { "value" => "Shared Ownership - 2021 model lease" }, + }.freeze +end diff --git a/app/models/form/sales/subsections/setup.rb b/app/models/form/sales/subsections/setup.rb index 4c8601e8d..d72e44aa0 100644 --- a/app/models/form/sales/subsections/setup.rb +++ b/app/models/form/sales/subsections/setup.rb @@ -12,6 +12,7 @@ class Form::Sales::Subsections::Setup < ::Form::Subsection Form::Common::Pages::CreatedBy.new(nil, nil, self), Form::Sales::Pages::SaleDate.new(nil, nil, self), Form::Sales::Pages::PurchaserCode.new(nil, nil, self), + Form::Sales::Pages::SharedOwnershipType.new(nil, nil, self), ] end end diff --git a/spec/models/form/sales/pages/shared_ownership_type_spec.rb b/spec/models/form/sales/pages/shared_ownership_type_spec.rb new file mode 100644 index 000000000..7a7f71f8e --- /dev/null +++ b/spec/models/form/sales/pages/shared_ownership_type_spec.rb @@ -0,0 +1,35 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::SharedOwnershipType, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection) } + + let(:page_id) { nil } + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + + 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[type]) + end + + it "has the correct id" do + expect(page.id).to eq("shared_ownership_type") + end + + it "has the correct header" do + expect(page.header).to eq("") + end + + it "has the correct description" do + expect(page.description).to eq("") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq([{ + "ownershipsch" => 1, + }]) + end +end diff --git a/spec/models/form/sales/questions/shared_ownership_type_spec.rb b/spec/models/form/sales/questions/shared_ownership_type_spec.rb new file mode 100644 index 000000000..5ad3890e1 --- /dev/null +++ b/spec/models/form/sales/questions/shared_ownership_type_spec.rb @@ -0,0 +1,49 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::SharedOwnershipType, 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) } + + it "has correct page" do + expect(question.page).to eq(page) + end + + it "has the correct id" do + expect(question.id).to eq("type") + end + + it "has the correct header" do + expect(question.header).to eq("What is the type of shared ownership sale?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Type of shared ownership sale") + 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 + + it "has the correct hint_text" do + expect(question.hint_text).to eq("A shared ownership sale is when the purchaser buys up to 75% of the property value and pays rent ro the Private Registered Provider (PRP) on the remaining portion") + end + + it "has the correct answer_options" do + expect(question.answer_options).to eq({ + "2" => { "value" => "Shared Ownership" }, + "24" => { "value" => "Old Persons Shared Ownership" }, + "18" => { "value" => "Social HomeBuy (shared ownership purchase)" }, + "16" => { "value" => "Home Ownership for people with Long Term Disabilities (HOLD)" }, + "28" => { "value" => "Rent to Buy - Shared Ownership" }, + "31" => { "value" => "Right to Shared Ownership" }, + "30" => { "value" => "Shared Ownership - 2021 model lease" }, + }) + end +end diff --git a/spec/models/form/sales/subsections/setup_spec.rb b/spec/models/form/sales/subsections/setup_spec.rb index 4e00a7631..ca2c09e76 100644 --- a/spec/models/form/sales/subsections/setup_spec.rb +++ b/spec/models/form/sales/subsections/setup_spec.rb @@ -13,7 +13,7 @@ RSpec.describe Form::Sales::Subsections::Setup, type: :model do it "has correct pages" do expect(setup.pages.map(&:id)).to eq( - %w[organisation created_by completion_date purchaser_code], + %w[organisation created_by purchaser_code sale_date], ) end