diff --git a/app/models/form/lettings/pages/person_2_relationship_to_lead.rb b/app/models/form/lettings/pages/person_2_relationship_to_lead.rb deleted file mode 100644 index e6a03ad9a..000000000 --- a/app/models/form/lettings/pages/person_2_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person2RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_2_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_2" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat2.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_3_relationship_to_lead.rb b/app/models/form/lettings/pages/person_3_relationship_to_lead.rb deleted file mode 100644 index 87275c1ff..000000000 --- a/app/models/form/lettings/pages/person_3_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person3RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_3_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_3" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat3.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_4_relationship_to_lead.rb b/app/models/form/lettings/pages/person_4_relationship_to_lead.rb deleted file mode 100644 index 837f227cc..000000000 --- a/app/models/form/lettings/pages/person_4_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person4RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_4_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_4" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat4.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_5_relationship_to_lead.rb b/app/models/form/lettings/pages/person_5_relationship_to_lead.rb deleted file mode 100644 index 632643b0e..000000000 --- a/app/models/form/lettings/pages/person_5_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person5RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_5_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_5" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat5.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_6_relationship_to_lead.rb b/app/models/form/lettings/pages/person_6_relationship_to_lead.rb deleted file mode 100644 index 8d7e09715..000000000 --- a/app/models/form/lettings/pages/person_6_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person6RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_6_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_6" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat6.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_7_relationship_to_lead.rb b/app/models/form/lettings/pages/person_7_relationship_to_lead.rb deleted file mode 100644 index 6000ba662..000000000 --- a/app/models/form/lettings/pages/person_7_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person7RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_7_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_7" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat7.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_8_relationship_to_lead.rb b/app/models/form/lettings/pages/person_8_relationship_to_lead.rb deleted file mode 100644 index c70be6bf7..000000000 --- a/app/models/form/lettings/pages/person_8_relationship_to_lead.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Form::Lettings::Pages::Person8RelationshipToLead < ::Form::Page - def initialize(id, hsh, subsection) - super - @id = "person_8_relationship_to_lead" - @header = "" - @depends_on = [{ "details_known_8" => 0 }] - @description = "" - end - - def questions - @questions ||= [Form::Lettings::Questions::Relat8.new(nil, nil, self)] - end -end diff --git a/app/models/form/lettings/pages/person_relationship_to_lead.rb b/app/models/form/lettings/pages/person_relationship_to_lead.rb new file mode 100644 index 000000000..f38069c52 --- /dev/null +++ b/app/models/form/lettings/pages/person_relationship_to_lead.rb @@ -0,0 +1,14 @@ +class Form::Lettings::Pages::PersonRelationshipToLead < ::Form::Page + def initialize(id, hsh, subsection, person_index:) + super(id, hsh, subsection) + @id = "person_#{person_index}_relationship_to_lead" + @header = "" + @depends_on = [{ "details_known_#{person_index}" => 0 }] + @description = "" + @person_index = person_index + end + + def questions + @questions ||= [Form::Lettings::Questions::PersonRelationship.new(nil, nil, self, person_index: @person_index)] + end +end diff --git a/app/models/form/lettings/questions/relat2.rb b/app/models/form/lettings/questions/person_relationship.rb similarity index 50% rename from app/models/form/lettings/questions/relat2.rb rename to app/models/form/lettings/questions/person_relationship.rb index dda9a18b3..896fc48d7 100644 --- a/app/models/form/lettings/questions/relat2.rb +++ b/app/models/form/lettings/questions/person_relationship.rb @@ -1,11 +1,11 @@ -class Form::Lettings::Questions::Relat2 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat2" - @check_answer_label = "Person 2’s relationship to the lead tenant" - @header = "What is person 2’s relationship to the lead tenant?" +class Form::Lettings::Questions::PersonRelationship < ::Form::Question + def initialize(id, hsh, page, person_index:) + super(id, hsh, page) + @id = "relat#{person_index}" + @check_answer_label = "Person #{person_index}’s relationship to the lead tenant" + @header = "What is person #{person_index}’s relationship to the lead tenant?" @type = "radio" - @check_answers_card_number = 2 + @check_answers_card_number = person_index @hint_text = "" @answer_options = ANSWER_OPTIONS end diff --git a/app/models/form/lettings/questions/relat3.rb b/app/models/form/lettings/questions/relat3.rb deleted file mode 100644 index 53c16184a..000000000 --- a/app/models/form/lettings/questions/relat3.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat3 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat3" - @check_answer_label = "Person 3’s relationship to the lead tenant" - @header = "What is person 3’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 3 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/questions/relat4.rb b/app/models/form/lettings/questions/relat4.rb deleted file mode 100644 index 94fe45242..000000000 --- a/app/models/form/lettings/questions/relat4.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat4 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat4" - @check_answer_label = "Person 4’s relationship to the lead tenant" - @header = "What is person 4’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 4 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/questions/relat5.rb b/app/models/form/lettings/questions/relat5.rb deleted file mode 100644 index 00a98e438..000000000 --- a/app/models/form/lettings/questions/relat5.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat5 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat5" - @check_answer_label = "Person 5’s relationship to the lead tenant" - @header = "What is person 5’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 5 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/questions/relat6.rb b/app/models/form/lettings/questions/relat6.rb deleted file mode 100644 index 815a9f5eb..000000000 --- a/app/models/form/lettings/questions/relat6.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat6 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat6" - @check_answer_label = "Person 6’s relationship to the lead tenant" - @header = "What is person 6’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 6 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/questions/relat7.rb b/app/models/form/lettings/questions/relat7.rb deleted file mode 100644 index 9b2fe9d81..000000000 --- a/app/models/form/lettings/questions/relat7.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat7 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat7" - @check_answer_label = "Person 7’s relationship to the lead tenant" - @header = "What is person 7’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 7 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/questions/relat8.rb b/app/models/form/lettings/questions/relat8.rb deleted file mode 100644 index 29e4953d4..000000000 --- a/app/models/form/lettings/questions/relat8.rb +++ /dev/null @@ -1,14 +0,0 @@ -class Form::Lettings::Questions::Relat8 < ::Form::Question - def initialize(id, hsh, page) - super - @id = "relat8" - @check_answer_label = "Person 8’s relationship to the lead tenant" - @header = "What is person 8’s relationship to the lead tenant?" - @type = "radio" - @check_answers_card_number = 8 - @hint_text = "" - @answer_options = ANSWER_OPTIONS - end - - ANSWER_OPTIONS = { "P" => { "value" => "Partner" }, "C" => { "value" => "Child", "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education." }, "X" => { "value" => "Other" }, "divider" => { "value" => true }, "R" => { "value" => "Person prefers not to say" } }.freeze -end diff --git a/app/models/form/lettings/subsections/household_characteristics.rb b/app/models/form/lettings/subsections/household_characteristics.rb index c5f2615c9..32153a177 100644 --- a/app/models/form/lettings/subsections/household_characteristics.rb +++ b/app/models/form/lettings/subsections/household_characteristics.rb @@ -28,7 +28,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::LeadTenantUnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::LeadTenantOverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 2), - Form::Lettings::Pages::Person2RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 2), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 2), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson2AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson2AgeValueCheck.new(nil, nil, self), @@ -39,7 +39,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person2UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person2OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 3), - Form::Lettings::Pages::Person3RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 3), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 3), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson3AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson3AgeValueCheck.new(nil, nil, self), @@ -50,7 +50,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person3UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person3OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 4), - Form::Lettings::Pages::Person4RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 4), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 4), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson4AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson4AgeValueCheck.new(nil, nil, self), @@ -61,7 +61,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person4UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person4OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 5), - Form::Lettings::Pages::Person5RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 5), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 5), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson5AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson5AgeValueCheck.new(nil, nil, self), @@ -72,7 +72,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person5UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person5OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 6), - Form::Lettings::Pages::Person6RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 6), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 6), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson6AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson6AgeValueCheck.new(nil, nil, self), @@ -83,7 +83,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person6UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person6OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 7), - Form::Lettings::Pages::Person7RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 7), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 7), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson7AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson7AgeValueCheck.new(nil, nil, self), @@ -94,7 +94,7 @@ class Form::Lettings::Subsections::HouseholdCharacteristics < ::Form::Subsection Form::Lettings::Pages::Person7UnderRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::Person7OverRetirementValueCheck.new(nil, nil, self), Form::Lettings::Pages::PersonKnown.new(nil, nil, self, person_index: 8), - Form::Lettings::Pages::Person8RelationshipToLead.new(nil, nil, self), + Form::Lettings::Pages::PersonRelationshipToLead.new(nil, nil, self, person_index: 8), Form::Lettings::Pages::PersonAge.new(nil, nil, self, person_index: 8), Form::Lettings::Pages::NoFemalesPregnantHouseholdPerson8AgeValueCheck.new(nil, nil, self), Form::Lettings::Pages::FemalesInSoftAgeRangeInPregnantHouseholdPerson8AgeValueCheck.new(nil, nil, self), diff --git a/spec/models/form/lettings/pages/person_relationship_to_lead_spec.rb b/spec/models/form/lettings/pages/person_relationship_to_lead_spec.rb new file mode 100644 index 000000000..675c08aea --- /dev/null +++ b/spec/models/form/lettings/pages/person_relationship_to_lead_spec.rb @@ -0,0 +1,55 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Pages::PersonRelationshipToLead, type: :model do + subject(:page) { described_class.new(nil, page_definition, subsection, person_index:) } + + let(:page_definition) { nil } + let(:subsection) { instance_double(Form::Subsection) } + let(:person_index) { 2 } + + 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 2" do + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[relat2]) + end + + it "has the correct id" do + expect(page.id).to eq("person_2_relationship_to_lead") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "details_known_2" => 0 }], + ) + end + end + + context "with person 3" do + let(:person_index) { 3 } + + it "has correct questions" do + expect(page.questions.map(&:id)).to eq(%w[relat3]) + end + + it "has the correct id" do + expect(page.id).to eq("person_3_relationship_to_lead") + end + + it "has correct depends_on" do + expect(page.depends_on).to eq( + [{ "details_known_3" => 0 }], + ) + end + end +end diff --git a/spec/models/form/lettings/questions/person_relationship_spec.rb b/spec/models/form/lettings/questions/person_relationship_spec.rb new file mode 100644 index 000000000..04f071b9b --- /dev/null +++ b/spec/models/form/lettings/questions/person_relationship_spec.rb @@ -0,0 +1,79 @@ +require "rails_helper" + +RSpec.describe Form::Lettings::Questions::PersonRelationship, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } + + let(:question_definition) { nil } + let(:page) { instance_double(Form::Page) } + let(:person_index) { 2 } + + 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("C" => { "hint" => "Must be eligible for child benefit, aged under 16 or under 20 if still in full-time education.", "value" => "Child" }, + "P" => { "value" => "Partner" }, + "R" => { "value" => "Person prefers not to say" }, + "X" => { "value" => "Other" }, + "divider" => { "value" => true }) + end + + it "has the correct hint" do + expect(question.hint_text).to eq("") + end + + it "has correct conditional for" do + expect(question.conditional_for).to be nil + end + + it "has the correct hidden_in_check_answers" do + expect(question.hidden_in_check_answers).to be nil + end + + context "with person 2" do + it "has the correct id" do + expect(question.id).to eq("relat2") + end + + it "has the correct header" do + expect(question.header).to eq("What is person 2’s relationship to the lead tenant?") + end + + it "has the correct check_answers_card_number" do + expect(question.check_answers_card_number).to eq(2) + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Person 2’s relationship to the lead tenant") + end + end + + context "with person 3" do + let(:person_index) { 3 } + + it "has the correct id" do + expect(question.id).to eq("relat3") + end + + it "has the correct header" do + expect(question.header).to eq("What is person 3’s relationship to the lead tenant?") + end + + it "has the correct check_answers_card_number" do + expect(question.check_answers_card_number).to eq(3) + end + + it "has the correct check_answer_label" do + expect(question.check_answer_label).to eq("Person 3’s relationship to the lead tenant") + end + end +end