Browse Source

Cldc 1544 mortgage amount (#1136)

* feat: add sales log seeds

* feat: add question and page and update db

* tests: add and update tests
pull/1143/head
natdeanlewissoftwire 3 years ago committed by GitHub
parent
commit
869e934a69
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 14
      app/models/form/sales/pages/mortgage_amount.rb
  2. 14
      app/models/form/sales/questions/mortgage_amount.rb
  3. 1
      app/models/form/sales/subsections/discounted_ownership_scheme.rb
  4. 1
      app/models/form/sales/subsections/outright_sale.rb
  5. 1
      app/models/form/sales/subsections/shared_ownership_scheme.rb
  6. 13
      db/migrate/20230104093057_change_mortgage_to_float.rb
  7. 4
      db/schema.rb
  8. 32
      db/seeds.rb
  9. 33
      spec/models/form/sales/pages/mortgage_amount_spec.rb
  10. 49
      spec/models/form/sales/questions/mortgage_amount_spec.rb
  11. 11
      spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb
  12. 5
      spec/models/form/sales/subsections/outright_sale_spec.rb
  13. 1
      spec/models/form/sales/subsections/shared_ownership_scheme_spec.rb
  14. 4
      spec/models/form_handler_spec.rb

14
app/models/form/sales/pages/mortgage_amount.rb

@ -0,0 +1,14 @@
class Form::Sales::Pages::MortgageAmount < ::Form::Page
def initialize(id, hsh, subsection)
super
@header = "Mortgage Amount"
@description = ""
@subsection = subsection
end
def questions
@questions ||= [
Form::Sales::Questions::MortgageAmount.new(nil, nil, self),
]
end
end

14
app/models/form/sales/questions/mortgage_amount.rb

@ -0,0 +1,14 @@
class Form::Sales::Questions::MortgageAmount < ::Form::Question
def initialize(id, hsh, page)
super
@id = "mortgage"
@check_answer_label = "Mortgage amount"
@header = "What is the mortgage amount?"
@type = "numeric"
@page = page
@min = 0
@width = 5
@prefix = "£"
@hint_text = ""
end
end

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

@ -12,6 +12,7 @@ class Form::Sales::Subsections::DiscountedOwnershipScheme < ::Form::Subsection
Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_discounted_ownership", nil, self), Form::Sales::Pages::LivingBeforePurchase.new("living_before_purchase_discounted_ownership", nil, self),
Form::Sales::Pages::AboutPriceRtb.new(nil, nil, self), Form::Sales::Pages::AboutPriceRtb.new(nil, nil, self),
Form::Sales::Pages::AboutPriceNotRtb.new(nil, nil, self), Form::Sales::Pages::AboutPriceNotRtb.new(nil, nil, self),
Form::Sales::Pages::MortgageAmount.new("mortgage_amount_discounted_ownership", nil, self),
Form::Sales::Pages::AboutDeposit.new("about_deposit_discounted_ownership", nil, self), Form::Sales::Pages::AboutDeposit.new("about_deposit_discounted_ownership", nil, self),
] ]
end end

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

@ -9,6 +9,7 @@ class Form::Sales::Subsections::OutrightSale < ::Form::Subsection
def pages def pages
@pages ||= [ @pages ||= [
Form::Sales::Pages::MortgageAmount.new("mortgage_amount_outright_sale", nil, self),
Form::Sales::Pages::AboutDeposit.new("about_deposit_outright_sale", nil, self), Form::Sales::Pages::AboutDeposit.new("about_deposit_outright_sale", nil, self),
] ]
end end

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

@ -18,6 +18,7 @@ class Form::Sales::Subsections::SharedOwnershipScheme < ::Form::Subsection
Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self), Form::Sales::Pages::PreviousBedrooms.new(nil, nil, self),
Form::Sales::Pages::AboutPrice.new(nil, nil, self), Form::Sales::Pages::AboutPrice.new(nil, nil, self),
Form::Sales::Pages::AboutPriceSocialHousing.new(nil, nil, self), Form::Sales::Pages::AboutPriceSocialHousing.new(nil, nil, self),
Form::Sales::Pages::MortgageAmount.new("mortgage_amount_shared_ownership", nil, self),
Form::Sales::Pages::AboutDeposit.new("about_deposit_shared_ownership", nil, self), Form::Sales::Pages::AboutDeposit.new("about_deposit_shared_ownership", nil, self),
Form::Sales::Pages::MonthlyRent.new(nil, nil, self), Form::Sales::Pages::MonthlyRent.new(nil, nil, self),
Form::Sales::Pages::ExchangeDate.new(nil, nil, self), Form::Sales::Pages::ExchangeDate.new(nil, nil, self),

13
db/migrate/20230104093057_change_mortgage_to_float.rb

@ -0,0 +1,13 @@
class ChangeMortgageToFloat < ActiveRecord::Migration[7.0]
def self.up
change_table :sales_logs do |t|
t.change :mortgage, :decimal, precision: 10, scale: 2
end
end
def self.down
change_table :sales_logs do |t|
t.change :mortgage, :integer
end
end
end

