Browse Source

second pass

pull/1568/head
Arthur Campbell 3 years ago
parent
commit
3639815eb3
  1. 10
      spec/factories/page.rb
  2. 10
      spec/factories/section.rb
  3. 10
      spec/factories/subsection.rb
  4. 34
      spec/models/form_handler_spec.rb

10
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

10
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

10
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

34
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

Loading…
Cancel
Save