Skip to content

Change Sidekiq testing mode to `fake` instead of `inline`

Per https://github.com/mperham/sidekiq/wiki/Testing, Sidekiq::Testing.fake! is default mode so we shouldn't call it explicitely.

Tests like the ones from Projects::DestroyService:

context 'Sidekiq inline' do
  before do
    # Run sidekiq immediatly to check that renamed repository will be removed
    Sidekiq::Testing.inline! { destroy_project(project, user, {}) }
  end

  it { expect(Project.all).not_to include(project) }
  it { expect(Dir.exist?(path)).to be_falsey }
  it { expect(Dir.exist?(remove_path)).to be_falsey }
end

context 'Sidekiq fake' do
  before do
    # Dont run sidekiq to check if renamed repository exists
    Sidekiq::Testing.fake! { destroy_project(project, user, {}) }
  end

  it { expect(Project.all).not_to include(project) }
  it { expect(Dir.exist?(path)).to be_falsey }
  it { expect(Dir.exist?(remove_path)).to be_truthy }
end

could be changed to:

context 'After background job is done' do
  before do
    perform_enqueued_jobs { destroy_project(project, user, {}) }
  end

  it { expect(Project.all).not_to include(project) }
  it { expect(Dir.exist?(path)).to be_falsey }
  it { expect(Dir.exist?(remove_path)).to be_falsey }
end

context 'Before background job is done' do
  before do
    destroy_project(project, user, {})
  end

  it { expect(Project.all).not_to include(project) }
  it { expect(Dir.exist?(path)).to be_falsey }
  it { expect(Dir.exist?(remove_path)).to be_truthy }
end
Edited by Rémy Coutable