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 FactoryBot.define do
factory :page, class: "Form::Page" do factory :page, class: "Form::Page" do
id { "page_id" }
initialize_with { new(id, nil, nil) } 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
end end

10
spec/factories/section.rb

@ -1,5 +1,15 @@
FactoryBot.define do FactoryBot.define do
factory :section, class: "Form::Section" do factory :section, class: "Form::Section" do
id { "section_id" }
initialize_with { new(id, nil, nil) } 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
end end

10
spec/factories/subsection.rb

@ -1,5 +1,15 @@
FactoryBot.define do FactoryBot.define do
factory :subsection, class: "Form::Subsection" do factory :subsection, class: "Form::Subsection" do
id { "subsection_id" }
initialize_with { new(id, nil, nil) } 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
end end

34
spec/models/form_handler_spec.rb

@ -254,38 +254,8 @@ RSpec.describe FormHandler do
end end
it "inserts questions from previous years that do not appear in more recent years in the correct position" do it "inserts questions from previous years that do not appear in more recent years in the correct position" do
original_section = build( original_section = build(:section, :with_questions, question_ids: %w[1 1a_deprecated 2 3])
:section, new_section = build(:section, :with_questions, question_ids: %w[1 2 2a_new 3])
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_form = FormFactory.new(year: 1066, type: "sales") original_form = FormFactory.new(year: 1066, type: "sales")
.with_sections([original_section]) .with_sections([original_section])
.build .build

Loading…
Cancel
Save