Browse Source

Add discounted ownership type (#882)

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

* Remove wrong hint text

* Add type to completes sales log mock
pull/889/head
kosiakkatrina 2 years ago committed by GitHub
parent
commit
022bd97e36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      app/models/form/sales/pages/discounted_ownership_type.rb
  2. 21
      app/models/form/sales/questions/discounted_ownership_type.rb
  3. 1
      app/models/form/sales/subsections/setup.rb
  4. 1
      spec/factories/sales_log.rb
  5. 35
      spec/models/form/sales/pages/discounted_ownership_type_spec.rb
  6. 45
      spec/models/form/sales/questions/discounted_ownership_type_spec.rb
  7. 2
      spec/models/form/sales/subsections/setup_spec.rb
  8. 4
      spec/models/form_handler_spec.rb
  9. 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

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

@ -0,0 +1,21 @@
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?"
@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::PurchaserCode.new(nil, nil, self),
Form::Sales::Pages::OwnershipScheme.new(nil, nil, self), Form::Sales::Pages::OwnershipScheme.new(nil, nil, self),
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::JointPurchase.new(nil, nil, self), Form::Sales::Pages::JointPurchase.new(nil, nil, self),
] ]
end end

1
spec/factories/sales_log.rb

@ -8,6 +8,7 @@ FactoryBot.define do
trait :completed do trait :completed do
purchid { "PC123" } purchid { "PC123" }
ownershipsch { 2 } ownershipsch { 2 }
type { 8 }
saledate { Time.utc(2022, 2, 2, 10, 36, 49) } saledate { Time.utc(2022, 2, 2, 10, 36, 49) }
jointpur { 1 } jointpur { 1 }
end 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 it "has correct pages" do
expect(setup.pages.map(&:id)).to eq( 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 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 it "is able to load a current sales form" do
form = form_handler.get_form("current_sales") form = form_handler.get_form("current_sales")
expect(form).to be_a(Form) 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") expect(form.name).to eq("2022_2023_sales")
end end
it "is able to load a previous sales form" do it "is able to load a previous sales form" do
form = form_handler.get_form("previous_sales") form = form_handler.get_form("previous_sales")
expect(form).to be_a(Form) 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") expect(form.name).to eq("2021_2022_sales")
end end
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.sections[0].class).to eq(Form::Sales::Sections::Setup)
expect(form.subsections.count).to eq(1) expect(form.subsections.count).to eq(1)
expect(form.subsections.first.id).to eq("setup") 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.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.questions.first.id).to eq("owning_organisation_id")
expect(form.start_date).to eq(Time.zone.parse("2022-04-01")) expect(form.start_date).to eq(Time.zone.parse("2022-04-01"))
expect(form.end_date).to eq(Time.zone.parse("2023-07-01")) expect(form.end_date).to eq(Time.zone.parse("2023-07-01"))

Loading…
Cancel
Save