From 3639815eb375402b6e6ad22f33c8c6daefec00ea Mon Sep 17 00:00:00 2001 From: Arthur Campbell Date: Wed, 26 Apr 2023 12:56:55 +0100 Subject: [PATCH] second pass --- spec/factories/page.rb | 10 ++++++++++ spec/factories/section.rb | 10 ++++++++++ spec/factories/subsection.rb | 10 ++++++++++ spec/models/form_handler_spec.rb | 34 ++------------------------------ 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/spec/factories/page.rb b/spec/factories/page.rb index 2204db3ac..fb70051e0 100644 --- a/spec/factories/page.rb +++ b/spec/factories/page.rb @@ -1,5 +1,15 @@ FactoryBot.define do factory :page, class: "Form::Page" do + id { "page_id" } initialize_with { new(id, nil, nil) } + trait :with_question do + transient do + question_id { nil } + + after :build do |page, evaluator| + page.questions = [build(:question, id: evaluator.question_id, page:)] + end + end + end end end diff --git a/spec/factories/section.rb b/spec/factories/section.rb index 92f691455..7e1dddd46 100644 --- a/spec/factories/section.rb +++ b/spec/factories/section.rb @@ -1,5 +1,15 @@ FactoryBot.define do factory :section, class: "Form::Section" do + id { "section_id" } initialize_with { new(id, nil, nil) } + trait :with_questions do + transient do + question_ids { nil } + end + + after :build do |section, evaluator| + section.subsections = [build(:subsection, :with_questions, question_ids: evaluator.question_ids, section:)] + end + end end end diff --git a/spec/factories/subsection.rb b/spec/factories/subsection.rb index d1949a369..b24922118 100644 --- a/spec/factories/subsection.rb +++ b/spec/factories/subsection.rb @@ -1,5 +1,15 @@ FactoryBot.define do factory :subsection, class: "Form::Subsection" do + id { "subsection_id" } initialize_with { new(id, nil, nil) } + trait :with_questions do + transient do + question_ids { [] } + + after :build do |subsection, evaluator| + subsection.pages = evaluator.question_ids.map { |id| build(:page, :with_question, question_id: id, subsection:) } + end + end + end end end diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index 7979b838d..283d2b1a7 100644 --- a/spec/models/form_handler_spec.rb +++ b/spec/models/form_handler_spec.rb @@ -254,38 +254,8 @@ RSpec.describe FormHandler do end it "inserts questions from previous years that do not appear in more recent years in the correct position" do - original_section = build( - :section, - id: "original_section", - subsections: [ - build( - :subsection, - id: "original_subsection", - pages: [ - build(:page, id: "1", questions: [build(:question, id: "1")]), - build(:page, id: "1a_deprecated", questions: [build(:question, id: "1a_deprecated")]), - build(:page, id: "2", questions: [build(:question, id: "2")]), - build(:page, id: "3", questions: [build(:question, id: "3")]), - ] - ) - ] - ) - new_section = build( - :section, - id: "new_section", - subsections: [ - build( - :subsection, - id: "new_subsection", - pages: [ - build(:page, id: "1", questions: [build(:question, id: "1")]), - build(:page, id: "2", questions: [build(:question, id: "2")]), - build(:page, id: "2a_new", questions: [build(:question, id: "2a_new")]), - build(:page, id: "3", questions: [build(:question, id: "3")]), - ] - ) - ] - ) + original_section = build(:section, :with_questions, question_ids: %w[1 1a_deprecated 2 3]) + new_section = build(:section, :with_questions, question_ids: %w[1 2 2a_new 3]) original_form = FormFactory.new(year: 1066, type: "sales") .with_sections([original_section]) .build