summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb')
-rw-r--r--spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb b/spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb
new file mode 100644
index 00000000000..98847885e62
--- /dev/null
+++ b/spec/lib/gitlab/sidekiq_middleware/extra_done_log_metadata_spec.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Gitlab::SidekiqMiddleware::ExtraDoneLogMetadata do
+ # Cannot use Class.new for this as ApplicationWorker will need the class to
+ # have a name during `included do`.
+ let(:worker) { AdminEmailWorker.new }
+
+ let(:worker_without_application_worker) do
+ Class.new do
+ end.new
+ end
+
+ subject { described_class.new }
+
+ let(:job) { { 'jid' => 123 } }
+ let(:queue) { 'test_queue' }
+
+ describe '#call' do
+ it 'merges Application#logging_extras in to job' do
+ worker.log_extra_metadata_on_done(:key1, 15)
+ worker.log_extra_metadata_on_done(:key2, 16)
+ expect { |b| subject.call(worker, job, queue, &b) }.to yield_control
+
+ expect(job).to eq({ 'jid' => 123, 'extra.admin_email_worker.key1' => 15, 'extra.admin_email_worker.key2' => 16 })
+ end
+
+ it 'does not raise when the worker does not respond to #done_log_extra_metadata' do
+ expect { |b| subject.call(worker_without_application_worker, job, queue, &b) }.to yield_control
+
+ expect(job).to eq({ 'jid' => 123 })
+ end
+ end
+end