FactoryBot.define do
  factory :pool_repository do
    shard { Shard.by_name("default") }
    state :none

    before(:create) do |pool|
      pool.source_project = create(:project, :repository)
      pool.source_project.update!(pool_repository: pool)
    end

    trait :scheduled do
      state :scheduled
    end

    trait :failed do
      state :failed
    end

    trait :obsolete do
      state :obsolete
    end

    trait :ready do
      state :ready

      after(:create) do |pool|
        pool.create_object_pool
      end
    end
  end
end
