Browse Source

Refactor age to take in person index

pull/1094/head
Kat 3 years ago
parent
commit
5818e67cb9
  1. 12
      app/models/form/sales/pages/person_age.rb
  2. 26
      app/models/form/sales/questions/person_age.rb
  3. 32
      app/models/form/sales/questions/person_age_known.rb
  4. 16
      app/models/form/sales/subsections/household_characteristics.rb
  5. 11
      spec/models/form/sales/pages/person_age_spec.rb
  6. 11
      spec/models/form/sales/questions/person_age_known_spec.rb
  7. 11
      spec/models/form/sales/questions/person_age_spec.rb

12
app/models/form/sales/pages/person_age.rb

@ -1,11 +1,11 @@
class Form::Sales::Pages::PersonAge < ::Form::Page
def initialize(id, hsh, subsection)
super
class Form::Sales::Pages::PersonAge < Form::Sales::Pages::Person
def initialize(id, hsh, subsection, person_index)
super(id, hsh, subsection, person_index)
@header = ""
@description = ""
@subsection = subsection
@depends_on = [
{ "details_known_#{person_display_number(PERSON_INDEX)}" => 1, "jointpur" => joint_purchase? ? 1 : 2 },
{ "details_known_#{person_display_number}" => 1, "jointpur" => joint_purchase? ? 1 : 2 },
]
end
@ -22,8 +22,8 @@ class Form::Sales::Pages::PersonAge < ::Form::Page
def questions
@questions ||= [
Form::Sales::Questions::PersonAgeKnown.new("age#{person_database_number(PERSON_INDEX)}_known", nil, self),
Form::Sales::Questions::PersonAge.new("age#{person_database_number(PERSON_INDEX)}", nil, self),
Form::Sales::Questions::PersonAgeKnown.new("age#{@person_index}_known", nil, self, @person_index),
Form::Sales::Questions::PersonAge.new("age#{@person_index}", nil, self, @person_index),
]
end
end

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

@ -1,23 +1,23 @@
class Form::Sales::Questions::PersonAge < ::Form::Question
def initialize(id, hsh, page)
super
@check_answer_label = "Person #{person_display_number(PERSON_INDEX)}’s age"
class Form::Sales::Questions::PersonAge < Form::Sales::Questions::Person
def initialize(id, hsh, page, person_index)
super(id, hsh, page, person_index)
@check_answer_label = "Person #{person_display_number}’s age"
@header = "Age"
@type = "numeric"
@page = page
@width = 3
@inferred_check_answers_value = {
"condition" => { "age#{person_database_number(PERSON_INDEX)}_known" => 1 },
"condition" => { "age#{person_index}_known" => 1 },
"value" => "Not known",
}
@check_answers_card_number = person_database_number(PERSON_INDEX)
@check_answers_card_number = person_index
end
PERSON_INDEX = {
"age2" => 2,
"age3" => 3,
"age4" => 4,
"age5" => 5,
"age6" => 6,
}.freeze
# PERSON_INDEX = {
# "age2" => 2,
# "age3" => 3,
# "age4" => 4,
# "age5" => 5,
# "age6" => 6,
# }.freeze
end

32
app/models/form/sales/questions/person_age_known.rb

@ -1,26 +1,26 @@
class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
def initialize(id, hsh, page)
super
@check_answer_label = "Person #{person_display_number(PERSON_INDEX)}’s age known?"
@header = "Do you know person #{person_display_number(PERSON_INDEX)}’s age?"
class Form::Sales::Questions::PersonAgeKnown < ::Form::Sales::Questions::Person
def initialize(id, hsh, page, person_index)
super(id, hsh, page, person_index)
@check_answer_label = "Person #{person_display_number}’s age known?"
@header = "Do you know person #{person_display_number}’s age?"
@type = "radio"
@answer_options = ANSWER_OPTIONS
@page = page
@hint_text = ""
@conditional_for = {
"age#{person_database_number(PERSON_INDEX)}" => [0],
"age#{@person_index}" => [0],
}
@hidden_in_check_answers = {
"depends_on" => [
{
"age#{person_database_number(PERSON_INDEX)}_known" => 0,
"age#{@person_index}_known" => 0,
},
{
"age#{person_database_number(PERSON_INDEX)}_known" => 1,
"age#{@person_index}_known" => 1,
},
],
}
@check_answers_card_number = person_database_number(PERSON_INDEX)
@check_answers_card_number = @person_index
end
ANSWER_OPTIONS = {
@ -28,11 +28,11 @@ class Form::Sales::Questions::PersonAgeKnown < ::Form::Question
"1" => { "value" => "No" },
}.freeze
PERSON_INDEX = {
"age2_known" => 2,
"age3_known" => 3,
"age4_known" => 4,
"age5_known" => 5,
"age6_known" => 6,
}.freeze
# PERSON_INDEX = {
# "age2_known" => 2,
# "age3_known" => 3,
# "age4_known" => 4,
# "age5_known" => 5,
# "age6_known" => 6,
# }.freeze
end

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

