Browse Source

CLDC 1465 Add beds question to saleslog (#890)

* Add beds question to saleslog

* move beds question to property section

* fix property filepath references

* fix failing tests

* add tests to form spec

* fix migration
pull/900/head
Ted-U 2 years ago committed by GitHub
parent
commit
4a648a144b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      app/models/form/sales/property/pages/property_number_of_bedrooms.rb
  2. 12
      app/models/form/sales/property/questions/property_number_of_bedrooms.rb
  3. 10
      app/models/form/sales/property/sections/property_information.rb
  4. 15
      app/models/form/sales/property/subsections/property_information.rb
  5. 2
      app/models/form_handler.rb
  6. 5
      db/migrate/20220921125813_add_property_number_of_bedrooms_to_sales_log.rb
  7. 3
      db/schema.rb
  8. 1
      spec/factories/sales_log.rb
  9. 29
      spec/models/form/sales/property/pages/property_number_of_bedrooms_spec.rb
  10. 37
      spec/models/form/sales/property/questions/property_number_of_bedrooms_spec.rb
  11. 4
      spec/models/form_handler_spec.rb
  12. 9
      spec/models/form_spec.rb

15
app/models/form/sales/property/pages/property_number_of_bedrooms.rb

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

12
app/models/form/sales/property/questions/property_number_of_bedrooms.rb

@ -0,0 +1,12 @@
class Form::Sales::Property::Questions::PropertyNumberOfBedrooms < ::Form::Question
def initialize(id, hsh, page)
super
@id = "beds"
@check_answer_label = "Number of bedrooms"
@header = "How many bedrooms does the property have?"
@hint_text = "A bedsit has 1 bedroom"
@type = "text"
@width = 10
@page = page
end
end

10
app/models/form/sales/property/sections/property_information.rb

@ -0,0 +1,10 @@
class Form::Sales::Property::Sections::PropertyInformation < ::Form::Section
def initialize(id, hsh, form)
super
@id = "property_information"
@label = "Property information"
@description = ""
@form = form
@subsections = [Form::Sales::Property::Subsections::PropertyInformation.new(nil, nil, self)] || []
end
end

15
app/models/form/sales/property/subsections/property_information.rb

@ -0,0 +1,15 @@
class Form::Sales::Property::Subsections::PropertyInformation < ::Form::Subsection
def initialize(id, hsh, section)
super
@id = "property_information"
@label = "Property information"
@section = section
@depends_on = [{ "setup" => "completed" }]
end
def pages
@pages ||= [
Form::Sales::Property::Pages::PropertyNumberOfBedrooms.new(nil, nil, self),
]
end
end

2
app/models/form_handler.rb

@ -19,7 +19,7 @@ class FormHandler
end end
def sales_forms def sales_forms
sales_sections = [] # Add section classes here e.g. Form::Sales::Property::Sections::PropertyInformation sales_sections = [Form::Sales::Property::Sections::PropertyInformation] # Add section classes here e.g. Form::Sales::Property::Sections::PropertyInformation
current_form = Form.new(nil, current_collection_start_year, sales_sections, "sales") current_form = Form.new(nil, current_collection_start_year, sales_sections, "sales")
previous_form = Form.new(nil, current_collection_start_year - 1, sales_sections, "sales") previous_form = Form.new(nil, current_collection_start_year - 1, sales_sections, "sales")
{ "current_sales" => current_form, { "current_sales" => current_form,

5
db/migrate/20220921125813_add_property_number_of_bedrooms_to_sales_log.rb

@ -0,0 +1,5 @@
class AddPropertyNumberOfBedroomsToSalesLog < ActiveRecord::Migration[7.0]
def change
add_column :sales_logs, :beds, :integer
end
end

3
db/schema.rb

@ -332,8 +332,9 @@ ActiveRecord::Schema[7.0].define(version: 2022_09_23_093628) do
t.string "purchid" t.string "purchid"
t.integer "type" t.integer "type"
t.integer "ownershipsch" t.integer "ownershipsch"
t.string "othtype"
t.integer "jointpur" t.integer "jointpur"
t.string "othtype"
t.integer "beds"
t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id" t.index ["created_by_id"], name: "index_sales_logs_on_created_by_id"
t.index ["managing_organisation_id"], name: "index_sales_logs_on_managing_organisation_id" t.index ["managing_organisation_id"], name: "index_sales_logs_on_managing_organisation_id"
t.index ["owning_organisation_id"], name: "index_sales_logs_on_owning_organisation_id" t.index ["owning_organisation_id"], name: "index_sales_logs_on_owning_organisation_id"

1
spec/factories/sales_log.rb

@ -11,6 +11,7 @@ FactoryBot.define do
type { 8 } type { 8 }
saledate { Time.utc(2022, 2, 2, 10, 36, 49) } saledate { Time.utc(2022, 2, 2, 10, 36, 49) }
jointpur { 1 } jointpur { 1 }
beds { 2 }
end end
end end
end end

29
spec/models/form/sales/property/pages/property_number_of_bedrooms_spec.rb

@ -0,0 +1,29 @@
require "rails_helper"
RSpec.describe Form::Sales::Property::Pages::PropertyNumberOfBedrooms, 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[beds])
end
it "has the correct id" do
expect(page.id).to eq("property_number_of_bedrooms")
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
end

37
spec/models/form/sales/property/questions/property_number_of_bedrooms_spec.rb

@ -0,0 +1,37 @@
require "rails_helper"
RSpec.describe Form::Sales::Property::Questions::PropertyNumberOfBedrooms, 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("beds")
end
it "has the correct header" do
expect(question.header).to eq("How many bedrooms does the property have?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Number of bedrooms")
end
it "has the correct type" do
expect(question.type).to eq("text")
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 bedsit has 1 bedroom")
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(9) expect(form.pages.count).to eq(10)
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(9) expect(form.pages.count).to eq(10)
expect(form.name).to eq("2021_2022_sales") expect(form.name).to eq("2021_2022_sales")
end end
end end

9
spec/models/form_spec.rb

@ -225,5 +225,14 @@ RSpec.describe Form, type: :model do
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"))
end end
it "can correctly define sections in the sales form" do
sections = [Form::Sales::Property::Sections::PropertyInformation]
form = described_class.new(nil, 2022, sections, "sales")
expect(form.type).to eq("sales")
expect(form.name).to eq("2022_2023_sales")
expect(form.sections.count).to eq(2)
expect(form.sections[1].class).to eq(Form::Sales::Property::Sections::PropertyInformation)
end
end end
end end

Loading…
Cancel
Save