qs 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +2 -2
- data/{LICENSE.txt → LICENSE} +0 -0
- data/bench/report.rb +18 -21
- data/bench/report.txt +4 -4
- data/lib/qs/daemon.rb +107 -181
- data/lib/qs/daemon_data.rb +22 -23
- data/lib/qs/event_handler.rb +21 -5
- data/lib/qs/job_handler.rb +21 -5
- data/lib/qs/message_handler.rb +23 -19
- data/lib/qs/payload_handler.rb +2 -8
- data/lib/qs/qs_runner.rb +4 -8
- data/lib/qs/runner.rb +6 -7
- data/lib/qs/test_runner.rb +19 -19
- data/lib/qs/version.rb +1 -1
- data/lib/qs/worker.rb +88 -0
- data/qs.gemspec +4 -2
- data/test/support/client_spy.rb +43 -0
- data/test/support/factory.rb +2 -1
- data/test/support/message_handler.rb +17 -0
- data/test/system/daemon_tests.rb +18 -21
- data/test/unit/daemon_data_tests.rb +72 -55
- data/test/unit/daemon_tests.rb +122 -259
- data/test/unit/dispatch_job_handler_tests.rb +1 -1
- data/test/unit/event_handler_tests.rb +58 -25
- data/test/unit/job_handler_tests.rb +57 -22
- data/test/unit/message_handler_tests.rb +76 -24
- data/test/unit/payload_handler_tests.rb +12 -21
- data/test/unit/qs_runner_tests.rb +7 -9
- data/test/unit/runner_tests.rb +11 -8
- data/test/unit/test_runner_tests.rb +14 -13
- data/test/unit/worker_tests.rb +152 -0
- metadata +41 -25
- data/lib/qs/event_handler_test_helpers.rb +0 -17
- data/lib/qs/job_handler_test_helpers.rb +0 -17
- data/test/unit/event_handler_test_helpers_tests.rb +0 -55
- data/test/unit/job_handler_test_helper_tests.rb +0 -55
@@ -1,18 +1,30 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'qs/event_handler'
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'much-plugin'
|
5
|
+
require 'qs'
|
5
6
|
require 'qs/message_handler'
|
7
|
+
require 'qs/test_runner'
|
6
8
|
|
7
9
|
module Qs::EventHandler
|
8
10
|
|
9
11
|
class UnitTests < Assert::Context
|
12
|
+
include Qs::EventHandler::TestHelpers
|
13
|
+
|
10
14
|
desc "Qs::EventHandler"
|
11
15
|
setup do
|
16
|
+
Qs.init
|
12
17
|
@handler_class = Class.new{ include Qs::EventHandler }
|
13
18
|
end
|
19
|
+
teardown do
|
20
|
+
Qs.reset!
|
21
|
+
end
|
14
22
|
subject{ @handler_class }
|
15
23
|
|
24
|
+
should "use much-plugin" do
|
25
|
+
assert_includes MuchPlugin, Qs::Worker
|
26
|
+
end
|
27
|
+
|
16
28
|
should "be a message handler" do
|
17
29
|
assert_includes Qs::MessageHandler, subject
|
18
30
|
end
|
@@ -22,42 +34,63 @@ module Qs::EventHandler
|
|
22
34
|
class InitTests < UnitTests
|
23
35
|
desc "when init"
|
24
36
|
setup do
|
25
|
-
@
|
26
|
-
@
|
37
|
+
@event = Factory.event
|
38
|
+
@runner = test_runner(TestEventHandler, :message => @event)
|
39
|
+
@handler = @runner.handler
|
27
40
|
end
|
28
41
|
subject{ @handler }
|
29
42
|
|
30
|
-
should "
|
31
|
-
assert_equal @
|
32
|
-
assert_equal
|
33
|
-
assert_equal
|
34
|
-
assert_equal
|
43
|
+
should "have private helpers for accessing event attrs" do
|
44
|
+
assert_equal @event, subject.instance_eval{ event }
|
45
|
+
assert_equal @event.channel, subject.instance_eval{ event_channel }
|
46
|
+
assert_equal @event.name, subject.instance_eval{ event_name }
|
47
|
+
assert_equal @event.published_at, subject.instance_eval{ event_published_at }
|
35
48
|
end
|
36
49
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
50
|
+
end
|
51
|
+
|
52
|
+
class TestHelpersTests < UnitTests
|
53
|
+
desc "TestHelpers"
|
54
|
+
setup do
|
55
|
+
Qs.init
|
56
|
+
event = Factory.event
|
57
|
+
@args = {
|
58
|
+
:message => event,
|
59
|
+
:params => event.params
|
60
|
+
}
|
61
|
+
|
62
|
+
context_class = Class.new{ include Qs::EventHandler::TestHelpers }
|
63
|
+
@context = context_class.new
|
42
64
|
end
|
65
|
+
teardown do
|
66
|
+
Qs.reset!
|
67
|
+
end
|
68
|
+
subject{ @context }
|
43
69
|
|
44
|
-
|
70
|
+
should have_imeths :test_runner, :test_handler
|
45
71
|
|
46
|
-
|
47
|
-
|
72
|
+
should "build a test runner for a given handler class" do
|
73
|
+
runner = subject.test_runner(@handler_class, @args)
|
48
74
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
75
|
+
assert_kind_of Qs::TestRunner, runner
|
76
|
+
assert_equal @handler_class, runner.handler_class
|
77
|
+
assert_equal @args[:message], runner.message
|
78
|
+
assert_equal @args[:params], runner.params
|
79
|
+
end
|
54
80
|
|
55
|
-
|
56
|
-
|
81
|
+
should "return an initialized handler instance" do
|
82
|
+
handler = subject.test_handler(@handler_class, @args)
|
83
|
+
assert_kind_of @handler_class, handler
|
57
84
|
|
58
|
-
|
59
|
-
|
85
|
+
exp = subject.test_runner(@handler_class, @args).handler
|
86
|
+
assert_equal exp, handler
|
60
87
|
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
class TestEventHandler
|
92
|
+
include Qs::EventHandler
|
93
|
+
|
61
94
|
end
|
62
95
|
|
63
96
|
end
|
@@ -1,17 +1,30 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'qs/job_handler'
|
3
3
|
|
4
|
+
require 'much-plugin'
|
5
|
+
require 'qs'
|
4
6
|
require 'qs/message_handler'
|
7
|
+
require 'qs/test_runner'
|
5
8
|
|
6
9
|
module Qs::JobHandler
|
7
10
|
|
8
11
|
class UnitTests < Assert::Context
|
12
|
+
include Qs::JobHandler::TestHelpers
|
13
|
+
|
9
14
|
desc "Qs::JobHandler"
|
10
15
|
setup do
|
16
|
+
Qs.init
|
11
17
|
@handler_class = Class.new{ include Qs::JobHandler }
|
12
18
|
end
|
19
|
+
teardown do
|
20
|
+
Qs.reset!
|
21
|
+
end
|
13
22
|
subject{ @handler_class }
|
14
23
|
|
24
|
+
should "use much-plugin" do
|
25
|
+
assert_includes MuchPlugin, Qs::Worker
|
26
|
+
end
|
27
|
+
|
15
28
|
should "be a message handler" do
|
16
29
|
assert_includes Qs::MessageHandler, subject
|
17
30
|
end
|
@@ -21,40 +34,62 @@ module Qs::JobHandler
|
|
21
34
|
class InitTests < UnitTests
|
22
35
|
desc "when init"
|
23
36
|
setup do
|
24
|
-
@
|
25
|
-
@
|
37
|
+
@job = Factory.job
|
38
|
+
@runner = test_runner(TestJobHandler, :message => @job)
|
39
|
+
@handler = @runner.handler
|
26
40
|
end
|
27
41
|
subject{ @handler }
|
28
42
|
|
29
|
-
should "
|
30
|
-
assert_equal @
|
31
|
-
assert_equal
|
32
|
-
assert_equal
|
43
|
+
should "have private helpers for accessing job attrs" do
|
44
|
+
assert_equal @job, subject.instance_eval{ job }
|
45
|
+
assert_equal @job.name, subject.instance_eval{ job_name }
|
46
|
+
assert_equal @job.created_at, subject.instance_eval{ job_created_at }
|
33
47
|
end
|
34
48
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
49
|
+
end
|
50
|
+
|
51
|
+
class TestHelpersTests < UnitTests
|
52
|
+
desc "TestHelpers"
|
53
|
+
setup do
|
54
|
+
Qs.init
|
55
|
+
job = Factory.job
|
56
|
+
@args = {
|
57
|
+
:message => job,
|
58
|
+
:params => job.params
|
59
|
+
}
|
60
|
+
|
61
|
+
context_class = Class.new{ include Qs::JobHandler::TestHelpers }
|
62
|
+
@context = context_class.new
|
40
63
|
end
|
64
|
+
teardown do
|
65
|
+
Qs.reset!
|
66
|
+
end
|
67
|
+
subject{ @context }
|
41
68
|
|
42
|
-
|
69
|
+
should have_imeths :test_runner, :test_handler
|
43
70
|
|
44
|
-
|
45
|
-
|
71
|
+
should "build a test runner for a given handler class" do
|
72
|
+
runner = subject.test_runner(@handler_class, @args)
|
46
73
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
74
|
+
assert_kind_of Qs::TestRunner, runner
|
75
|
+
assert_equal @handler_class, runner.handler_class
|
76
|
+
assert_equal @args[:message], runner.message
|
77
|
+
assert_equal @args[:params], runner.params
|
78
|
+
end
|
51
79
|
|
52
|
-
|
53
|
-
|
80
|
+
should "return an initialized handler instance" do
|
81
|
+
handler = subject.test_handler(@handler_class, @args)
|
82
|
+
assert_kind_of @handler_class, handler
|
54
83
|
|
55
|
-
|
56
|
-
|
84
|
+
exp = subject.test_runner(@handler_class, @args).handler
|
85
|
+
assert_equal exp, handler
|
57
86
|
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
class TestJobHandler
|
91
|
+
include Qs::JobHandler
|
92
|
+
|
58
93
|
end
|
59
94
|
|
60
95
|
end
|
@@ -1,13 +1,22 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'qs/message_handler'
|
3
3
|
|
4
|
+
require 'much-plugin'
|
5
|
+
require 'test/support/message_handler'
|
6
|
+
|
4
7
|
module Qs::MessageHandler
|
5
8
|
|
6
9
|
class UnitTests < Assert::Context
|
10
|
+
include Qs::MessageHandler::TestHelpers
|
11
|
+
|
7
12
|
desc "Qs::MessageHandler"
|
8
13
|
setup do
|
14
|
+
Qs.init
|
9
15
|
@handler_class = Class.new{ include Qs::MessageHandler }
|
10
16
|
end
|
17
|
+
teardown do
|
18
|
+
Qs.reset!
|
19
|
+
end
|
11
20
|
subject{ @handler_class }
|
12
21
|
|
13
22
|
should have_imeths :timeout
|
@@ -21,6 +30,10 @@ module Qs::MessageHandler
|
|
21
30
|
should have_imeths :prepend_before_init, :prepend_after_init
|
22
31
|
should have_imeths :prepend_before_run, :prepend_after_run
|
23
32
|
|
33
|
+
should "use much-plugin" do
|
34
|
+
assert_includes MuchPlugin, Qs::Worker
|
35
|
+
end
|
36
|
+
|
24
37
|
should "allow reading/writing its timeout" do
|
25
38
|
assert_nil subject.timeout
|
26
39
|
value = Factory.integer
|
@@ -147,20 +160,20 @@ module Qs::MessageHandler
|
|
147
160
|
class InitTests < UnitTests
|
148
161
|
desc "when init"
|
149
162
|
setup do
|
150
|
-
@runner =
|
151
|
-
@handler =
|
163
|
+
@runner = test_runner(TestMessageHandler)
|
164
|
+
@handler = @runner.handler
|
152
165
|
end
|
153
166
|
subject{ @handler }
|
154
167
|
|
155
|
-
should have_imeths :
|
168
|
+
should have_imeths :qs_init, :init!, :qs_run, :run!
|
169
|
+
should have_imeths :qs_run_callback
|
156
170
|
|
157
171
|
should "know its params and logger" do
|
158
|
-
assert_equal @runner.params, subject.public_params
|
159
172
|
assert_equal @runner.logger, subject.public_logger
|
173
|
+
assert_equal @runner.params, subject.public_params
|
160
174
|
end
|
161
175
|
|
162
|
-
should "
|
163
|
-
subject.init
|
176
|
+
should "have called `init!` and its before/after init callbacks" do
|
164
177
|
assert_equal 1, subject.first_before_init_call_order
|
165
178
|
assert_equal 2, subject.second_before_init_call_order
|
166
179
|
assert_equal 3, subject.init_call_order
|
@@ -168,17 +181,65 @@ module Qs::MessageHandler
|
|
168
181
|
assert_equal 5, subject.second_after_init_call_order
|
169
182
|
end
|
170
183
|
|
171
|
-
should "
|
172
|
-
subject.
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
184
|
+
should "not have called `run!` and its before/after run callbacks" do
|
185
|
+
assert_nil subject.first_before_run_call_order
|
186
|
+
assert_nil subject.second_before_run_call_order
|
187
|
+
assert_nil subject.run_call_order
|
188
|
+
assert_nil subject.first_after_run_call_order
|
189
|
+
assert_nil subject.second_after_run_call_order
|
190
|
+
end
|
191
|
+
|
192
|
+
should "run its callbacks with `qs_run_callback`" do
|
193
|
+
subject.qs_run_callback 'before_run'
|
194
|
+
assert_equal 6, subject.first_before_run_call_order
|
195
|
+
assert_equal 7, subject.second_before_run_call_order
|
196
|
+
end
|
197
|
+
|
198
|
+
should "know if it is equal to another message handler" do
|
199
|
+
handler = TestMessageHandler.new(@runner)
|
200
|
+
assert_equal handler, subject
|
201
|
+
|
202
|
+
handler = Class.new{ include Qs::MessageHandler }.new(Factory.string)
|
203
|
+
assert_not_equal handler, subject
|
204
|
+
end
|
205
|
+
|
206
|
+
end
|
207
|
+
|
208
|
+
class RunTests < InitTests
|
209
|
+
desc "and run"
|
210
|
+
setup do
|
211
|
+
@handler.qs_run
|
212
|
+
end
|
213
|
+
|
214
|
+
should "call `run!` and it's callbacks" do
|
215
|
+
assert_equal 6, subject.first_before_run_call_order
|
216
|
+
assert_equal 7, subject.second_before_run_call_order
|
217
|
+
assert_equal 8, subject.run_call_order
|
218
|
+
assert_equal 9, subject.first_after_run_call_order
|
219
|
+
assert_equal 10, subject.second_after_run_call_order
|
220
|
+
end
|
221
|
+
|
222
|
+
end
|
223
|
+
|
224
|
+
class PrivateHelpersTests < InitTests
|
225
|
+
setup do
|
226
|
+
@something = Factory.string
|
227
|
+
end
|
228
|
+
|
229
|
+
should "call to the runner for its logger" do
|
230
|
+
stub_runner_with_something_for(:logger)
|
231
|
+
assert_equal @runner.logger, subject.instance_eval{ logger }
|
178
232
|
end
|
179
233
|
|
180
|
-
should "
|
181
|
-
|
234
|
+
should "call to the runner for its params" do
|
235
|
+
stub_runner_with_something_for(:params)
|
236
|
+
assert_equal @runner.params, subject.instance_eval{ params }
|
237
|
+
end
|
238
|
+
|
239
|
+
private
|
240
|
+
|
241
|
+
def stub_runner_with_something_for(meth)
|
242
|
+
Assert.stub(@runner, meth){ @something }
|
182
243
|
end
|
183
244
|
|
184
245
|
end
|
@@ -223,13 +284,4 @@ module Qs::MessageHandler
|
|
223
284
|
end
|
224
285
|
end
|
225
286
|
|
226
|
-
class FakeRunner
|
227
|
-
attr_accessor :params, :logger
|
228
|
-
|
229
|
-
def initialize
|
230
|
-
@params = Factory.string
|
231
|
-
@logger = Factory.string
|
232
|
-
end
|
233
|
-
end
|
234
|
-
|
235
287
|
end
|
@@ -142,21 +142,6 @@ class Qs::PayloadHandler
|
|
142
142
|
|
143
143
|
end
|
144
144
|
|
145
|
-
class RunWithExceptionWhileDebuggingTests < RunWithExceptionSetupTests
|
146
|
-
desc "and run with an exception"
|
147
|
-
setup do
|
148
|
-
ENV['QS_DEBUG'] = '1'
|
149
|
-
end
|
150
|
-
teardown do
|
151
|
-
ENV.delete('QS_DEBUG')
|
152
|
-
end
|
153
|
-
|
154
|
-
should "raise the exception" do
|
155
|
-
assert_raises(@route_exception.class){ @payload_handler.run }
|
156
|
-
end
|
157
|
-
|
158
|
-
end
|
159
|
-
|
160
145
|
class LoggingJobSetupTests < InitSetupTests
|
161
146
|
desc "and run with a job queue item"
|
162
147
|
setup do
|
@@ -210,9 +195,11 @@ class Qs::PayloadHandler
|
|
210
195
|
should "log the error" do
|
211
196
|
logger_spy = subject.logger
|
212
197
|
exception = @queue_item.exception
|
213
|
-
|
214
|
-
exp = "[Qs] #{exception.class}: #{exception.message}\n#{backtrace}"
|
198
|
+
exp = "[Qs] #{exception.class}: #{exception.message}"
|
215
199
|
assert_equal exp, logger_spy.verbose.error_logged.first
|
200
|
+
exception.backtrace.each do |l|
|
201
|
+
assert_includes "[Qs] #{l}", logger_spy.verbose.error_logged
|
202
|
+
end
|
216
203
|
|
217
204
|
exp = JobSummaryLine.new(@job, {
|
218
205
|
'time' => @queue_item.time_taken,
|
@@ -282,9 +269,11 @@ class Qs::PayloadHandler
|
|
282
269
|
should "log the error" do
|
283
270
|
logger_spy = subject.logger
|
284
271
|
exception = @queue_item.exception
|
285
|
-
|
286
|
-
exp = "[Qs] #{exception.class}: #{exception.message}\n#{backtrace}"
|
272
|
+
exp = "[Qs] #{exception.class}: #{exception.message}"
|
287
273
|
assert_equal exp, logger_spy.verbose.error_logged.first
|
274
|
+
exception.backtrace.each do |l|
|
275
|
+
assert_includes "[Qs] #{l}", logger_spy.verbose.error_logged
|
276
|
+
end
|
288
277
|
|
289
278
|
exp = EventSummaryLine.new(@event, {
|
290
279
|
'time' => @queue_item.time_taken,
|
@@ -320,9 +309,11 @@ class Qs::PayloadHandler
|
|
320
309
|
|
321
310
|
logger_spy = subject.logger
|
322
311
|
exception = @queue_item.exception
|
323
|
-
|
324
|
-
exp = "[Qs] #{exception.class}: #{exception.message}\n#{backtrace}"
|
312
|
+
exp = "[Qs] #{exception.class}: #{exception.message}"
|
325
313
|
assert_equal exp, logger_spy.verbose.error_logged.first
|
314
|
+
exception.backtrace.each do |l|
|
315
|
+
assert_includes "[Qs] #{l}", logger_spy.verbose.error_logged
|
316
|
+
end
|
326
317
|
|
327
318
|
exp = UnknownSummaryLine.new({
|
328
319
|
'time' => @queue_item.time_taken,
|
@@ -10,7 +10,8 @@ class Qs::QsRunner
|
|
10
10
|
desc "Qs::QsRunner"
|
11
11
|
setup do
|
12
12
|
Qs.config.timeout = Factory.integer
|
13
|
-
@
|
13
|
+
@handler_class = TestMessageHandler
|
14
|
+
@runner_class = Qs::QsRunner
|
14
15
|
end
|
15
16
|
teardown do
|
16
17
|
Qs.reset!
|
@@ -27,7 +28,6 @@ class Qs::QsRunner
|
|
27
28
|
class InitTests < UnitTests
|
28
29
|
desc "when init"
|
29
30
|
setup do
|
30
|
-
@handler_class = TestMessageHandler
|
31
31
|
@runner = @runner_class.new(@handler_class)
|
32
32
|
end
|
33
33
|
subject{ @runner }
|
@@ -66,17 +66,17 @@ class Qs::QsRunner
|
|
66
66
|
assert_equal [@runner.timeout], @timeout_called_with
|
67
67
|
end
|
68
68
|
|
69
|
-
should "run the
|
69
|
+
should "run the handler's before callbacks" do
|
70
70
|
assert_equal 1, @handler.first_before_call_order
|
71
71
|
assert_equal 2, @handler.second_before_call_order
|
72
72
|
end
|
73
73
|
|
74
|
-
should "call the
|
74
|
+
should "call the handler's init and run methods" do
|
75
75
|
assert_equal 3, @handler.init_call_order
|
76
76
|
assert_equal 4, @handler.run_call_order
|
77
77
|
end
|
78
78
|
|
79
|
-
should "run the
|
79
|
+
should "run the handler's after callbacks" do
|
80
80
|
assert_equal 5, @handler.first_after_call_order
|
81
81
|
assert_equal 6, @handler.second_after_call_order
|
82
82
|
end
|
@@ -157,10 +157,8 @@ class Qs::QsRunner
|
|
157
157
|
|
158
158
|
private
|
159
159
|
|
160
|
-
def next_call_order
|
161
|
-
|
162
|
-
@order += 1
|
163
|
-
end
|
160
|
+
def next_call_order; @order ||= 0; @order += 1; end
|
161
|
+
|
164
162
|
end
|
165
163
|
|
166
164
|
end
|
data/test/unit/runner_tests.rb
CHANGED
@@ -24,7 +24,7 @@ class Qs::Runner
|
|
24
24
|
subject{ @runner }
|
25
25
|
|
26
26
|
should have_readers :handler_class, :handler
|
27
|
-
should have_readers :
|
27
|
+
should have_readers :logger, :message, :params
|
28
28
|
should have_imeths :run
|
29
29
|
|
30
30
|
should "know its handler class and handler" do
|
@@ -32,25 +32,27 @@ class Qs::Runner
|
|
32
32
|
assert_instance_of @handler_class, subject.handler
|
33
33
|
end
|
34
34
|
|
35
|
-
should "
|
35
|
+
should "default its attrs" do
|
36
|
+
assert_instance_of Qs::NullLogger, subject.logger
|
36
37
|
assert_nil subject.message
|
37
38
|
assert_equal({}, subject.params)
|
38
|
-
assert_instance_of Qs::NullLogger, subject.logger
|
39
39
|
end
|
40
40
|
|
41
|
-
should "
|
41
|
+
should "know its attrs" do
|
42
42
|
args = {
|
43
|
+
:logger => Factory.string,
|
43
44
|
:message => Factory.string,
|
44
|
-
:params => Factory.string
|
45
|
-
:logger => Factory.string
|
45
|
+
:params => Factory.string
|
46
46
|
}
|
47
|
+
|
47
48
|
runner = @runner_class.new(@handler_class, args)
|
49
|
+
|
50
|
+
assert_equal args[:logger], runner.logger
|
48
51
|
assert_equal args[:message], runner.message
|
49
52
|
assert_equal args[:params], runner.params
|
50
|
-
assert_equal args[:logger], runner.logger
|
51
53
|
end
|
52
54
|
|
53
|
-
should "
|
55
|
+
should "not implement its run method" do
|
54
56
|
assert_raises(NotImplementedError){ subject.run }
|
55
57
|
end
|
56
58
|
|
@@ -58,6 +60,7 @@ class Qs::Runner
|
|
58
60
|
|
59
61
|
class TestJobHandler
|
60
62
|
include Qs::JobHandler
|
63
|
+
|
61
64
|
end
|
62
65
|
|
63
66
|
end
|
@@ -28,10 +28,10 @@ class Qs::TestRunner
|
|
28
28
|
setup do
|
29
29
|
@handler_class = TestMessageHandler
|
30
30
|
@args = {
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
31
|
+
:logger => Factory.string,
|
32
|
+
:message => Factory.message,
|
33
|
+
:params => { Factory.string => Factory.string },
|
34
|
+
:custom_value => Factory.integer
|
35
35
|
}
|
36
36
|
@original_args = @args.dup
|
37
37
|
@runner = @runner_class.new(@handler_class, @args)
|
@@ -41,33 +41,33 @@ class Qs::TestRunner
|
|
41
41
|
|
42
42
|
should have_imeths :run
|
43
43
|
|
44
|
-
should "know its
|
44
|
+
should "know its standard args" do
|
45
|
+
assert_equal @args[:logger], subject.logger
|
45
46
|
assert_equal @args[:message], subject.message
|
46
47
|
assert_equal @args[:params], subject.params
|
47
|
-
assert_equal @args[:logger], subject.logger
|
48
48
|
end
|
49
49
|
|
50
|
-
should "write
|
51
|
-
assert_equal @args[:
|
50
|
+
should "write any non-standard args to its handler" do
|
51
|
+
assert_equal @args[:custom_value], @handler.custom_value
|
52
52
|
end
|
53
53
|
|
54
54
|
should "not alter the args passed to it" do
|
55
55
|
assert_equal @original_args, @args
|
56
56
|
end
|
57
57
|
|
58
|
-
should "not call its
|
58
|
+
should "not call its handler's before callbacks" do
|
59
59
|
assert_nil @handler.before_called
|
60
60
|
end
|
61
61
|
|
62
|
-
should "call its
|
62
|
+
should "call its handler's init" do
|
63
63
|
assert_true @handler.init_called
|
64
64
|
end
|
65
65
|
|
66
|
-
should "not
|
66
|
+
should "not call its handler's run" do
|
67
67
|
assert_nil @handler.run_called
|
68
68
|
end
|
69
69
|
|
70
|
-
should "not call its
|
70
|
+
should "not call its handler's after callbacks" do
|
71
71
|
assert_nil @handler.after_called
|
72
72
|
end
|
73
73
|
|
@@ -194,7 +194,7 @@ class Qs::TestRunner
|
|
194
194
|
|
195
195
|
attr_reader :before_called, :after_called
|
196
196
|
attr_reader :init_called, :run_called
|
197
|
-
attr_accessor :
|
197
|
+
attr_accessor :custom_value
|
198
198
|
|
199
199
|
before{ @before_called = true }
|
200
200
|
after{ @after_called = true }
|
@@ -206,6 +206,7 @@ class Qs::TestRunner
|
|
206
206
|
def run!
|
207
207
|
@run_called = true
|
208
208
|
end
|
209
|
+
|
209
210
|
end
|
210
211
|
|
211
212
|
class TestJobHandler
|