Browse Source

CLDC-1505 Buyer 1 working situation (#932)

* CLDC-1505 Buyer 1 working situation

* Update sales log factory
pull/934/head v0.2.13
Sam 2 years ago committed by GitHub
parent
commit
c34f922d76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      app/models/form/sales/pages/buyer1_working_situation.rb
  2. 26
      app/models/form/sales/questions/buyer1_working_situation.rb
  3. 1
      app/models/form/sales/subsections/household_characteristics.rb
  4. 7
      db/migrate/20221004184301_add_ecstat1_to_sales_log.rb
  5. 9
      db/schema.rb
  6. 1
      spec/factories/sales_log.rb
  7. 25
      spec/models/form/sales/pages/buyer1_working_situation_spec.rb
  8. 49
      spec/models/form/sales/questions/buyer1_working_situation_spec.rb
  9. 1
      spec/models/form/sales/subsections/household_characteristics_spec.rb
  10. 4
      spec/models/form_handler_spec.rb

15
app/models/form/sales/pages/buyer1_working_situation.rb

@ -0,0 +1,15 @@
class Form::Sales::Pages::Buyer1WorkingSituation < ::Form::Page
def initialize(id, hsh, subsection)
super
@id = "buyer_1_working_situation"
@header = "Which of these best describes buyer 1's working situation?"
@description = ""
@subsection = subsection
end
def questions
@questions ||= [
Form::Sales::Questions::Buyer1WorkingSituation.new(nil, nil, self),
]
end
end

26
app/models/form/sales/questions/buyer1_working_situation.rb

@ -0,0 +1,26 @@
class Form::Sales::Questions::Buyer1WorkingSituation < ::Form::Question
def initialize(id, hsh, page)
super
@id = "ecstat1"
@check_answer_label = "Buyer 1's working situation"
@header = "Which of these best describes buyer 1's working situation?"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@page = page
@hint_text = "Buyer 1 is the person in the household who does the most paid work. If it's a joint purchase and the buyers do the same amount of paid work, buyer 1 is whoever is the oldest."
end
ANSWER_OPTIONS = {
"2" => { "value" => "Part-time - Less than 30 hours" },
"1" => { "value" => "Full-time - 30 hours or more" },
"3" => { "value" => "In government training into work, such as New Deal" },
"4" => { "value" => "Jobseeker" },
"6" => { "value" => "Not seeking work" },
"8" => { "value" => "Unable to work due to long term sick or disability" },
"5" => { "value" => "Retired" },
"0" => { "value" => "Other" },
"10" => { "value" => "Buyer prefers not to say" },
"7" => { "value" => "Full-time student" },
"9" => { "value" => "Child under 16" },
}.freeze
end

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

@ -20,6 +20,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Sales::Pages::Buyer1EthnicBackgroundMixed.new(nil, nil, self),
Form::Sales::Pages::Buyer1EthnicBackgroundWhite.new(nil, nil, self),
Form::Sales::Pages::Nationality1.new(nil, nil, self),
Form::Sales::Pages::Buyer1WorkingSituation.new(nil, nil, self),
Form::Sales::Pages::Buyer1LiveInProperty.new(nil, nil, self),
Form::Sales::Pages::Buyer2RelationshipToBuyer1.new(nil, nil, self),
Form::Sales::Pages::Age2.new(nil, nil, self),

7
db/migrate/20221004184301_add_ecstat1_to_sales_log.rb

@ -0,0 +1,7 @@
class AddEcstat1ToSalesLog < ActiveRecord::Migration[7.0]
def change
change_table :sales_logs, bulk: true do |t|
t.column :ecstat1, :int
end
end
end

9
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: 2022_10_04_095132) do
ActiveRecord::Schema[7.0].define(version: 2022_10_04_184301) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -333,12 +333,10 @@ ActiveRecord::Schema[7.0].define(version: 2022_10_04_095132) do
t.integer "jointmore"
t.integer "jointpur"
t.integer "beds"
t.integer "companybuy"
t.integer "age1"
t.integer "age1_known"
t.integer "companybuy"
t.string "sex1"
t.integer "national"
t.string "othernational"
t.integer "ethnic"
t.integer "ethnic_group"
t.integer "buy1livein"
@ -353,6 +351,9 @@ ActiveRecord::Schema[7.0].define(version: 2022_10_04_095132) do
t.integer "noint"
t.integer "buy2livein"
t.integer "ecstat2"
t.integer "ecstat1"
t.integer "national"
t.string "othernational"
t.integer "privacynotice"
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"

1
spec/factories/sales_log.rb

@ -35,6 +35,7 @@ FactoryBot.define do
ethnic_group { 12 }
sex2 { "X" }
buy2livein { "1" }
ecstat1 { "1" }
ecstat2 { "1" }
end
end

25
spec/models/form/sales/pages/buyer1_working_situation_spec.rb

@ -0,0 +1,25 @@
require "rails_helper"
RSpec.describe Form::Sales::Pages::Buyer1WorkingSituation, 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[ecstat1])
end
it "has the correct id" do
expect(page.id).to eq("buyer_1_working_situation")
end
it "has the correct header" do
expect(page.header).to eq("Which of these best describes buyer 1's working situation?")
end
end

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

@ -0,0 +1,49 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::Buyer1WorkingSituation, 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("ecstat1")
end
it "has the correct header" do
expect(question.header).to eq("Which of these best describes buyer 1's working situation?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Buyer 1's working situation")
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({
"2" => { "value" => "Part-time - Less than 30 hours" },
"1" => { "value" => "Full-time - 30 hours or more" },
"3" => { "value" => "In government training into work, such as New Deal" },
"4" => { "value" => "Jobseeker" },
"6" => { "value" => "Not seeking work" },
"8" => { "value" => "Unable to work due to long term sick or disability" },
"5" => { "value" => "Retired" },
"0" => { "value" => "Other" },
"10" => { "value" => "Buyer prefers not to say" },
"7" => { "value" => "Full-time student" },
"9" => { "value" => "Child under 16" },
})
end
end

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

@ -25,6 +25,7 @@ RSpec.describe Form::Sales::Subsections::HouseholdCharacteristics, type: :model
buyer_1_ethnic_background_mixed
buyer_1_ethnic_background_white
buyer_1_nationality
buyer_1_working_situation
buyer_1_live_in_property
buyer_2_relationship_to_buyer_1
buyer_2_age

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
form = form_handler.get_form("current_sales")
expect(form).to be_a(Form)
expect(form.pages.count).to eq(32)
expect(form.pages.count).to eq(33)
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(32)
expect(form.pages.count).to eq(33)
expect(form.name).to eq("2021_2022_sales")
end
end

Loading…
Cancel
Save