diff options
Diffstat (limited to 'spec/workers/project_destroy_worker_spec.rb')
-rw-r--r-- | spec/workers/project_destroy_worker_spec.rb | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/spec/workers/project_destroy_worker_spec.rb b/spec/workers/project_destroy_worker_spec.rb index 25508928bbf..d699393d7a0 100644 --- a/spec/workers/project_destroy_worker_spec.rb +++ b/spec/workers/project_destroy_worker_spec.rb @@ -2,15 +2,26 @@ require 'spec_helper' -RSpec.describe ProjectDestroyWorker do - let(:project) { create(:project, :repository, pending_delete: true) } - let!(:repository) { project.repository.raw } +RSpec.describe ProjectDestroyWorker, feature_category: :source_code_management do + let_it_be(:project) { create(:project, :repository, pending_delete: true) } + let_it_be(:repository) { project.repository.raw } - subject { described_class.new } + let(:user) { project.first_owner } + + subject(:worker) { described_class.new } + + include_examples 'an idempotent worker' do + let(:job_args) { [project.id, user.id, {}] } + + it 'does not change projects when run twice' do + expect { worker.perform(project.id, user.id, {}) }.to change { Project.count }.by(-1) + expect { worker.perform(project.id, user.id, {}) }.not_to change { Project.count } + end + end describe '#perform' do it 'deletes the project' do - subject.perform(project.id, project.first_owner.id, {}) + worker.perform(project.id, user.id, {}) expect(Project.all).not_to include(project) expect(repository).not_to exist @@ -18,13 +29,13 @@ RSpec.describe ProjectDestroyWorker do it 'does not raise error when project could not be found' do expect do - subject.perform(-1, project.first_owner.id, {}) + worker.perform(-1, user.id, {}) end.not_to raise_error end it 'does not raise error when user could not be found' do expect do - subject.perform(project.id, -1, {}) + worker.perform(project.id, -1, {}) end.not_to raise_error end end |