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::AboutPriceRtb.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),
]
end

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

@ -9,6 +9,7 @@ class Form::Sales::Subsections::OutrightSale < ::Form::Subsection
def pages
@pages ||= [
Form::Sales::Pages::MortgageAmount.new("mortgage_amount_outright_sale", nil, self),
Form::Sales::Pages::AboutDeposit.new("about_deposit_outright_sale", nil, self),
]
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::AboutPrice.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::MonthlyRent.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.
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
enable_extension "plpgsql"
@ -408,7 +408,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_03_094948) do
t.bigint "updated_by_id"
t.integer "details_known_1"
t.integer "income1_value_check"
t.integer "mortgage"
t.decimal "mortgage", precision: 10, scale: 2
t.integer "inc2mort"
t.integer "mortgage_value_check"
t.integer "ecstat3"

32
db/seeds.rb

@ -146,6 +146,36 @@ unless Rails.env.test?
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?
User.find_or_create_by!(
name: "Provider",
@ -273,9 +303,9 @@ unless Rails.env.test?
units: 1,
mobility_type: "W",
)
pp "Seeded 3 dummy schemes"
end
pp "Seeded 3 dummy schemes"
if LaRentRange.count.zero?
Dir.glob("config/rent_range_data/*.csv").each do |path|
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
expect(discounted_ownership_scheme.pages.map(&:id)).to eq(
%w[living_before_purchase_discounted_ownership
about_price_rtb
about_price_not_rtb
about_deposit_discounted_ownership],
%w[
living_before_purchase_discounted_ownership
about_price_rtb
about_price_not_rtb
mortgage_amount_discounted_ownership
about_deposit_discounted_ownership
],
)
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
expect(outright_sale.pages.map(&:id)).to eq(
%w[about_deposit_outright_sale],
%w[
mortgage_amount_outright_sale
about_deposit_outright_sale
],
)
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
about_price
about_price_social_housing
mortgage_amount_shared_ownership
about_deposit_shared_ownership
monthly_rent
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
form = form_handler.get_form("current_sales")
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")
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(86)
expect(form.pages.count).to eq(89)
expect(form.name).to eq("2021_2022_sales")
end
end

Loading…
Cancel
Save