@ -30,25 +30,25 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection
Form::Sales::Pages::Buyer2LiveInProperty.new(nil, nil, self),
Form::Sales::Pages::NumberOfOthersInProperty.new(nil, nil, self),
Form::Sales::Pages::Person1Known.new(nil, nil, self),
Form::Sales::Pages::PersonAge.new("person_1_age", nil, self),
Form::Sales::Pages::PersonAge.new("person_1_age_joint_purchase", nil, self),
Form::Sales::Pages::PersonAge.new("person_1_age", nil, self, 2),
Form::Sales::Pages::PersonAge.new("person_1_age_joint_purchase", nil, self, 3),
Form::Sales::Pages::Person1GenderIdentity.new(nil, nil, self),
Form::Sales::Pages::Person1GenderIdentityJointPurchase.new(nil, nil, self),
Form::Sales::Pages::PersonWorkingSituation.new("person_1_working_situation", nil, self, 2),
Form::Sales::Pages::PersonWorkingSituation.new("person_1_working_situation_joint_purchase", nil, self, 3),
Form::Sales::Pages::Person2Known.new(nil, nil, self),
Form::Sales::Pages::PersonAge.new("person_2_age", nil, self),
Form::Sales::Pages::PersonAge.new("person_2_age_joint_purchase", nil, self),
Form::Sales::Pages::PersonAge.new("person_2_age", nil, self, 3),
Form::Sales::Pages::PersonAge.new("person_2_age_joint_purchase", nil, self, 4),
Form::Sales::Pages::PersonWorkingSituation.new("person_2_working_situation", nil, self, 3),
Form::Sales::Pages::PersonWorkingSituation.new("person_2_working_situation_joint_purchase", nil, self, 4),
Form::Sales::Pages::Person3Known.new(nil, nil, self),
Form::Sales::Pages::PersonAge.new("person_3_age", nil, self),
Form::Sales::Pages::PersonAge.new("person_3_age_joint_purchase", nil, self),
Form::Sales::Pages::PersonAge.new("person_3_age", nil, self, 4),
Form::Sales::Pages::PersonAge.new("person_3_age_joint_purchase", nil, self, 5),
Form::Sales::Pages::PersonWorkingSituation.new("person_3_working_situation", nil, self, 4),
Form::Sales::Pages::PersonWorkingSituation.new("person_3_working_situation_joint_purchase", nil, self, 5),
Form::Sales::Pages::Person4Known.new(nil, nil, self),
Form::Sales::Pages::PersonAge.new("person_4_age", nil, self),
Form::Sales::Pages::PersonAge.new("person_4_age_joint_purchase", nil, self),
Form::Sales::Pages::PersonAge.new("person_4_age", nil, self, 5),
Form::Sales::Pages::PersonAge.new("person_4_age_joint_purchase", nil, self, 6),
Form::Sales::Pages::PersonWorkingSituation.new("person_4_working_situation", nil, self, 5),
Form::Sales::Pages::PersonWorkingSituation.new("person_4_working_situation_joint_purchase", nil, self, 6),
]

11
spec/models/form/sales/pages/person_age_spec.rb

@ -1,11 +1,12 @@
require "rails_helper"
RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
subject(:page) { described_class.new(page_id, page_definition, subsection) }
subject(:page) { described_class.new(page_id, page_definition, subsection, person_index) }
let(:page_id) { "person_1_age" }
let(:page_definition) { nil }
let(:subsection) { instance_double(Form::Subsection) }
let(:person_index) { 1 }
it "has correct subsection" do
expect(page.subsection).to eq(subsection)
@ -22,6 +23,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "with a non joint purchase" do
context "and person 1" do
let(:page_id) { "person_1_age" }
let(:person_index) { 2 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age2_known age2])
@ -42,6 +44,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 2" do
let(:page_id) { "person_2_age" }
let(:person_index) { 3 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age3_known age3])
@ -62,6 +65,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 3" do
let(:page_id) { "person_3_age" }
let(:person_index) { 4 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age4_known age4])
@ -82,6 +86,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 4" do
let(:page_id) { "person_4_age" }
let(:person_index) { 5 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age5_known age5])
@ -104,6 +109,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "with joint purchase" do
context "and person 1" do
let(:page_id) { "person_1_age_joint_purchase" }
let(:person_index) { 3 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age3_known age3])
@ -124,6 +130,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 2" do
let(:page_id) { "person_2_age_joint_purchase" }
let(:person_index) { 4 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age4_known age4])
@ -144,6 +151,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 3" do
let(:page_id) { "person_3_age_joint_purchase" }
let(:person_index) { 5 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age5_known age5])
@ -164,6 +172,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do
context "and person 4" do
let(:page_id) { "person_4_age_joint_purchase" }
let(:person_index) { 6 }
it "has correct questions" do
expect(page.questions.map(&:id)).to eq(%w[age6_known age6])

