From 5e6bfd56666b588bb26046d2bf0bc90f5dc07381 Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 1 Feb 2023 11:17:24 +0000 Subject: [PATCH] Add reusable age questions and adjust the tests --- app/models/form/lettings/questions/age.rb | 15 +++++++++++++++ app/models/form/lettings/questions/age_known.rb | 16 ++++++++++++++++ .../form/lettings/pages/person3_age_spec.rb | 4 ++-- .../form/lettings/pages/person6_age_spec.rb | 4 ++-- .../form/lettings/pages/person7_age_spec.rb | 4 ++-- .../form/lettings/pages/person8_age_spec.rb | 4 ++-- .../form/lettings/questions/age2_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age2_spec.rb | 6 +++--- .../form/lettings/questions/age3_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age3_spec.rb | 6 +++--- .../form/lettings/questions/age4_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age4_spec.rb | 6 +++--- .../form/lettings/questions/age5_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age5_spec.rb | 6 +++--- .../form/lettings/questions/age6_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age6_spec.rb | 6 +++--- .../form/lettings/questions/age7_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age7_spec.rb | 6 +++--- .../form/lettings/questions/age8_known_spec.rb | 10 +++------- spec/models/form/lettings/questions/age8_spec.rb | 6 +++--- 20 files changed, 81 insertions(+), 78 deletions(-) create mode 100644 app/models/form/lettings/questions/age.rb create mode 100644 app/models/form/lettings/questions/age_known.rb diff --git a/app/models/form/lettings/questions/age.rb b/app/models/form/lettings/questions/age.rb new file mode 100644 index 000000000..f160f1948 --- /dev/null +++ b/app/models/form/lettings/questions/age.rb @@ -0,0 +1,15 @@ +class Form::Lettings::Questions::Age < ::Form::Question + def initialize(id, hsh, page, person_index:) + super(id, hsh, page) + @id = "age#{person_index}" + @check_answer_label = "Person #{person_index}’s age" + @header = "Age" + @type = "numeric" + @width = 2 + @inferred_check_answers_value = [{ "condition" => { "age#{person_index}_known" => 1 }, "value" => "Not known" }] + @check_answers_card_number = person_index + @max = 120 + @min = 0 + @step = 1 + end +end diff --git a/app/models/form/lettings/questions/age_known.rb b/app/models/form/lettings/questions/age_known.rb new file mode 100644 index 000000000..4badb5879 --- /dev/null +++ b/app/models/form/lettings/questions/age_known.rb @@ -0,0 +1,16 @@ +class Form::Lettings::Questions::AgeKnown < ::Form::Question + def initialize(id, hsh, page, person_index:) + super(id, hsh, page) + @id = "age#{person_index}_known" + @check_answer_label = "" + @header = "Do you know person #{person_index}’s age?" + @type = "radio" + @check_answers_card_number = person_index + @hint_text = "" + @answer_options = ANSWER_OPTIONS + @conditional_for = { "age#{person_index}" => [0] } + @hidden_in_check_answers = { "depends_on" => [{ "age#{person_index}_known" => 0 }, { "age#{person_index}_known" => 1 }] } + end + + ANSWER_OPTIONS = { "0" => { "value" => "Yes" }, "1" => { "value" => "No" } }.freeze +end diff --git a/spec/models/form/lettings/pages/person3_age_spec.rb b/spec/models/form/lettings/pages/person3_age_spec.rb index c764dd695..75ffab37e 100644 --- a/spec/models/form/lettings/pages/person3_age_spec.rb +++ b/spec/models/form/lettings/pages/person3_age_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::Person3Age, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [{"details_known_3"=>0}], + [{ "details_known_3" => 0 }], ) end -end \ No newline at end of file +end diff --git a/spec/models/form/lettings/pages/person6_age_spec.rb b/spec/models/form/lettings/pages/person6_age_spec.rb index 567b15ed4..a5f09800d 100644 --- a/spec/models/form/lettings/pages/person6_age_spec.rb +++ b/spec/models/form/lettings/pages/person6_age_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::Person6Age, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [{"details_known_6"=>0}], + [{ "details_known_6" => 0 }], ) end -end \ No newline at end of file +end diff --git a/spec/models/form/lettings/pages/person7_age_spec.rb b/spec/models/form/lettings/pages/person7_age_spec.rb index 3d0cf271e..d0b0f723b 100644 --- a/spec/models/form/lettings/pages/person7_age_spec.rb +++ b/spec/models/form/lettings/pages/person7_age_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::Person7Age, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [{"details_known_7"=>0}], + [{ "details_known_7" => 0 }], ) end -end \ No newline at end of file +end diff --git a/spec/models/form/lettings/pages/person8_age_spec.rb b/spec/models/form/lettings/pages/person8_age_spec.rb index 1227328f1..ba0786cbf 100644 --- a/spec/models/form/lettings/pages/person8_age_spec.rb +++ b/spec/models/form/lettings/pages/person8_age_spec.rb @@ -29,7 +29,7 @@ RSpec.describe Form::Lettings::Pages::Person8Age, type: :model do it "has correct depends_on" do expect(page.depends_on).to eq( - [{"details_known_8"=>0}], + [{ "details_known_8" => 0 }], ) end -end \ No newline at end of file +end diff --git a/spec/models/form/lettings/questions/age2_known_spec.rb b/spec/models/form/lettings/questions/age2_known_spec.rb index ba6ba7485..1a3ae9b89 100644 --- a/spec/models/form/lettings/questions/age2_known_spec.rb +++ b/spec/models/form/lettings/questions/age2_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age2Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age2_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age2_known") - end + let(:person_index) { 2 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age2_spec.rb b/spec/models/form/lettings/questions/age2_spec.rb index d40c9276b..0b159ff16 100644 --- a/spec/models/form/lettings/questions/age2_spec.rb +++ b/spec/models/form/lettings/questions/age2_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age2, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age2" } 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) diff --git a/spec/models/form/lettings/questions/age3_known_spec.rb b/spec/models/form/lettings/questions/age3_known_spec.rb index b23720e56..ef475aded 100644 --- a/spec/models/form/lettings/questions/age3_known_spec.rb +++ b/spec/models/form/lettings/questions/age3_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age3Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age3_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age3_known") - end + let(:person_index) { 3 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age3_spec.rb b/spec/models/form/lettings/questions/age3_spec.rb index 6b0dcc36a..685a41790 100644 --- a/spec/models/form/lettings/questions/age3_spec.rb +++ b/spec/models/form/lettings/questions/age3_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age3, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age3" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 3 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age4_known_spec.rb b/spec/models/form/lettings/questions/age4_known_spec.rb index 498ee40de..287275104 100644 --- a/spec/models/form/lettings/questions/age4_known_spec.rb +++ b/spec/models/form/lettings/questions/age4_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age4Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age4_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age4_known") - end + let(:person_index) { 4 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age4_spec.rb b/spec/models/form/lettings/questions/age4_spec.rb index 7c6b6c6c2..d19ffb11b 100644 --- a/spec/models/form/lettings/questions/age4_spec.rb +++ b/spec/models/form/lettings/questions/age4_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age4, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age4" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 4 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age5_known_spec.rb b/spec/models/form/lettings/questions/age5_known_spec.rb index 2dbb3733b..24b9f8c32 100644 --- a/spec/models/form/lettings/questions/age5_known_spec.rb +++ b/spec/models/form/lettings/questions/age5_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age5Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age5_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age5_known") - end + let(:person_index) { 5 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age5_spec.rb b/spec/models/form/lettings/questions/age5_spec.rb index 074f836f5..1037ef5e4 100644 --- a/spec/models/form/lettings/questions/age5_spec.rb +++ b/spec/models/form/lettings/questions/age5_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age5, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age5" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 5 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age6_known_spec.rb b/spec/models/form/lettings/questions/age6_known_spec.rb index ed9aa247d..f5297abfd 100644 --- a/spec/models/form/lettings/questions/age6_known_spec.rb +++ b/spec/models/form/lettings/questions/age6_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age6Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age6_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age6_known") - end + let(:person_index) { 6 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age6_spec.rb b/spec/models/form/lettings/questions/age6_spec.rb index 2aedbe7e3..56673f80b 100644 --- a/spec/models/form/lettings/questions/age6_spec.rb +++ b/spec/models/form/lettings/questions/age6_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age6, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age6" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 6 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age7_known_spec.rb b/spec/models/form/lettings/questions/age7_known_spec.rb index 43a83df61..704cf7a51 100644 --- a/spec/models/form/lettings/questions/age7_known_spec.rb +++ b/spec/models/form/lettings/questions/age7_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age7Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age7_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age7_known") - end + let(:person_index) { 7 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age7_spec.rb b/spec/models/form/lettings/questions/age7_spec.rb index 6586d488e..5e7a2dbcc 100644 --- a/spec/models/form/lettings/questions/age7_spec.rb +++ b/spec/models/form/lettings/questions/age7_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age7, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age7" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 7 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age8_known_spec.rb b/spec/models/form/lettings/questions/age8_known_spec.rb index e2ad50732..9c5ddd38e 100644 --- a/spec/models/form/lettings/questions/age8_known_spec.rb +++ b/spec/models/form/lettings/questions/age8_known_spec.rb @@ -1,15 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age8Known, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::AgeKnown, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age8_known" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } - - before do - allow(page).to receive(:id).and_return("age8_known") - end + let(:person_index) { 8 } it "has correct page" do expect(question.page).to eq(page) diff --git a/spec/models/form/lettings/questions/age8_spec.rb b/spec/models/form/lettings/questions/age8_spec.rb index e08f589d0..01721988c 100644 --- a/spec/models/form/lettings/questions/age8_spec.rb +++ b/spec/models/form/lettings/questions/age8_spec.rb @@ -1,11 +1,11 @@ require "rails_helper" -RSpec.describe Form::Lettings::Questions::Age8, type: :model do - subject(:question) { described_class.new(question_id, question_definition, page) } +RSpec.describe Form::Lettings::Questions::Age, type: :model do + subject(:question) { described_class.new(nil, question_definition, page, person_index:) } - let(:question_id) { "age8" } let(:question_definition) { nil } let(:page) { instance_double(Form::Page) } + let(:person_index) { 8 } it "has correct page" do expect(question.page).to eq(page)