require 'spec_helper' describe 'Every Sidekiq worker' do let(:workers) do root = Rails.root.join('app', 'workers') concerns = root.join('concerns').to_s workers = Dir[root.join('**', '*.rb')] .reject { |path| path.start_with?(concerns) } workers.map do |path| ns = Pathname.new(path).relative_path_from(root).to_s.gsub('.rb', '') ns.camelize.constantize end end it 'does not use the default queue' do workers.each do |worker| expect(worker.sidekiq_options['queue'].to_s).not_to eq('default') end end it 'uses the cronjob queue when the worker runs as a cronjob' do cron_workers = Settings.cron_jobs .map { |job_name, options| options['job_class'].constantize } .to_set workers.each do |worker| next unless cron_workers.include?(worker) expect(worker.sidekiq_options['queue'].to_s).to eq('cronjob') end end it 'defines the queue in the Sidekiq configuration file' do config = YAML.load_file(Rails.root.join('config', 'sidekiq_queues.yml').to_s) queue_names = config[:queues].map { |(queue, _)| queue }.to_set workers.each do |worker| expect(queue_names).to include(worker.sidekiq_options['queue'].to_s) end end end