mardi 3 octobre 2017

FactoryGirl won't create nested objects without reloading parent

I'm trying to use rspec and FactoryGirl for my acceptance tests in Rails app.

I have Program, ProgramLesson, Course, Lesson objects.

Here are factories for those things:

    FactoryGirl.define do
      factory :program do
        after(:create) do |object|
          create_list(:program_lesson, 10, program: object)
          create(:course, program: object)
        end
    end

    FactoryGirl.define do
      factory :course do
        program
        after(:create) { |object| object.program.program_lessons.each { |pl| create(:lesson, course: object, program_lesson: 
      end    
    end

So, factories are creating program, then program_lessons for that program, then course that belongs_to program, and then course.lessons which belong to course and to program_lesson.

The problem is that course.lessons will only be created when I use byebug and program.reload before creating them. Why is this happening?

Aucun commentaire:

Enregistrer un commentaire