diff --git a/app/models/form/sales/pages/buyer1_previous_tenure.rb b/app/models/form/sales/pages/buyer1_previous_tenure.rb new file mode 100644 index 000000000..1379fbd30 --- /dev/null +++ b/app/models/form/sales/pages/buyer1_previous_tenure.rb @@ -0,0 +1,15 @@ +class Form::Sales::Pages::Buyer1PreviousTenure < ::Form::Page + def initialize(id, hsh, subsection) + super + @id = "buyer1_previous_tenure" + @header = "What was buyer 1's previous tenure?" + @description = "" + @subsection = subsection + end + + def questions + @questions ||= [ + Form::Sales::Questions::Buyer1PreviousTenure.new(nil, nil, self), + ] + end +end diff --git a/app/models/form/sales/questions/buyer1_previous_tenure.rb b/app/models/form/sales/questions/buyer1_previous_tenure.rb new file mode 100644 index 000000000..b2d3e01c4 --- /dev/null +++ b/app/models/form/sales/questions/buyer1_previous_tenure.rb @@ -0,0 +1,22 @@ +class Form::Sales::Questions::Buyer1PreviousTenure < ::Form::Question + def initialize(id, hsh, page) + super + @id = "prevten" + @check_answer_label = "Buyer 1's previous tenure" + @header = "What was buyer 1's previous tenure?" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @page = page + end + + ANSWER_OPTIONS = { + "1" => { "value" => "Local Authority" }, + "2" => { "value" => "Private registered provider or housing association tenant" }, + "3" => { "value" => "Private tenant" }, + "5" => { "value" => "Owner occupier" }, + "4" => { "value" => "Tied home or renting with job" }, + "6" => { "value" => "Living with family or friends" }, + "7" => { "value" => "Temporary accomodation" }, + "9" => { "value" => "Other" }, + }.freeze +end diff --git a/app/models/form/sales/subsections/household_situation.rb b/app/models/form/sales/subsections/household_situation.rb index 45a12a2a0..09317dca6 100644 --- a/app/models/form/sales/subsections/household_situation.rb +++ b/app/models/form/sales/subsections/household_situation.rb @@ -11,6 +11,7 @@ class Form::Sales::Subsections::HouseholdSituation < ::Form::Subsection @pages ||= [ Form::Sales::Pages::BuyersOrganisations.new(nil, nil, self), Form::Sales::Pages::LastAccommodation.new(nil, nil, self), + Form::Sales::Pages::Buyer1PreviousTenure.new(nil, nil, self), ] end end diff --git a/db/migrate/20230103135135_add_prevten.rb b/db/migrate/20230103135135_add_prevten.rb new file mode 100644 index 000000000..84770c4b4 --- /dev/null +++ b/db/migrate/20230103135135_add_prevten.rb @@ -0,0 +1,7 @@ +class AddPrevten < ActiveRecord::Migration[7.0] + def change + change_table :sales_logs, bulk: true do |t| + t.column :prevten, :integer + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 6eabf4ec0..9861d28cb 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -449,6 +449,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_04_093057) do t.string "ppostc2" t.string "prevloc" t.boolean "previous_la_known" + t.integer "prevten" 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 ["owning_organisation_id"], name: "index_sales_logs_on_owning_organisation_id" diff --git a/spec/factories/sales_log.rb b/spec/factories/sales_log.rb index 32dd573df..d8b5e55e4 100644 --- a/spec/factories/sales_log.rb +++ b/spec/factories/sales_log.rb @@ -80,6 +80,7 @@ FactoryBot.define do hhregres { 1 } hhregresstill { 4 } ppcodenk { 1 } + prevten { 1 } end end end diff --git a/spec/models/form/sales/pages/buyer1_previous_tenure_spec.rb b/spec/models/form/sales/pages/buyer1_previous_tenure_spec.rb new file mode 100644 index 000000000..462d72b00 --- /dev/null +++ b/spec/models/form/sales/pages/buyer1_previous_tenure_spec.rb @@ -0,0 +1,25 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::Buyer1PreviousTenure, 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[prevten]) + end + + it "has the correct id" do + expect(page.id).to eq("buyer1_previous_tenure") + end + + it "has the correct header" do + expect(page.header).to eq("What was buyer 1's previous tenure?") + end +end diff --git a/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb b/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb new file mode 100644 index 000000000..ae1da940a --- /dev/null +++ b/spec/models/form/sales/questions/buyer1_previous_tenure_spec.rb @@ -0,0 +1,46 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::Buyer1PreviousTenure, 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("prevten") + end + + it "has the correct header" do + expect(question.header).to eq("What was buyer 1's previous tenure?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Buyer 1's previous tenure") + 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({ + "1" => { "value" => "Local Authority" }, + "2" => { "value" => "Private registered provider or housing association tenant" }, + "3" => { "value" => "Private tenant" }, + "4" => { "value" => "Tied home or renting with job" }, + "5" => { "value" => "Owner occupier" }, + "6" => { "value" => "Living with family or friends" }, + "7" => { "value" => "Temporary accomodation" }, + "9" => { "value" => "Other" }, + }) + end +end diff --git a/spec/models/form/sales/subsections/household_situation_spec.rb b/spec/models/form/sales/subsections/household_situation_spec.rb index fefd60013..dea721d74 100644 --- a/spec/models/form/sales/subsections/household_situation_spec.rb +++ b/spec/models/form/sales/subsections/household_situation_spec.rb @@ -16,6 +16,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdSituation, type: :model do %w[ buyers_organisations last_accommodation + buyer1_previous_tenure ], ) end