1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Easier way to test enqueuing specific ActionMailer and ActiveRecord delayed jobs

This commit is contained in:
fatkodima 2019-09-29 15:22:11 +03:00 committed by Mike Perham
parent c0cabc6dec
commit 2c5ab340c7
3 changed files with 32 additions and 0 deletions

View file

@ -5,6 +5,11 @@
HEAD
---------
- Easier way to test enqueuing specific ActionMailer and ActiveRecord delayed jobs. Instead of manually
parsing embedded class, you can now test by fetching jobs for specific classes. [fatkodima, #4292]
```ruby
assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs_for(FooMailer).size
```
- **Dark Mode support in Web UI** (further design polish welcome!) [#4227, mperham,
fatkodima, silent-e]
- **Job-specific log levels**, allowing you to turn on debugging for

View file

@ -323,6 +323,18 @@ module Sidekiq
end
end
end
module TestingExtensions
def jobs_for(klass)
jobs.select do |job|
marshalled = job["args"][0]
marshalled.index(klass.to_s) && YAML.load(marshalled)[0] == klass
end
end
end
Sidekiq::Extensions::DelayedMailer.extend(TestingExtensions)
Sidekiq::Extensions::DelayedModel.extend(TestingExtensions)
end
if defined?(::Rails) && Rails.respond_to?(:env) && !Rails.env.test?

View file

@ -78,6 +78,21 @@ describe 'Sidekiq::Testing.fake' do
Something.delay.foo(Date.today)
assert_equal 1, Sidekiq::Extensions::DelayedClass.jobs.size
end
class BarMailer < ActionMailer::Base
def foo(str)
str
end
end
it 'returns enqueued jobs for specific classes' do
assert_equal 0, Sidekiq::Extensions::DelayedClass.jobs.size
FooMailer.delay.bar('hello!')
BarMailer.delay.foo('hello!')
assert_equal 2, Sidekiq::Extensions::DelayedMailer.jobs.size
assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs_for(FooMailer).size
assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs_for(BarMailer).size
end
end
it 'stubs the enqueue call' do