1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
# frozen_string_literal: true
require_relative 'helper'
require 'active_record'
require 'action_mailer'
require 'sidekiq/rails'
require 'sidekiq/extensions/action_mailer'
require 'sidekiq/extensions/active_record'
Sidekiq.hook_rails!
class TestTesting < Sidekiq::Test
describe 'sidekiq testing' do
describe 'require/load sidekiq/testing.rb' do
before do
require 'sidekiq/testing'
end
after do
Sidekiq::Testing.disable!
end
it 'enables fake testing' do
Sidekiq::Testing.fake!
assert Sidekiq::Testing.enabled?
assert Sidekiq::Testing.fake?
refute Sidekiq::Testing.inline?
end
it 'enables fake testing in a block' do
Sidekiq::Testing.disable!
assert Sidekiq::Testing.disabled?
refute Sidekiq::Testing.fake?
Sidekiq::Testing.fake! do
assert Sidekiq::Testing.enabled?
assert Sidekiq::Testing.fake?
refute Sidekiq::Testing.inline?
end
refute Sidekiq::Testing.enabled?
refute Sidekiq::Testing.fake?
end
it 'disables testing in a block' do
Sidekiq::Testing.fake!
assert Sidekiq::Testing.fake?
Sidekiq::Testing.disable! do
refute Sidekiq::Testing.fake?
assert Sidekiq::Testing.disabled?
end
assert Sidekiq::Testing.fake?
assert Sidekiq::Testing.enabled?
end
end
describe 'require/load sidekiq/testing/inline.rb' do
before do
require 'sidekiq/testing/inline'
end
after do
Sidekiq::Testing.disable!
end
it 'enables inline testing' do
Sidekiq::Testing.inline!
assert Sidekiq::Testing.enabled?
assert Sidekiq::Testing.inline?
refute Sidekiq::Testing.fake?
end
it 'enables inline testing in a block' do
Sidekiq::Testing.disable!
assert Sidekiq::Testing.disabled?
refute Sidekiq::Testing.fake?
Sidekiq::Testing.inline! do
assert Sidekiq::Testing.enabled?
assert Sidekiq::Testing.inline?
end
refute Sidekiq::Testing.enabled?
refute Sidekiq::Testing.inline?
refute Sidekiq::Testing.fake?
end
end
end
describe 'with middleware' do
before do
require 'sidekiq/testing'
end
after do
Sidekiq::Testing.disable!
end
class AttributeWorker
include Sidekiq::Worker
class_attribute :count
self.count = 0
attr_accessor :foo
def perform
self.class.count += 1 if foo == :bar
end
end
class AttributeMiddleware
def call(worker, msg, queue)
worker.foo = :bar if worker.respond_to?(:foo=)
yield
end
end
it 'wraps the inlined worker with middleware' do
Sidekiq::Testing.server_middleware do |chain|
chain.add AttributeMiddleware
end
begin
Sidekiq::Testing.fake! do
AttributeWorker.perform_async
assert_equal 0, AttributeWorker.count
end
AttributeWorker.perform_one
assert_equal 1, AttributeWorker.count
Sidekiq::Testing.inline! do
AttributeWorker.perform_async
assert_equal 2, AttributeWorker.count
end
ensure
Sidekiq::Testing.server_middleware.clear
end
end
end
end
|