diff options
Diffstat (limited to 'spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb')
-rw-r--r-- | spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb b/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb index 2334439461e..058e0737a25 100644 --- a/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb +++ b/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb @@ -3,6 +3,8 @@ require 'spec_helper' describe Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob, :clean_gitlab_redis_queues do + using RSpec::Parameterized::TableSyntax + subject(:duplicate_job) do described_class.new(job, queue) end @@ -110,6 +112,36 @@ describe Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob, :clean_gitlab_r end end + describe 'droppable?' do + where(:idempotent, :duplicate, :feature_enabled) do + # [true, false].repeated_permutation(3) + [[true, true, true], + [true, true, false], + [true, false, true], + [true, false, false], + [false, true, true], + [false, true, false], + [false, false, true], + [false, false, false]] + end + + with_them do + before do + allow(AuthorizedProjectsWorker).to receive(:idempotent?).and_return(idempotent) + allow(duplicate_job).to receive(:duplicate?).and_return(duplicate) + stub_feature_flags(drop_duplicate_sidekiq_jobs: feature_enabled) + end + + it 'is droppable when all conditions are met' do + if idempotent && duplicate && feature_enabled + expect(duplicate_job).to be_droppable + else + expect(duplicate_job).not_to be_droppable + end + end + end + end + def set_idempotency_key(key, value = '1') Sidekiq.redis { |r| r.set(key, value) } end |