Browse Source

Add discounted ownership type question and page to the sales setup section

pull/882/head
Kat 3 years ago
parent
commit
9a879bbe55
  1. 18
      app/models/form/sales/pages/discounted_ownership_type.rb
  2. 22
      app/models/form/sales/questions/discounted_ownership_type.rb
  3. 1
      app/models/form/sales/subsections/setup.rb
  4. 35
      spec/models/form/sales/pages/discounted_ownership_type_spec.rb
  5. 45
      spec/models/form/sales/questions/discounted_ownership_type_spec.rb
  6. 2
      spec/models/form/sales/subsections/setup_spec.rb
  7. 4
      spec/models/form_handler_spec.rb
  8. 4
      spec/models/form_spec.rb

18
app/models/form/sales/pages/discounted_ownership_type.rb

@ -0,0 +1,18 @@
class Form::Sales::Pages::DiscountedOwnershipType < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "discounted_ownership_type"
@header = ""
@description = ""
@subsection = subsection
@depends_on = [{
"ownershipsch" => 2,
}]
end
def questions
@questions ||= [
Form::Sales::Questions::DiscountedOwnershipType.new(nil, nil, self),
]
end
end

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

@ -0,0 +1,22 @@
class Form::Sales::Questions::DiscountedOwnershipType < ::Form::Question
def initialize(id, hsh, page)
super
@id = "type"
@check_answer_label = "Type of discounted ownership sale"
@header = "What is the type of discounted ownership sale?"
@hint_text = "A discounted ownership sale is when the purchaser buys up to 75% of the property value and pays rent to the Private Registered Provider (PRP) on the remaining portion"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@page = page
end
ANSWER_OPTIONS = {
"8" => { "value" => "Right to Aquire (RTA)" },
"14" => { "value" => "Preserved Right to Buy (PRTB)" },
"27" => { "value" => "Voluntary Right to Buy (VRTB)" },
"9" => { "value" => "Right to Buy (RTB)" },
"29" => { "value" => "Rent to Buy - Full Ownership" },
"21" => { "value" => "Social HomeBuy for outright purchase" },
"22" => { "value" => "Any other equity loan scheme" },
}.freeze
end

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

@ -14,6 +14,7 @@ class Form::Sales::Subsections::Setup < ::Form::Subsection
Form::Sales::Pages::PurchaserCode.new(nil, nil, self),
Form::Sales::Pages::OwnershipScheme.new(nil, nil, self),
Form::Sales::Pages::SharedOwnershipType.new(nil, nil, self),
Form::Sales::Pages::DiscountedOwnershipType.new(nil, nil, self),
Form::Sales::Pages::JointPurchase.new(nil, nil, self),
]
end

35
spec/models/form/sales/pages/discounted_ownership_type_spec.rb

@ -0,0 +1,35 @@
require "rails_helper"
RSpec.describe Form::Sales::Pages::DiscountedOwnershipType, 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("discounted_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" => 2,
}])
end
end

45
spec/models/form/sales/questions/discounted_ownership_type_spec.rb

@ -0,0 +1,45 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::DiscountedOwnershipType, 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 discounted ownership sale?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Type of discounted 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 answer_options" do
expect(question.answer_options).to eq({
"8" => { "value" => "Right to Aquire (RTA)" },
"14" => { "value" => "Preserved Right to Buy (PRTB)" },
"27" => { "value" => "Voluntary Right to Buy (VRTB)" },
"9" => { "value" => "Right to Buy (RTB)" },
"29" => { "value" => "Rent to Buy - Full Ownership" },
"21" => { "value" => "Social HomeBuy for outright purchase" },
"22" => { "value" => "Any other equity loan scheme" },
})
end
end

2
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 ownership_scheme shared_ownership_type joint_purchase],
%w[organisation created_by completion_date purchaser_code ownership_scheme shared_ownership_type discounted_ownership_type joint_purchase],
)
end

4
spec/models/form_handler_spec.rb

@ -61,14 +61,14 @@ RSpec.describe FormHandler do
it "is able to load a current sales form" do
form = form_handler.get_form("current_sales")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(7)
expect(form.pages.count).to eq(8)
expect(form.name).to eq("2022_2023_sales")
end
it "is able to load a previous sales form" do
form = form_handler.get_form("previous_sales")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(7)
expect(form.pages.count).to eq(8)
expect(form.name).to eq("2021_2022_sales")
end
end

4
spec/models/form_spec.rb

@ -218,9 +218,9 @@ RSpec.describe Form, type: :model do
expect(form.sections[0].class).to eq(Form::Sales::Sections::Setup)
expect(form.subsections.count).to eq(1)
expect(form.subsections.first.id).to eq("setup")
expect(form.pages.count).to eq(7)
expect(form.pages.count).to eq(8)
expect(form.pages.first.id).to eq("organisation")
expect(form.questions.count).to eq(7)
expect(form.questions.count).to eq(8)
expect(form.questions.first.id).to eq("owning_organisation_id")
expect(form.start_date).to eq(Time.zone.parse("2022-04-01"))
expect(form.end_date).to eq(Time.zone.parse("2023-07-01"))

Loading…
Cancel
Save