Skip to content

Commit

Permalink
Merge pull request rails#19052 from square/testing-singleton
Browse files Browse the repository at this point in the history
`ActiveJob::QueueAdapters::TestAdapter` is now a singleton
  • Loading branch information
rafaelfranca committed Feb 24, 2015
2 parents 5cde302 + 802f855 commit 2948404
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 31 deletions.
2 changes: 0 additions & 2 deletions activejob/lib/active_job/queue_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ module ClassMethods
def queue_adapter=(name_or_adapter)
@@queue_adapter = \
case name_or_adapter
when :test
ActiveJob::QueueAdapters::TestAdapter.new
when Symbol, String
load_adapter(name_or_adapter)
else
Expand Down
52 changes: 26 additions & 26 deletions activejob/lib/active_job/queue_adapters/test_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,39 @@ module QueueAdapters
#
# Rails.application.config.active_job.queue_adapter = :test
class TestAdapter
delegate :name, to: :class
attr_accessor(:perform_enqueued_jobs, :perform_enqueued_at_jobs, :filter)
attr_writer(:enqueued_jobs, :performed_jobs)
class << self
attr_accessor(:perform_enqueued_jobs, :perform_enqueued_at_jobs, :filter)
attr_writer(:enqueued_jobs, :performed_jobs)

def initialize
self.perform_enqueued_jobs = false
self.perform_enqueued_at_jobs = false
end
# Provides a store of all the enqueued jobs with the TestAdapter so you can check them.
def enqueued_jobs
@enqueued_jobs ||= []
end

# Provides a store of all the enqueued jobs with the TestAdapter so you can check them.
def enqueued_jobs
@enqueued_jobs ||= []
end
# Provides a store of all the performed jobs with the TestAdapter so you can check them.
def performed_jobs
@performed_jobs ||= []
end

# Provides a store of all the performed jobs with the TestAdapter so you can check them.
def performed_jobs
@performed_jobs ||= []
end
def enqueue(job) #:nodoc:
return if filtered?(job)

def enqueue(job) #:nodoc:
return if filtered?(job)
job_data = job_to_hash(job)
enqueue_or_perform(perform_enqueued_jobs, job, job_data)
end

job_data = { job: job.class, args: job.serialize['arguments'], queue: job.queue_name }
enqueue_or_perform(perform_enqueued_jobs, job, job_data)
end
def enqueue_at(job, timestamp) #:nodoc:
return if filtered?(job)

def enqueue_at(job, timestamp) #:nodoc:
return if filtered?(job)
job_data = job_to_hash(job, at: timestamp)
enqueue_or_perform(perform_enqueued_at_jobs, job, job_data)
end

job_data = { job: job.class, args: job.serialize['arguments'], queue: job.queue_name, at: timestamp }
enqueue_or_perform(perform_enqueued_at_jobs, job, job_data)
end
private

private
def job_to_hash(job, extras = {})
{ job: job.class, args: job.serialize.fetch('arguments'), queue: job.queue_name }.merge(extras)
end

def enqueue_or_perform(perform, job, job_data)
if perform
Expand All @@ -57,6 +56,7 @@ def enqueue_or_perform(perform, job, job_data)
def filtered?(job)
filter && !Array(filter).include?(job.class)
end
end
end
end
end
6 changes: 4 additions & 2 deletions activejob/lib/active_job/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ module TestHelper

included do
def before_setup
@old_queue_adapter = queue_adapter
@old_queue_adapter = queue_adapter
ActiveJob::Base.queue_adapter = :test
clear_enqueued_jobs
clear_performed_jobs
queue_adapter.perform_enqueued_jobs = false
queue_adapter.perform_enqueued_at_jobs = false
super
end

Expand Down Expand Up @@ -281,7 +283,7 @@ def clear_performed_jobs

def enqueued_jobs_size(only: nil)
if only
enqueued_jobs.select { |job| job[:job] == only }.size
enqueued_jobs.select { |job| job.fetch(:job) == only }.size
else
enqueued_jobs.size
end
Expand Down
2 changes: 1 addition & 1 deletion activejob/test/cases/test_case_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ def test_include_helper
end

def test_set_test_adapter
assert_instance_of ActiveJob::QueueAdapters::TestAdapter, self.queue_adapter
assert_equal ActiveJob::QueueAdapters::TestAdapter, self.queue_adapter
end
end

0 comments on commit 2948404

Please sign in to comment.