test/unit/job_handler_tests.rb in qs-0.5.0 vs test/unit/job_handler_tests.rb in qs-0.6.0
- old
+ new
@@ -1,60 +1,95 @@
require 'assert'
require 'qs/job_handler'
+require 'much-plugin'
+require 'qs'
require 'qs/message_handler'
+require 'qs/test_runner'
module Qs::JobHandler
class UnitTests < Assert::Context
+ include Qs::JobHandler::TestHelpers
+
desc "Qs::JobHandler"
setup do
+ Qs.init
@handler_class = Class.new{ include Qs::JobHandler }
end
+ teardown do
+ Qs.reset!
+ end
subject{ @handler_class }
+ should "use much-plugin" do
+ assert_includes MuchPlugin, Qs::Worker
+ end
+
should "be a message handler" do
assert_includes Qs::MessageHandler, subject
end
end
class InitTests < UnitTests
desc "when init"
setup do
- @runner = FakeRunner.new
- @handler = TestJobHandler.new(@runner)
+ @job = Factory.job
+ @runner = test_runner(TestJobHandler, :message => @job)
+ @handler = @runner.handler
end
subject{ @handler }
- should "know its job, job name and job created at" do
- assert_equal @runner.message, subject.public_job
- assert_equal subject.public_job.name, subject.public_job_name
- assert_equal subject.public_job.created_at, subject.public_job_created_at
+ should "have private helpers for accessing job attrs" do
+ assert_equal @job, subject.instance_eval{ job }
+ assert_equal @job.name, subject.instance_eval{ job_name }
+ assert_equal @job.created_at, subject.instance_eval{ job_created_at }
end
- should "have a custom inspect" do
- reference = '0x0%x' % (subject.object_id << 1)
- exp = "#<#{subject.class}:#{reference} " \
- "@job=#{@handler.public_job.inspect}>"
- assert_equal exp, subject.inspect
+ end
+
+ class TestHelpersTests < UnitTests
+ desc "TestHelpers"
+ setup do
+ Qs.init
+ job = Factory.job
+ @args = {
+ :message => job,
+ :params => job.params
+ }
+
+ context_class = Class.new{ include Qs::JobHandler::TestHelpers }
+ @context = context_class.new
end
+ teardown do
+ Qs.reset!
+ end
+ subject{ @context }
- end
+ should have_imeths :test_runner, :test_handler
- class TestJobHandler
- include Qs::JobHandler
+ should "build a test runner for a given handler class" do
+ runner = subject.test_runner(@handler_class, @args)
- def public_job; job; end
- def public_job_name; job_name; end
- def public_job_created_at; job_created_at; end
- end
+ assert_kind_of Qs::TestRunner, runner
+ assert_equal @handler_class, runner.handler_class
+ assert_equal @args[:message], runner.message
+ assert_equal @args[:params], runner.params
+ end
- class FakeRunner
- attr_accessor :message
+ should "return an initialized handler instance" do
+ handler = subject.test_handler(@handler_class, @args)
+ assert_kind_of @handler_class, handler
- def initialize
- @message = Factory.job
+ exp = subject.test_runner(@handler_class, @args).handler
+ assert_equal exp, handler
end
+
+ end
+
+ class TestJobHandler
+ include Qs::JobHandler
+
end
end