11
spec/models/form/sales/questions/person_age_known_spec.rb

@ -1,11 +1,12 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) }
subject(:question) { described_class.new(question_id, question_definition, page, person_index) }
let(:question_id) { "age3_known" }
let(:question_definition) { nil }
let(:page) { instance_double(Form::Page) }
let(:person_index) { 2 }
before do
allow(page).to receive(:id).and_return("person_1_age")
@ -37,6 +38,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "with a non joint purchase" do
context "and person 1" do
let(:question_id) { "age2_known" }
let(:person_index) { 2 }
before do
allow(page).to receive(:id).and_return("person_1_age")
@ -82,6 +84,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 2" do
let(:question_id) { "age3_known" }
let(:person_index) { 3 }
before do
allow(page).to receive(:id).and_return("person_2_age")
@ -127,6 +130,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 3" do
let(:question_id) { "age4_known" }
let(:person_index) { 4 }
before do
allow(page).to receive(:id).and_return("person_3_age")
@ -172,6 +176,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 4" do
let(:question_id) { "age5_known" }
let(:person_index) { 5 }
before do
allow(page).to receive(:id).and_return("person_4_age")
@ -219,6 +224,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "with a joint purchase" do
context "and person 1" do
let(:question_id) { "age3_known" }
let(:person_index) { 3 }
before do
allow(page).to receive(:id).and_return("person_1_age_joint_purchase")
@ -264,6 +270,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 2" do
let(:question_id) { "age4_known" }
let(:person_index) { 4 }
before do
allow(page).to receive(:id).and_return("person_2_age_joint_purchase")
@ -309,6 +316,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 3" do
let(:question_id) { "age5_known" }
let(:person_index) { 5 }
before do
allow(page).to receive(:id).and_return("person_3_age_joint_purchase")
@ -354,6 +362,7 @@ RSpec.describe Form::Sales::Questions::PersonAgeKnown, type: :model do
context "and person 4" do
let(:question_id) { "age6_known" }
let(:person_index) { 6 }
before do
allow(page).to receive(:id).and_return("person_4_age_joint_purchase")

11
spec/models/form/sales/questions/person_age_spec.rb

@ -1,11 +1,12 @@
require "rails_helper"
RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
subject(:question) { described_class.new(question_id, question_definition, page) }
subject(:question) { described_class.new(question_id, question_definition, page, person_index) }
let(:question_id) { "age3" }
let(:question_definition) { nil }
let(:page) { instance_double(Form::Page) }
let(:person_index) { 2 }
before do
allow(page).to receive(:id).and_return("person_1_age")
@ -33,6 +34,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
context "with not a joint purchase" do
context "and person 1" do
let(:person_index) { 2 }
let(:question_id) { "age2" }
before do
@ -64,6 +66,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 2" do
let(:person_index) { 3 }
let(:question_id) { "age3" }
before do
@ -95,6 +98,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 3" do
let(:person_index) { 4 }
let(:question_id) { "age4" }
before do
@ -126,6 +130,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 4" do
let(:person_index) { 5 }
let(:question_id) { "age5" }
before do
@ -159,6 +164,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
context "with a joint purchase" do
context "and person 1" do
let(:person_index) { 3 }
let(:question_id) { "age3" }
before do
@ -190,6 +196,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 2" do
let(:person_index) { 4 }
let(:question_id) { "age4" }
before do
@ -221,6 +228,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 3" do
let(:person_index) { 5 }
let(:question_id) { "age5" }
before do
@ -252,6 +260,7 @@ RSpec.describe Form::Sales::Questions::PersonAge, type: :model do
end
context "and person 4" do
let(:person_index) { 6 }
let(:question_id) { "age6" }
before do

Loading…
Cancel
Save