4
db/schema.rb

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_01_03_094948) do ActiveRecord::Schema[7.0].define(version: 2023_01_04_093057) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -408,7 +408,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_03_094948) do
t.bigint "updated_by_id" t.bigint "updated_by_id"
t.integer "details_known_1" t.integer "details_known_1"
t.integer "income1_value_check" t.integer "income1_value_check"
t.integer "mortgage" t.decimal "mortgage", precision: 10, scale: 2
t.integer "inc2mort" t.integer "inc2mort"
t.integer "mortgage_value_check" t.integer "mortgage_value_check"
t.integer "ecstat3" t.integer "ecstat3"

32
db/seeds.rb

@ -146,6 +146,36 @@ unless Rails.env.test?
child_organisation: managing_agent2, child_organisation: managing_agent2,
) )
if (Rails.env.development? || Rails.env.review?) && SalesLog.count.zero?
SalesLog.find_or_create_by!(
saledate: Date.new(1, 1, 1),
purchid: "1",
ownershipsch: 1,
type: 2,
jointpur: 1,
jointmore: 1,
)
SalesLog.find_or_create_by!(
saledate: Date.new(1, 1, 1),
purchid: "1",
ownershipsch: 2,
type: 8,
jointpur: 1,
jointmore: 1,
)
SalesLog.find_or_create_by!(
saledate: Date.new(1, 1, 1),
purchid: "1",
ownershipsch: 3,
type: 10,
companybuy: 1,
)
pp "Seeded a sales log of each type"
end
if Rails.env.development? || Rails.env.review? if Rails.env.development? || Rails.env.review?
User.find_or_create_by!( User.find_or_create_by!(
name: "Provider", name: "Provider",
@ -273,9 +303,9 @@ unless Rails.env.test?
units: 1, units: 1,
mobility_type: "W", mobility_type: "W",
) )
pp "Seeded 3 dummy schemes"
end end
pp "Seeded 3 dummy schemes"
if LaRentRange.count.zero? if LaRentRange.count.zero?
Dir.glob("config/rent_range_data/*.csv").each do |path| Dir.glob("config/rent_range_data/*.csv").each do |path|
start_year = File.basename(path, ".csv") start_year = File.basename(path, ".csv")

33
spec/models/form/sales/pages/mortgage_amount_spec.rb

@ -0,0 +1,33 @@
require "rails_helper"
RSpec.describe Form::Sales::Pages::MortgageAmount, 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[mortgage])
end
it "has the correct id" do
expect(page.id).to eq(nil)
end
it "has the correct header" do
expect(page.header).to eq("Mortgage Amount")
end
it "has the correct description" do
expect(page.description).to eq("")
end
it "has correct depends_on" do
expect(page.depends_on).to be_nil
end
end

49
spec/models/form/sales/questions/mortgage_amount_spec.rb

@ -0,0 +1,49 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::MortgageAmount, 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("mortgage")
end
it "has the correct header" do
expect(question.header).to eq("What is the mortgage amount?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Mortgage amount")
end
it "has the correct type" do
expect(question.type).to eq("numeric")
end
it "is not marked as derived" do
expect(question.derived?).to be false
end
it "has the correct hint" do
expect(question.hint_text).to eq("")
end
it "has correct width" do
expect(question.width).to eq(5)
end
it "has correct prefix" do
expect(question.prefix).to eq("£")
end
it "has correct min" do
expect(question.min).to eq(0)
end
end

11
spec/models/form/sales/subsections/discounted_ownership_scheme_spec.rb

@ -13,10 +13,13 @@ RSpec.describe Form::Sales::Subsections::DiscountedOwnershipScheme, type: :model
it "has correct pages" do it "has correct pages" do
expect(discounted_ownership_scheme.pages.map(&:id)).to eq( expect(discounted_ownership_scheme.pages.map(&:id)).to eq(
%w[living_before_purchase_discounted_ownership %w[
about_price_rtb living_before_purchase_discounted_ownership
about_price_not_rtb about_price_rtb
about_deposit_discounted_ownership], about_price_not_rtb
mortgage_amount_discounted_ownership
about_deposit_discounted_ownership
],
) )
end end

5
spec/models/form/sales/subsections/outright_sale_spec.rb

@ -13,7 +13,10 @@ RSpec.describe Form::Sales::Subsections::OutrightSale, type: :model do
it "has correct pages" do it "has correct pages" do
expect(outright_sale.pages.map(&:id)).to eq( expect(outright_sale.pages.map(&:id)).to eq(
%w[about_deposit_outright_sale], %w[
mortgage_amount_outright_sale
about_deposit_outright_sale
],
) )
end end

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

@ -23,6 +23,7 @@ RSpec.describe Form::Sales::Subsections::SharedOwnershipScheme, type: :model do
previous_bedrooms previous_bedrooms
about_price about_price
about_price_social_housing about_price_social_housing
mortgage_amount_shared_ownership
about_deposit_shared_ownership about_deposit_shared_ownership
monthly_rent monthly_rent
exchange_contracts exchange_contracts

4
spec/models/form_handler_spec.rb

@ -52,14 +52,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(86) expect(form.pages.count).to eq(89)
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(86) expect(form.pages.count).to eq(89)
expect(form.name).to eq("2021_2022_sales") expect(form.name).to eq("2021_2022_sales")
end end
end end

Loading…
Cancel
Save