diff --git a/app/models/form/sales/pages/person1_known.rb b/app/models/form/sales/pages/person1_known.rb deleted file mode 100644 index 315dc5f02..000000000 --- a/app/models/form/sales/pages/person1_known.rb +++ /dev/null @@ -1,22 +0,0 @@ -class Form::Sales::Pages::Person1Known < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_1_known" - @header_partial = "person_1_known_page" - @header = "" - @description = "" - @subsection = subsection - @depends_on = [ - { "hholdcount" => 1 }, - { "hholdcount" => 2 }, - { "hholdcount" => 3 }, - { "hholdcount" => 4 }, - ] - end - - def questions - @questions ||= [ - Form::Sales::Questions::Person1Known.new(nil, nil, self), - ] - end -end diff --git a/app/models/form/sales/pages/person2_known.rb b/app/models/form/sales/pages/person2_known.rb deleted file mode 100644 index eb29c1cfd..000000000 --- a/app/models/form/sales/pages/person2_known.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Form::Sales::Pages::Person2Known < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_2_known" - @header_partial = "person_2_known_page" - @header = "" - @description = "" - @subsection = subsection - @depends_on = [ - { "hholdcount" => 2, "details_known_1" => 1 }, - { "hholdcount" => 3, "details_known_1" => 1 }, - { "hholdcount" => 4, "details_known_1" => 1 }, - ] - end - - def questions - @questions ||= [ - Form::Sales::Questions::Person2Known.new(nil, nil, self), - ] - end -end diff --git a/app/models/form/sales/pages/person3_known.rb b/app/models/form/sales/pages/person3_known.rb deleted file mode 100644 index 7671a0de4..000000000 --- a/app/models/form/sales/pages/person3_known.rb +++ /dev/null @@ -1,20 +0,0 @@ -class Form::Sales::Pages::Person3Known < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_3_known" - @header_partial = "person_3_known_page" - @header = "" - @description = "" - @subsection = subsection - @depends_on = [ - { "hholdcount" => 3, "details_known_2" => 1 }, - { "hholdcount" => 4, "details_known_2" => 1 }, - ] - end - - def questions - @questions ||= [ - Form::Sales::Questions::Person3Known.new(nil, nil, self), - ] - end -end diff --git a/app/models/form/sales/pages/person4_known.rb b/app/models/form/sales/pages/person4_known.rb deleted file mode 100644 index c6c0208ea..000000000 --- a/app/models/form/sales/pages/person4_known.rb +++ /dev/null @@ -1,19 +0,0 @@ -class Form::Sales::Pages::Person4Known < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_4_known" - @header_partial = "person_4_known_page" - @header = "" - @description = "" - @subsection = subsection - @depends_on = [ - { "hholdcount" => 4, "details_known_3" => 1 }, - ] - end - - def questions - @questions ||= [ - Form::Sales::Questions::Person4Known.new(nil, nil, self), - ] - end -end diff --git a/app/models/form/sales/pages/person_age.rb b/app/models/form/sales/pages/person_age.rb index ed5f4e954..1eea81818 100644 --- a/app/models/form/sales/pages/person_age.rb +++ b/app/models/form/sales/pages/person_age.rb @@ -4,9 +4,7 @@ class Form::Sales::Pages::PersonAge < Form::Sales::Pages::Person @header = "" @description = "" @subsection = subsection - @depends_on = [ - { details_known_question_id => 1, "jointpur" => joint_purchase? ? 1 : 2 }, - ] + @depends_on = page_depends_on end def questions @@ -15,4 +13,10 @@ class Form::Sales::Pages::PersonAge < Form::Sales::Pages::Person Form::Sales::Questions::PersonAge.new(field_for_person("age"), nil, self, person_index: @person_index), ] end + + def page_depends_on + return (person_display_number..4).map { |index| { "hholdcount" => index, "jointpur" => joint_purchase? ? 1 : 2 } } if person_display_number == 1 + + [{ details_known_question_id => 1, "jointpur" => joint_purchase? ? 1 : 2 }] + end end diff --git a/app/models/form/sales/pages/person_known.rb b/app/models/form/sales/pages/person_known.rb new file mode 100644 index 000000000..8a2d29bba --- /dev/null +++ b/app/models/form/sales/pages/person_known.rb @@ -0,0 +1,20 @@ +class Form::Sales::Pages::PersonKnown < Form::Sales::Pages::Person + def initialize(id, hsh, subsection, person_index:) + super + @header_partial = "#{id}_page" + @header = "" + @description = "" + @subsection = subsection + @depends_on = page_depends_on + end + + def questions + @questions ||= [ + Form::Sales::Questions::PersonKnown.new(field_for_person("details_known_"), nil, self, person_index: @person_index), + ] + end + + def page_depends_on + (@person_index..4).map { |index| { "hholdcount" => index } } + end +end diff --git a/app/models/form/sales/pages/person_working_situation.rb b/app/models/form/sales/pages/person_working_situation.rb index 92d90423c..f232f6a84 100644 --- a/app/models/form/sales/pages/person_working_situation.rb +++ b/app/models/form/sales/pages/person_working_situation.rb @@ -4,9 +4,7 @@ class Form::Sales::Pages::PersonWorkingSituation < Form::Sales::Pages::Person @header = "" @description = "" @subsection = subsection - @depends_on = [ - { details_known_question_id => 1, "jointpur" => joint_purchase? ? 1 : 2 }, - ] + @depends_on = page_depends_on end def questions @@ -14,4 +12,10 @@ class Form::Sales::Pages::PersonWorkingSituation < Form::Sales::Pages::Person Form::Sales::Questions::PersonWorkingSituation.new(field_for_person("ecstat"), nil, self, person_index: @person_index), ] end + + def page_depends_on + return (person_display_number..4).map { |index| { "hholdcount" => index, "jointpur" => joint_purchase? ? 1 : 2 } } if person_display_number == 1 + + [{ details_known_question_id => 1, "jointpur" => joint_purchase? ? 1 : 2 }] + end end diff --git a/app/models/form/sales/questions/person1_known.rb b/app/models/form/sales/questions/person1_known.rb deleted file mode 100644 index 6f7590101..000000000 --- a/app/models/form/sales/questions/person1_known.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Form::Sales::Questions::Person1Known < ::Form::Question - def initialize(id, hsh, page) - super - @id = "details_known_1" - @check_answer_label = "Details known for person 1?" - @header = "Do you know the details for person 1?" - @type = "radio" - @answer_options = ANSWER_OPTIONS - @page = page - @hint_text = "" - @hidden_in_check_answers = { - "depends_on" => [ - { - "details_known_1" => 1, - }, - ], - } - @check_answers_card_number = 3 - end - - ANSWER_OPTIONS = { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - }.freeze -end diff --git a/app/models/form/sales/questions/person2_known.rb b/app/models/form/sales/questions/person2_known.rb deleted file mode 100644 index b539590af..000000000 --- a/app/models/form/sales/questions/person2_known.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Form::Sales::Questions::Person2Known < ::Form::Question - def initialize(id, hsh, page) - super - @id = "details_known_2" - @check_answer_label = "Details known for person 2?" - @header = "Do you know the details for person 2?" - @type = "radio" - @answer_options = ANSWER_OPTIONS - @page = page - @hint_text = "" - @hidden_in_check_answers = { - "depends_on" => [ - { - "details_known_2" => 1, - }, - ], - } - @check_answers_card_number = 4 - end - - ANSWER_OPTIONS = { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - }.freeze -end diff --git a/app/models/form/sales/questions/person3_known.rb b/app/models/form/sales/questions/person3_known.rb deleted file mode 100644 index bcb37c151..000000000 --- a/app/models/form/sales/questions/person3_known.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Form::Sales::Questions::Person3Known < ::Form::Question - def initialize(id, hsh, page) - super - @id = "details_known_3" - @check_answer_label = "Details known for person 3?" - @header = "Do you know the details for person 3?" - @type = "radio" - @answer_options = ANSWER_OPTIONS - @page = page - @hint_text = "" - @hidden_in_check_answers = { - "depends_on" => [ - { - "details_known_3" => 1, - }, - ], - } - @check_answers_card_number = 5 - end - - ANSWER_OPTIONS = { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - }.freeze -end diff --git a/app/models/form/sales/questions/person4_known.rb b/app/models/form/sales/questions/person4_known.rb deleted file mode 100644 index 162bba06a..000000000 --- a/app/models/form/sales/questions/person4_known.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Form::Sales::Questions::Person4Known < ::Form::Question - def initialize(id, hsh, page) - super - @id = "details_known_4" - @check_answer_label = "Details known for person 4?" - @header = "Do you know the details for person 4?" - @type = "radio" - @answer_options = ANSWER_OPTIONS - @page = page - @hint_text = "" - @hidden_in_check_answers = { - "depends_on" => [ - { - "details_known_4" => 1, - }, - ], - } - @check_answers_card_number = 6 - end - - ANSWER_OPTIONS = { - "1" => { "value" => "Yes" }, - "2" => { "value" => "No" }, - }.freeze -end diff --git a/app/models/form/sales/questions/person_known.rb b/app/models/form/sales/questions/person_known.rb new file mode 100644 index 000000000..0c1ef09c2 --- /dev/null +++ b/app/models/form/sales/questions/person_known.rb @@ -0,0 +1,24 @@ +class Form::Sales::Questions::PersonKnown < Form::Sales::Questions::Person + def initialize(id, hsh, page, person_index:) + super + @check_answer_label = "Details known for person #{person_index}?" + @header = "Do you know the details for person #{person_index}?" + @type = "radio" + @answer_options = ANSWER_OPTIONS + @page = page + @hint_text = "" + @hidden_in_check_answers = { + "depends_on" => [ + { + field_for_person("details_known_") => 1, + }, + ], + } + @check_answers_card_number = person_index + 2 + end + + ANSWER_OPTIONS = { + "1" => { "value" => "Yes" }, + "2" => { "value" => "No" }, + }.freeze +end diff --git a/app/models/form/sales/subsections/household_characteristics.rb b/app/models/form/sales/subsections/household_characteristics.rb index feea2a393..4eb252c52 100644 --- a/app/models/form/sales/subsections/household_characteristics.rb +++ b/app/models/form/sales/subsections/household_characteristics.rb @@ -29,7 +29,7 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Sales::Pages::Buyer2WorkingSituation.new(nil, nil, self), 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::PersonKnown.new("person_1_known", nil, self, person_index: 1), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_1_relationship_to_buyer_1", nil, self, person_index: 2), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_1_relationship_to_buyer_1_joint_purchase", nil, self, person_index: 3), Form::Sales::Pages::PersonAge.new("person_1_age", nil, self, person_index: 2), @@ -38,21 +38,21 @@ class Form::Sales::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Sales::Pages::Person1GenderIdentityJointPurchase.new(nil, nil, self), Form::Sales::Pages::PersonWorkingSituation.new("person_1_working_situation", nil, self, person_index: 2), Form::Sales::Pages::PersonWorkingSituation.new("person_1_working_situation_joint_purchase", nil, self, person_index: 3), - Form::Sales::Pages::Person2Known.new(nil, nil, self), + Form::Sales::Pages::PersonKnown.new("person_2_known", nil, self, person_index: 2), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_2_relationship_to_buyer_1", nil, self, person_index: 3), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_2_relationship_to_buyer_1_joint_purchase", nil, self, person_index: 4), Form::Sales::Pages::PersonAge.new("person_2_age", nil, self, person_index: 3), Form::Sales::Pages::PersonAge.new("person_2_age_joint_purchase", nil, self, person_index: 4), Form::Sales::Pages::PersonWorkingSituation.new("person_2_working_situation", nil, self, person_index: 3), Form::Sales::Pages::PersonWorkingSituation.new("person_2_working_situation_joint_purchase", nil, self, person_index: 4), - Form::Sales::Pages::Person3Known.new(nil, nil, self), + Form::Sales::Pages::PersonKnown.new("person_3_known", nil, self, person_index: 3), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_3_relationship_to_buyer_1", nil, self, person_index: 4), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_3_relationship_to_buyer_1_joint_purchase", nil, self, person_index: 5), Form::Sales::Pages::PersonAge.new("person_3_age", nil, self, person_index: 4), Form::Sales::Pages::PersonAge.new("person_3_age_joint_purchase", nil, self, person_index: 5), Form::Sales::Pages::PersonWorkingSituation.new("person_3_working_situation", nil, self, person_index: 4), Form::Sales::Pages::PersonWorkingSituation.new("person_3_working_situation_joint_purchase", nil, self, person_index: 5), - Form::Sales::Pages::Person4Known.new(nil, nil, self), + Form::Sales::Pages::PersonKnown.new("person_4_known", nil, self, person_index: 4), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_4_relationship_to_buyer_1", nil, self, person_index: 5), Form::Sales::Pages::PersonRelationshipToBuyer1.new("person_4_relationship_to_buyer_1_joint_purchase", nil, self, person_index: 6), Form::Sales::Pages::PersonAge.new("person_4_age", nil, self, person_index: 5), diff --git a/spec/models/form/sales/pages/person1_known_spec.rb b/spec/models/form/sales/pages/person1_known_spec.rb deleted file mode 100644 index 9353b82aa..000000000 --- a/spec/models/form/sales/pages/person1_known_spec.rb +++ /dev/null @@ -1,44 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Pages::Person1Known, 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[details_known_1]) - end - - it "has the correct id" do - expect(page.id).to eq("person_1_known") - end - - it "has the correct header" do - expect(page.header).to eq("") - end - - it "has the correct header_partial" do - expect(page.header_partial).to eq("person_1_known_page") - end - - it "has the correct description" do - expect(page.description).to eq("") - end - - it "has correct depends_on" do - expect(page.depends_on).to eq( - [ - { "hholdcount" => 1 }, - { "hholdcount" => 2 }, - { "hholdcount" => 3 }, - { "hholdcount" => 4 }, - ], - ) - end -end diff --git a/spec/models/form/sales/pages/person2_known_spec.rb b/spec/models/form/sales/pages/person2_known_spec.rb deleted file mode 100644 index 46ab592de..000000000 --- a/spec/models/form/sales/pages/person2_known_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Pages::Person2Known, 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[details_known_2]) - end - - it "has the correct id" do - expect(page.id).to eq("person_2_known") - end - - it "has the correct header" do - expect(page.header).to eq("") - end - - it "has the correct header_partial" do - expect(page.header_partial).to eq("person_2_known_page") - end - - it "has the correct description" do - expect(page.description).to eq("") - end - - it "has correct depends_on" do - expect(page.depends_on).to eq( - [ - { "hholdcount" => 2, "details_known_1" => 1 }, - { "hholdcount" => 3, "details_known_1" => 1 }, - { "hholdcount" => 4, "details_known_1" => 1 }, - ], - ) - end -end diff --git a/spec/models/form/sales/pages/person3_known_spec.rb b/spec/models/form/sales/pages/person3_known_spec.rb deleted file mode 100644 index ef4c1c34d..000000000 --- a/spec/models/form/sales/pages/person3_known_spec.rb +++ /dev/null @@ -1,42 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Pages::Person3Known, 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[details_known_3]) - end - - it "has the correct id" do - expect(page.id).to eq("person_3_known") - end - - it "has the correct header" do - expect(page.header).to eq("") - end - - it "has the correct header_partial" do - expect(page.header_partial).to eq("person_3_known_page") - end - - it "has the correct description" do - expect(page.description).to eq("") - end - - it "has correct depends_on" do - expect(page.depends_on).to eq( - [ - { "details_known_2" => 1, "hholdcount" => 3 }, - { "details_known_2" => 1, "hholdcount" => 4 }, - ], - ) - end -end diff --git a/spec/models/form/sales/pages/person4_known_spec.rb b/spec/models/form/sales/pages/person4_known_spec.rb deleted file mode 100644 index 024c121c9..000000000 --- a/spec/models/form/sales/pages/person4_known_spec.rb +++ /dev/null @@ -1,41 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Pages::Person4Known, 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[details_known_4]) - end - - it "has the correct id" do - expect(page.id).to eq("person_4_known") - end - - it "has the correct header" do - expect(page.header).to eq("") - end - - it "has the correct header_partial" do - expect(page.header_partial).to eq("person_4_known_page") - end - - it "has the correct description" do - expect(page.description).to eq("") - end - - it "has correct depends_on" do - expect(page.depends_on).to eq( - [ - { "details_known_3" => 1, "hholdcount" => 4 }, - ], - ) - end -end diff --git a/spec/models/form/sales/pages/person_age_spec.rb b/spec/models/form/sales/pages/person_age_spec.rb index 0ee4ab777..4c4159896 100644 --- a/spec/models/form/sales/pages/person_age_spec.rb +++ b/spec/models/form/sales/pages/person_age_spec.rb @@ -35,9 +35,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [ - { "details_known_1" => 1, "jointpur" => 2 }, - ], + [{ "hholdcount" => 1, "jointpur" => 2 }, { "hholdcount" => 2, "jointpur" => 2 }, { "hholdcount" => 3, "jointpur" => 2 }, { "hholdcount" => 4, "jointpur" => 2 }], ) end end @@ -121,9 +119,7 @@ RSpec.describe Form::Sales::Pages::PersonAge, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [ - { "details_known_1" => 1, "jointpur" => 1 }, - ], + [{ "hholdcount" => 1, "jointpur" => 1 }, { "hholdcount" => 2, "jointpur" => 1 }, { "hholdcount" => 3, "jointpur" => 1 }, { "hholdcount" => 4, "jointpur" => 1 }], ) end end diff --git a/spec/models/form/sales/pages/person_known_spec.rb b/spec/models/form/sales/pages/person_known_spec.rb new file mode 100644 index 000000000..0dc454143 --- /dev/null +++ b/spec/models/form/sales/pages/person_known_spec.rb @@ -0,0 +1,119 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Pages::PersonKnown, type: :model do + subject(:page) { described_class.new(page_id, page_definition, subsection, person_index:) } + + let(:page_id) { "person_2_known" } + 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) + 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 + + context "with person 1" do + let(:page_id) { "person_1_known" } + let(:person_index) { 1 } + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[details_known_1]) + end + + it "has the correct id" do + expect(page.id).to eq("person_1_known") + end + + it "has the correct header_partial" do + expect(page.header_partial).to eq("person_1_known_page") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [ + { "hholdcount" => 1 }, + { "hholdcount" => 2 }, + { "hholdcount" => 3 }, + { "hholdcount" => 4 }, + ], + ) + end + end + + context "with person 2" do + let(:page_id) { "person_2_known" } + let(:person_index) { 2 } + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[details_known_2]) + end + + it "has the correct id" do + expect(page.id).to eq("person_2_known") + end + + it "has the correct header_partial" do + expect(page.header_partial).to eq("person_2_known_page") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "hholdcount" => 2 }, { "hholdcount" => 3 }, { "hholdcount" => 4 }], + ) + end + end + + context "with person 3" do + let(:page_id) { "person_3_known" } + let(:person_index) { 3 } + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[details_known_3]) + end + + it "has the correct id" do + expect(page.id).to eq("person_3_known") + end + + it "has the correct header_partial" do + expect(page.header_partial).to eq("person_3_known_page") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "hholdcount" => 3 }, { "hholdcount" => 4 }], + ) + end + end + + context "with person 4" do + let(:page_id) { "person_4_known" } + let(:person_index) { 4 } + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[details_known_4]) + end + + it "has the correct id" do + expect(page.id).to eq("person_4_known") + end + + it "has the correct header_partial" do + expect(page.header_partial).to eq("person_4_known_page") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "hholdcount" => 4 }], + ) + end + end +end diff --git a/spec/models/form/sales/pages/person_working_situation_spec.rb b/spec/models/form/sales/pages/person_working_situation_spec.rb index 65bdb42d0..e38d5ff47 100644 --- a/spec/models/form/sales/pages/person_working_situation_spec.rb +++ b/spec/models/form/sales/pages/person_working_situation_spec.rb @@ -35,7 +35,7 @@ RSpec.describe Form::Sales::Pages::PersonWorkingSituation, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to eq([{ "details_known_1" => 1, "jointpur" => 2 }]) + expect(page.depends_on).to eq([{ "hholdcount" => 1, "jointpur" => 2 }, { "hholdcount" => 2, "jointpur" => 2 }, { "hholdcount" => 3, "jointpur" => 2 }, { "hholdcount" => 4, "jointpur" => 2 }]) end end @@ -119,7 +119,7 @@ RSpec.describe Form::Sales::Pages::PersonWorkingSituation, type: :model do end it "has correct depends_on" do - expect(page.depends_on).to eq([{ "details_known_1" => 1, "jointpur" => 1 }]) + expect(page.depends_on).to eq([{ "hholdcount" => 1, "jointpur" => 1 }, { "hholdcount" => 2, "jointpur" => 1 }, { "hholdcount" => 3, "jointpur" => 1 }, { "hholdcount" => 4, "jointpur" => 1 }]) end end diff --git a/spec/models/form/sales/questions/person1_known_spec.rb b/spec/models/form/sales/questions/person1_known_spec.rb deleted file mode 100644 index e1207ea1b..000000000 --- a/spec/models/form/sales/questions/person1_known_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Questions::Person1Known, 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("details_known_1") - end - - it "has the correct header" do - expect(question.header).to eq("Do you know the details for person 1?") - end - - it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Details known for person 1?") - 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" => "Yes" }, - "2" => { "value" => "No" }, - }) - end - - it "has correct conditional for" do - expect(question.conditional_for).to eq(nil) - end - - it "has the correct hint" do - expect(question.hint_text).to eq("") - end - - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq( - { - "depends_on" => [ - { - "details_known_1" => 1, - }, - ], - }, - ) - end - - it "has the correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(3) - end -end diff --git a/spec/models/form/sales/questions/person2_known_spec.rb b/spec/models/form/sales/questions/person2_known_spec.rb deleted file mode 100644 index 6d76874df..000000000 --- a/spec/models/form/sales/questions/person2_known_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Questions::Person2Known, 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("details_known_2") - end - - it "has the correct header" do - expect(question.header).to eq("Do you know the details for person 2?") - end - - it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Details known for person 2?") - 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" => "Yes" }, - "2" => { "value" => "No" }, - }) - end - - it "has correct conditional for" do - expect(question.conditional_for).to eq(nil) - end - - it "has the correct hint" do - expect(question.hint_text).to eq("") - end - - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq( - { - "depends_on" => [ - { - "details_known_2" => 1, - }, - ], - }, - ) - end - - it "has the correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(4) - end -end diff --git a/spec/models/form/sales/questions/person3_known_spec.rb b/spec/models/form/sales/questions/person3_known_spec.rb deleted file mode 100644 index 39efdcb3a..000000000 --- a/spec/models/form/sales/questions/person3_known_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Questions::Person3Known, 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("details_known_3") - end - - it "has the correct header" do - expect(question.header).to eq("Do you know the details for person 3?") - end - - it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Details known for person 3?") - 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" => "Yes" }, - "2" => { "value" => "No" }, - }) - end - - it "has correct conditional for" do - expect(question.conditional_for).to eq(nil) - end - - it "has the correct hint" do - expect(question.hint_text).to eq("") - end - - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq( - { - "depends_on" => [ - { - "details_known_3" => 1, - }, - ], - }, - ) - end - - it "has the correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(5) - end -end diff --git a/spec/models/form/sales/questions/person4_known_spec.rb b/spec/models/form/sales/questions/person4_known_spec.rb deleted file mode 100644 index f23dfa741..000000000 --- a/spec/models/form/sales/questions/person4_known_spec.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "rails_helper" - -RSpec.describe Form::Sales::Questions::Person4Known, 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("details_known_4") - end - - it "has the correct header" do - expect(question.header).to eq("Do you know the details for person 4?") - end - - it "has the correct check_answer_label" do - expect(question.check_answer_label).to eq("Details known for person 4?") - 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" => "Yes" }, - "2" => { "value" => "No" }, - }) - end - - it "has correct conditional for" do - expect(question.conditional_for).to eq(nil) - end - - it "has the correct hint" do - expect(question.hint_text).to eq("") - end - - it "has the correct hidden_in_check_answers" do - expect(question.hidden_in_check_answers).to eq( - { - "depends_on" => [ - { - "details_known_4" => 1, - }, - ], - }, - ) - end - - it "has the correct check_answers_card_number" do - expect(question.check_answers_card_number).to eq(6) - end -end diff --git a/spec/models/form/sales/questions/person_known_spec.rb b/spec/models/form/sales/questions/person_known_spec.rb new file mode 100644 index 000000000..2c33346f0 --- /dev/null +++ b/spec/models/form/sales/questions/person_known_spec.rb @@ -0,0 +1,70 @@ +require "rails_helper" + +RSpec.describe Form::Sales::Questions::PersonKnown, type: :model do + subject(:question) { described_class.new(question_id, question_definition, page, person_index:) } + + let(:question_id) { "details_known_1" } + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + let(:person_index) { 1 } + + it "has correct page" do + expect(question.page).to eq(page) + 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" => "Yes" }, + "2" => { "value" => "No" }, + }) + end + + it "has correct conditional for" do + expect(question.conditional_for).to eq(nil) + end + + it "has the correct hint" do + expect(question.hint_text).to eq("") + end + + context "with person 1" do + let(:question_id) { "details_known_1" } + let(:person_index) { 1 } + + it "has the correct id" do + expect(question.id).to eq("details_known_1") + end + + it "has the correct header" do + expect(question.header).to eq("Do you know the details for person 1?") + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Details known for person 1?") + end + + it "has the correct hidden_in_check_answers" do + expect(question.hidden_in_check_answers).to eq( + { + "depends_on" => [ + { + "details_known_1" => 1, + }, + ], + }, + ) + end + + it "has the correct check_answers_card_number" do + expect(question.check_answers_card_number).to eq(3) + end + end +end