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
@@ -0,0 +1,152 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'qs/worker'
|
3
|
+
|
4
|
+
require 'dat-worker-pool/worker'
|
5
|
+
require 'much-plugin'
|
6
|
+
require 'qs/daemon'
|
7
|
+
require 'qs/daemon_data'
|
8
|
+
require 'qs/logger'
|
9
|
+
require 'qs/queue_item'
|
10
|
+
require 'test/support/client_spy'
|
11
|
+
|
12
|
+
module Qs::Worker
|
13
|
+
|
14
|
+
class UnitTests < Assert::Context
|
15
|
+
include DatWorkerPool::Worker::TestHelpers
|
16
|
+
|
17
|
+
desc "Qs::Worker"
|
18
|
+
setup do
|
19
|
+
@worker_class = Class.new{ include Qs::Worker }
|
20
|
+
end
|
21
|
+
subject{ @worker_class }
|
22
|
+
|
23
|
+
should "use much-plugin" do
|
24
|
+
assert_includes MuchPlugin, Qs::Worker
|
25
|
+
end
|
26
|
+
|
27
|
+
should "be a dat-worker-pool worker" do
|
28
|
+
assert_includes DatWorkerPool::Worker, subject
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
class InitTests < UnitTests
|
34
|
+
desc "when init"
|
35
|
+
setup do
|
36
|
+
@ph_spy = nil
|
37
|
+
Assert.stub(Qs::PayloadHandler, :new) do |*args|
|
38
|
+
@ph_spy = PayloadHandlerSpy.new(*args)
|
39
|
+
end
|
40
|
+
|
41
|
+
@daemon_data = Qs::DaemonData.new
|
42
|
+
@client_spy = ClientSpy.new
|
43
|
+
@worker_available = Qs::Daemon::WorkerAvailable.new
|
44
|
+
@queue_item = Qs::QueueItem.new(Factory.string, Factory.string)
|
45
|
+
|
46
|
+
@worker_params = {
|
47
|
+
:qs_daemon_data => @daemon_data,
|
48
|
+
:qs_client => @client_spy,
|
49
|
+
:qs_worker_available => @worker_available,
|
50
|
+
:qs_logger => Qs::NullLogger.new
|
51
|
+
}
|
52
|
+
@runner = test_runner(@worker_class, :params => @worker_params)
|
53
|
+
end
|
54
|
+
subject{ @runner }
|
55
|
+
|
56
|
+
should "build and run a payload handler when it processes a queue item" do
|
57
|
+
subject.work(@queue_item)
|
58
|
+
|
59
|
+
assert_not_nil @ph_spy
|
60
|
+
assert_equal @daemon_data, @ph_spy.daemon_data
|
61
|
+
assert_equal @queue_item, @ph_spy.queue_item
|
62
|
+
assert_true @ph_spy.run_called
|
63
|
+
end
|
64
|
+
|
65
|
+
should "signal that a worker is available when it becomes available" do
|
66
|
+
signal_called = false
|
67
|
+
Assert.stub(@worker_available, :signal){ signal_called = true }
|
68
|
+
|
69
|
+
subject.make_available
|
70
|
+
assert_true signal_called
|
71
|
+
end
|
72
|
+
|
73
|
+
should "requeue a queue item if an error occurs before its started" do
|
74
|
+
exception = Factory.exception
|
75
|
+
@queue_item.started = false
|
76
|
+
subject.error(exception, @queue_item)
|
77
|
+
|
78
|
+
call = @client_spy.calls.last
|
79
|
+
assert_equal :prepend, call.command
|
80
|
+
assert_equal @queue_item.queue_redis_key, call.args.first
|
81
|
+
assert_equal @queue_item.encoded_payload, call.args.last
|
82
|
+
end
|
83
|
+
|
84
|
+
should "not requeue a queue item if an error occurs after its started" do
|
85
|
+
exception = Factory.exception
|
86
|
+
@queue_item.started = true
|
87
|
+
subject.error(exception, @queue_item)
|
88
|
+
|
89
|
+
assert_empty @client_spy.calls
|
90
|
+
end
|
91
|
+
|
92
|
+
should "do nothing if not passed a queue item" do
|
93
|
+
assert_nothing_raised{ subject.error(Factory.exception) }
|
94
|
+
assert_empty @client_spy.calls
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
class TestHelpersTests < UnitTests
|
100
|
+
desc "TestHelpers"
|
101
|
+
setup do
|
102
|
+
@context_class = Class.new{ include TestHelpers }
|
103
|
+
@context = @context_class.new
|
104
|
+
end
|
105
|
+
subject{ @context }
|
106
|
+
|
107
|
+
should have_imeths :test_runner
|
108
|
+
|
109
|
+
should "mixin dat-worker-pool's worker test helpers" do
|
110
|
+
assert_includes DatWorkerPool::Worker::TestHelpers, @context_class
|
111
|
+
end
|
112
|
+
|
113
|
+
should "super worker params needed to run a qs worker" do
|
114
|
+
runner = @context.test_runner(@worker_class)
|
115
|
+
worker_params = runner.dwp_runner.worker_params
|
116
|
+
|
117
|
+
assert_instance_of Qs::DaemonData, worker_params[:qs_daemon_data]
|
118
|
+
assert_instance_of Qs::TestClient, worker_params[:qs_client]
|
119
|
+
exp = Qs::Daemon::WorkerAvailable
|
120
|
+
assert_instance_of exp, worker_params[:qs_worker_available]
|
121
|
+
assert_instance_of Qs::NullLogger, worker_params[:qs_logger]
|
122
|
+
end
|
123
|
+
|
124
|
+
should "allow providing custom worker params for running a qs worker" do
|
125
|
+
@params = {
|
126
|
+
:qs_daemon_data => Factory.string,
|
127
|
+
:qs_client => Factory.string,
|
128
|
+
:qs_worker_available => Factory.string,
|
129
|
+
:qs_logger => Factory.string
|
130
|
+
}
|
131
|
+
runner = @context.test_runner(@worker_class, :params => @params)
|
132
|
+
|
133
|
+
assert_equal @params, runner.dwp_runner.worker_params
|
134
|
+
end
|
135
|
+
|
136
|
+
end
|
137
|
+
|
138
|
+
class PayloadHandlerSpy
|
139
|
+
attr_reader :daemon_data, :queue_item, :run_called
|
140
|
+
|
141
|
+
def initialize(daemon_data, queue_item)
|
142
|
+
@daemon_data = daemon_data
|
143
|
+
@queue_item = queue_item
|
144
|
+
@run_called = false
|
145
|
+
end
|
146
|
+
|
147
|
+
def run
|
148
|
+
@run_called = true
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 6
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.6.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2015-
|
19
|
+
date: 2015-11-30 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -24,11 +24,11 @@ dependencies:
|
|
24
24
|
requirements:
|
25
25
|
- - ~>
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
hash:
|
27
|
+
hash: 7
|
28
28
|
segments:
|
29
29
|
- 0
|
30
|
-
-
|
31
|
-
version: "0.
|
30
|
+
- 6
|
31
|
+
version: "0.6"
|
32
32
|
type: :runtime
|
33
33
|
name: dat-worker-pool
|
34
34
|
version_requirements: *id001
|
@@ -50,6 +50,21 @@ dependencies:
|
|
50
50
|
prerelease: false
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ~>
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 9
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
- 1
|
61
|
+
version: "0.1"
|
62
|
+
type: :runtime
|
63
|
+
name: much-plugin
|
64
|
+
version_requirements: *id003
|
65
|
+
prerelease: false
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
68
|
none: false
|
54
69
|
requirements:
|
55
70
|
- - ~>
|
@@ -61,10 +76,10 @@ dependencies:
|
|
61
76
|
version: "1.1"
|
62
77
|
type: :runtime
|
63
78
|
name: ns-options
|
64
|
-
version_requirements: *
|
79
|
+
version_requirements: *id004
|
65
80
|
prerelease: false
|
66
81
|
- !ruby/object:Gem::Dependency
|
67
|
-
requirement: &
|
82
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
68
83
|
none: false
|
69
84
|
requirements:
|
70
85
|
- - ~>
|
@@ -76,10 +91,10 @@ dependencies:
|
|
76
91
|
version: "1.2"
|
77
92
|
type: :runtime
|
78
93
|
name: SystemTimer
|
79
|
-
version_requirements: *
|
94
|
+
version_requirements: *id005
|
80
95
|
prerelease: false
|
81
96
|
- !ruby/object:Gem::Dependency
|
82
|
-
requirement: &
|
97
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
83
98
|
none: false
|
84
99
|
requirements:
|
85
100
|
- - ~>
|
@@ -91,22 +106,22 @@ dependencies:
|
|
91
106
|
version: "2.15"
|
92
107
|
type: :development
|
93
108
|
name: assert
|
94
|
-
version_requirements: *
|
109
|
+
version_requirements: *id006
|
95
110
|
prerelease: false
|
96
111
|
- !ruby/object:Gem::Dependency
|
97
|
-
requirement: &
|
112
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
98
113
|
none: false
|
99
114
|
requirements:
|
100
115
|
- - ~>
|
101
116
|
- !ruby/object:Gem::Version
|
102
|
-
hash:
|
117
|
+
hash: 7
|
103
118
|
segments:
|
104
|
-
- 2
|
105
119
|
- 3
|
106
|
-
|
120
|
+
- 0
|
121
|
+
version: "3.0"
|
107
122
|
type: :development
|
108
123
|
name: scmd
|
109
|
-
version_requirements: *
|
124
|
+
version_requirements: *id007
|
110
125
|
prerelease: false
|
111
126
|
description: Define message queues. Process jobs and events. Profit.
|
112
127
|
email:
|
@@ -121,7 +136,7 @@ extra_rdoc_files: []
|
|
121
136
|
files:
|
122
137
|
- .gitignore
|
123
138
|
- Gemfile
|
124
|
-
- LICENSE
|
139
|
+
- LICENSE
|
125
140
|
- README.md
|
126
141
|
- Rakefile
|
127
142
|
- bench/config.qs
|
@@ -142,11 +157,9 @@ files:
|
|
142
157
|
- lib/qs/error_handler.rb
|
143
158
|
- lib/qs/event.rb
|
144
159
|
- lib/qs/event_handler.rb
|
145
|
-
- lib/qs/event_handler_test_helpers.rb
|
146
160
|
- lib/qs/io_pipe.rb
|
147
161
|
- lib/qs/job.rb
|
148
162
|
- lib/qs/job_handler.rb
|
149
|
-
- lib/qs/job_handler_test_helpers.rb
|
150
163
|
- lib/qs/logger.rb
|
151
164
|
- lib/qs/message.rb
|
152
165
|
- lib/qs/message_handler.rb
|
@@ -162,10 +175,12 @@ files:
|
|
162
175
|
- lib/qs/runner.rb
|
163
176
|
- lib/qs/test_runner.rb
|
164
177
|
- lib/qs/version.rb
|
178
|
+
- lib/qs/worker.rb
|
165
179
|
- log/.gitkeep
|
166
180
|
- qs.gemspec
|
167
181
|
- test/helper.rb
|
168
182
|
- test/support/app_daemon.rb
|
183
|
+
- test/support/client_spy.rb
|
169
184
|
- test/support/config.qs
|
170
185
|
- test/support/config_files/empty.qs
|
171
186
|
- test/support/config_files/invalid.qs
|
@@ -173,6 +188,7 @@ files:
|
|
173
188
|
- test/support/config_invalid_run.qs
|
174
189
|
- test/support/config_no_run.qs
|
175
190
|
- test/support/factory.rb
|
191
|
+
- test/support/message_handler.rb
|
176
192
|
- test/support/pid_file_spy.rb
|
177
193
|
- test/support/runner_spy.rb
|
178
194
|
- test/system/daemon_tests.rb
|
@@ -186,11 +202,9 @@ files:
|
|
186
202
|
- test/unit/dispatch_job_tests.rb
|
187
203
|
- test/unit/dispatcher_queue_tests.rb
|
188
204
|
- test/unit/error_handler_tests.rb
|
189
|
-
- test/unit/event_handler_test_helpers_tests.rb
|
190
205
|
- test/unit/event_handler_tests.rb
|
191
206
|
- test/unit/event_tests.rb
|
192
207
|
- test/unit/io_pipe_tests.rb
|
193
|
-
- test/unit/job_handler_test_helper_tests.rb
|
194
208
|
- test/unit/job_handler_tests.rb
|
195
209
|
- test/unit/job_tests.rb
|
196
210
|
- test/unit/logger_tests.rb
|
@@ -208,6 +222,7 @@ files:
|
|
208
222
|
- test/unit/route_tests.rb
|
209
223
|
- test/unit/runner_tests.rb
|
210
224
|
- test/unit/test_runner_tests.rb
|
225
|
+
- test/unit/worker_tests.rb
|
211
226
|
- tmp/.gitkeep
|
212
227
|
homepage: http://github.com/redding/qs
|
213
228
|
licenses:
|
@@ -238,13 +253,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
253
|
requirements: []
|
239
254
|
|
240
255
|
rubyforge_project:
|
241
|
-
rubygems_version: 1.8.
|
256
|
+
rubygems_version: 1.8.25
|
242
257
|
signing_key:
|
243
258
|
specification_version: 3
|
244
259
|
summary: Define message queues. Process jobs and events. Profit.
|
245
260
|
test_files:
|
246
261
|
- test/helper.rb
|
247
262
|
- test/support/app_daemon.rb
|
263
|
+
- test/support/client_spy.rb
|
248
264
|
- test/support/config.qs
|
249
265
|
- test/support/config_files/empty.qs
|
250
266
|
- test/support/config_files/invalid.qs
|
@@ -252,6 +268,7 @@ test_files:
|
|
252
268
|
- test/support/config_invalid_run.qs
|
253
269
|
- test/support/config_no_run.qs
|
254
270
|
- test/support/factory.rb
|
271
|
+
- test/support/message_handler.rb
|
255
272
|
- test/support/pid_file_spy.rb
|
256
273
|
- test/support/runner_spy.rb
|
257
274
|
- test/system/daemon_tests.rb
|
@@ -265,11 +282,9 @@ test_files:
|
|
265
282
|
- test/unit/dispatch_job_tests.rb
|
266
283
|
- test/unit/dispatcher_queue_tests.rb
|
267
284
|
- test/unit/error_handler_tests.rb
|
268
|
-
- test/unit/event_handler_test_helpers_tests.rb
|
269
285
|
- test/unit/event_handler_tests.rb
|
270
286
|
- test/unit/event_tests.rb
|
271
287
|
- test/unit/io_pipe_tests.rb
|
272
|
-
- test/unit/job_handler_test_helper_tests.rb
|
273
288
|
- test/unit/job_handler_tests.rb
|
274
289
|
- test/unit/job_tests.rb
|
275
290
|
- test/unit/logger_tests.rb
|
@@ -287,3 +302,4 @@ test_files:
|
|
287
302
|
- test/unit/route_tests.rb
|
288
303
|
- test/unit/runner_tests.rb
|
289
304
|
- test/unit/test_runner_tests.rb
|
305
|
+
- test/unit/worker_tests.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'qs/test_runner'
|
2
|
-
|
3
|
-
module Qs::EventHandler
|
4
|
-
|
5
|
-
module TestHelpers
|
6
|
-
|
7
|
-
def test_runner(handler_class, args = nil)
|
8
|
-
Qs::EventTestRunner.new(handler_class, args)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_handler(handler_class, args = nil)
|
12
|
-
test_runner(handler_class, args).handler
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'qs/test_runner'
|
2
|
-
|
3
|
-
module Qs::JobHandler
|
4
|
-
|
5
|
-
module TestHelpers
|
6
|
-
|
7
|
-
def test_runner(handler_class, args = nil)
|
8
|
-
Qs::JobTestRunner.new(handler_class, args)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_handler(handler_class, args = nil)
|
12
|
-
test_runner(handler_class, args).handler
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
require 'qs/event_handler_test_helpers'
|
3
|
-
|
4
|
-
require 'qs/event_handler'
|
5
|
-
require 'qs/test_runner'
|
6
|
-
require 'test/support/runner_spy'
|
7
|
-
|
8
|
-
module Qs::EventHandler::TestHelpers
|
9
|
-
|
10
|
-
class UnitTests < Assert::Context
|
11
|
-
desc "Qs::TestHelpers"
|
12
|
-
setup do
|
13
|
-
@test_helpers = Qs::EventHandler::TestHelpers
|
14
|
-
end
|
15
|
-
subject{ @test_helpers }
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
class MixinTests < UnitTests
|
20
|
-
desc "as a mixin"
|
21
|
-
setup do
|
22
|
-
@handler_class = Class.new
|
23
|
-
@args = { Factory.string => Factory.string }
|
24
|
-
|
25
|
-
@runner_spy = nil
|
26
|
-
Assert.stub(Qs::EventTestRunner, :new) do |*args|
|
27
|
-
@runner_spy = RunnerSpy.new(*args)
|
28
|
-
end
|
29
|
-
|
30
|
-
context_class = Class.new{ include Qs::EventHandler::TestHelpers }
|
31
|
-
@context = context_class.new
|
32
|
-
end
|
33
|
-
subject{ @context }
|
34
|
-
|
35
|
-
should have_imeths :test_runner, :test_handler
|
36
|
-
|
37
|
-
should "build an event test runner for a given handler using `test_runner`" do
|
38
|
-
result = subject.test_runner(@handler_class, @args)
|
39
|
-
|
40
|
-
assert_not_nil @runner_spy
|
41
|
-
assert_equal @handler_class, @runner_spy.handler_class
|
42
|
-
assert_equal @args, @runner_spy.args
|
43
|
-
assert_equal @runner_spy, result
|
44
|
-
end
|
45
|
-
|
46
|
-
should "return an initialized handler instance using `test_handler`" do
|
47
|
-
result = subject.test_handler(@handler_class, @args)
|
48
|
-
|
49
|
-
assert_not_nil @runner_spy
|
50
|
-
assert_equal @runner_spy.handler, result
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'assert'
|
2
|
-
require 'qs/job_handler_test_helpers'
|
3
|
-
|
4
|
-
require 'qs/job_handler'
|
5
|
-
require 'qs/test_runner'
|
6
|
-
require 'test/support/runner_spy'
|
7
|
-
|
8
|
-
module Qs::JobHandler::TestHelpers
|
9
|
-
|
10
|
-
class UnitTests < Assert::Context
|
11
|
-
desc "Qs::TestHelpers"
|
12
|
-
setup do
|
13
|
-
@test_helpers = Qs::JobHandler::TestHelpers
|
14
|
-
end
|
15
|
-
subject{ @test_helpers }
|
16
|
-
|
17
|
-
end
|
18
|
-
|
19
|
-
class MixinTests < UnitTests
|
20
|
-
desc "as a mixin"
|
21
|
-
setup do
|
22
|
-
@handler_class = Class.new
|
23
|
-
@args = { Factory.string => Factory.string }
|
24
|
-
|
25
|
-
@runner_spy = nil
|
26
|
-
Assert.stub(Qs::JobTestRunner, :new) do |*args|
|
27
|
-
@runner_spy = RunnerSpy.new(*args)
|
28
|
-
end
|
29
|
-
|
30
|
-
context_class = Class.new{ include Qs::JobHandler::TestHelpers }
|
31
|
-
@context = context_class.new
|
32
|
-
end
|
33
|
-
subject{ @context }
|
34
|
-
|
35
|
-
should have_imeths :test_runner, :test_handler
|
36
|
-
|
37
|
-
should "build a job test runner for a given handler using `test_runner`" do
|
38
|
-
result = subject.test_runner(@handler_class, @args)
|
39
|
-
|
40
|
-
assert_not_nil @runner_spy
|
41
|
-
assert_equal @handler_class, @runner_spy.handler_class
|
42
|
-
assert_equal @args, @runner_spy.args
|
43
|
-
assert_equal @runner_spy, result
|
44
|
-
end
|
45
|
-
|
46
|
-
should "return an initialized handler instance using `test_handler`" do
|
47
|
-
result = subject.test_handler(@handler_class, @args)
|
48
|
-
|
49
|
-
assert_not_nil @runner_spy
|
50
|
-
assert_equal @runner_spy.handler, result
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|