Module: RubyReactor::RSpec::AsyncTestHelpers

Defined in:
lib/ruby_reactor/rspec/async_test_helpers.rb

Overview

Single entry point TestSubject uses to detect and drain whichever async testing framework — Sidekiq::Testing fake mode or ActiveJob's :test queue adapter — is currently active, so the job-processing gate isn't hardcoded to one background processor.

Class Method Summary collapse

Class Method Details

.active?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/ruby_reactor/rspec/async_test_helpers.rb', line 10

def self.active?
  sidekiq_testing? || active_job_testing?
end

.active_job_testing?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/ruby_reactor/rspec/async_test_helpers.rb', line 18

def self.active_job_testing?
  ActiveJobHelpers.test_adapter?
end

.drain_async_jobs(max_iterations: 100) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/ruby_reactor/rspec/async_test_helpers.rb', line 22

def self.drain_async_jobs(max_iterations: 100)
  if sidekiq_testing?
    SidekiqHelpers.drain_async_jobs(max_iterations: max_iterations)
  elsif active_job_testing?
    ActiveJobHelpers.drain_async_jobs(max_iterations: max_iterations)
  end
end

.pending_async_jobsObject



30
31
32
33
34
35
36
37
38
# File 'lib/ruby_reactor/rspec/async_test_helpers.rb', line 30

def self.pending_async_jobs
  if sidekiq_testing?
    SidekiqHelpers.pending_async_jobs
  elsif active_job_testing?
    ActiveJobHelpers.pending_async_jobs
  else
    []
  end
end

.sidekiq_testing?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/ruby_reactor/rspec/async_test_helpers.rb', line 14

def self.sidekiq_testing?
  defined?(::Sidekiq::Testing) && ::Sidekiq::Testing.fake?
end