Browse Source

Cldc 1497 ever served armed forces (#1124)

* feat: add question and page

* test: update tests

* refactor: linting and slight test updates

* test: fix tests
pull/1132/head
natdeanlewissoftwire 3 years ago committed by Kat
parent
commit
c27b2c8456
  1. 15
      app/models/form/sales/pages/armed_forces.rb
  2. 19
      app/models/form/sales/questions/armed_forces.rb
  3. 1
      app/models/form/sales/subsections/household_needs.rb
  4. 7
      db/migrate/20221223134818_add_armed_forces_to_sales_log.rb
  5. 1
      db/schema.rb
  6. 1
      spec/factories/sales_log.rb
  7. 29
      spec/models/form/sales/pages/armed_forces_spec.rb
  8. 46
      spec/models/form/sales/questions/armed_forces_spec.rb
  9. 2
      spec/models/form/sales/subsections/household_needs_spec.rb

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

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

19
app/models/form/sales/questions/armed_forces.rb

@ -0,0 +1,19 @@
class Form::Sales::Questions::ArmedForces < ::Form::Question
def initialize(id, hsh, page)
super
@id = "hhregres"
@check_answer_label = "Have any of the buyers ever served as a regular in the UK armed forces?"
@header = "Have any of the buyers ever served as a regular in the UK armed forces?"
@type = "radio"
@hint_text = "A regular is somebody who has served in the Royal Navy, the Royal Marines, the Royal Airforce or Army full time and does not include reserve forces"
@answer_options = ANSWER_OPTIONS
@page = page
end
ANSWER_OPTIONS = {
"1" => { "value" => "Yes" },
"7" => { "value" => "No" },
"3" => { "value" => "Buyer prefers not to say" },
"8" => { "value" => "Don't know" },
}.freeze
end

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

@ -9,6 +9,7 @@ class Form::Sales::Subsections::HouseholdNeeds < ::Form::Subsection
def pages
@pages ||= [
Form::Sales::Pages::ArmedForces.new(nil, nil, self),
Form::Sales::Pages::HouseholdWheelchair.new(nil, nil, self),
Form::Sales::Pages::HouseholdDisability.new(nil, nil, self),
Form::Sales::Pages::HouseholdWheelchairCheck.new("wheelchair_check", nil, self),

7
db/migrate/20221223134818_add_armed_forces_to_sales_log.rb

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

1
db/schema.rb

@ -427,6 +427,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_01_04_093057) do
t.integer "resale"
t.decimal "deposit", precision: 10, scale: 2
t.decimal "cashdis", precision: 10, scale: 2
t.integer "hhregres"
t.integer "pregyrha"
t.integer "pregla"
t.integer "pregghb"

1
spec/factories/sales_log.rb

@ -78,6 +78,7 @@ FactoryBot.define do
pregother { 1 }
pregghb { 1 }
disabled { 1 }
hhregres { 1 }
end
end
end

29
spec/models/form/sales/pages/armed_forces_spec.rb

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

46
spec/models/form/sales/questions/armed_forces_spec.rb

@ -0,0 +1,46 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::ArmedForces, 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("hhregres")
end
it "has the correct header" do
expect(question.header).to eq("Have any of the buyers ever served as a regular in the UK armed forces?")
end
it "has the correct check_answer_label" do
expect(question.check_answer_label).to eq("Have any of the buyers ever served as a regular in the UK armed forces?")
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 hint" do
expect(question.hint_text).to eq("A regular is somebody who has served in the Royal Navy, the Royal Marines, the Royal Airforce or Army full time and does not include reserve forces")
end
it "has the correct answer_options" do
expect(question.answer_options).to eq({
"1" => { "value" => "Yes" },
"7" => { "value" => "No" },
"3" => { "value" => "Buyer prefers not to say" },
"8" => { "value" => "Don't know" },
})
end
end

2
spec/models/form/sales/subsections/household_needs_spec.rb

@ -14,8 +14,10 @@ RSpec.describe Form::Sales::Subsections::HouseholdNeeds, type: :model do
it "has correct pages" do
expect(household_characteristics.pages.map(&:id)).to eq(
%w[
armed_forces
household_wheelchair
household_disability
wheelchair_check
],
)
end

Loading…
Cancel
Save