diff options
Diffstat (limited to 'spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb')
-rw-r--r-- | spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb b/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb index e776c098fa0..31571b1ffb9 100644 --- a/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb +++ b/spec/support/shared_examples/services/issuable/destroy_service_shared_examples.rb @@ -1,21 +1,33 @@ # frozen_string_literal: true -shared_examples_for 'service deleting todos' do +shared_examples_for 'service scheduling async deletes' do it 'destroys associated todos asynchronously' do - expect(TodosDestroyer::DestroyedIssuableWorker) + expect(worker_class) .to receive(:perform_async) .with(issuable.id, issuable.class.name) subject.execute(issuable) end -end -shared_examples_for 'service deleting label links' do - it 'destroys associated label links asynchronously' do - expect(Issuable::LabelLinksDestroyWorker) + it 'works inside a transaction' do + expect(worker_class) .to receive(:perform_async) .with(issuable.id, issuable.class.name) - subject.execute(issuable) + ApplicationRecord.transaction do + subject.execute(issuable) + end + end +end + +shared_examples_for 'service deleting todos' do + it_behaves_like 'service scheduling async deletes' do + let(:worker_class) { TodosDestroyer::DestroyedIssuableWorker } + end +end + +shared_examples_for 'service deleting label links' do + it_behaves_like 'service scheduling async deletes' do + let(:worker_class) { Issuable::LabelLinksDestroyWorker } end end |