deas 0.42.0 → 0.43.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.
- checksums.yaml +5 -5
- data/deas.gemspec +1 -1
- data/lib/deas/error_handler.rb +17 -12
- data/lib/deas/handler_proxy.rb +18 -18
- data/lib/deas/logging.rb +4 -3
- data/lib/deas/request_data.rb +33 -0
- data/lib/deas/route.rb +5 -7
- data/lib/deas/router.rb +15 -5
- data/lib/deas/runner.rb +49 -6
- data/lib/deas/server.rb +41 -115
- data/lib/deas/server_data.rb +12 -1
- data/lib/deas/sinatra_app.rb +69 -43
- data/lib/deas/test_runner.rb +3 -2
- data/lib/deas/url.rb +11 -7
- data/lib/deas/version.rb +1 -1
- data/lib/deas/view_handler.rb +0 -2
- data/test/support/factory.rb +16 -0
- data/test/support/fake_request.rb +1 -0
- data/test/support/fake_response.rb +12 -0
- data/test/support/fake_sinatra_call.rb +1 -11
- data/test/support/routes.rb +8 -7
- data/test/system/deas_tests.rb +3 -11
- data/test/unit/error_handler_tests.rb +19 -5
- data/test/unit/handler_proxy_tests.rb +28 -33
- data/test/unit/logging_tests.rb +12 -5
- data/test/unit/request_data_tests.rb +57 -0
- data/test/unit/route_tests.rb +15 -15
- data/test/unit/router_tests.rb +38 -24
- data/test/unit/runner_tests.rb +66 -12
- data/test/unit/server_data_tests.rb +14 -1
- data/test/unit/server_tests.rb +41 -106
- data/test/unit/sinatra_app_tests.rb +38 -24
- data/test/unit/test_runner_tests.rb +7 -4
- data/test/unit/url_tests.rb +13 -2
- data/test/unit/view_handler_tests.rb +1 -7
- metadata +8 -3
@@ -38,23 +38,19 @@ class Deas::HandlerProxy
|
|
38
38
|
|
39
39
|
Assert.stub(@proxy, :handler_class){ EmptyViewHandler }
|
40
40
|
|
41
|
-
@server_data
|
42
|
-
@
|
43
|
-
|
44
|
-
|
45
|
-
@fake_sinatra_call.params = {
|
46
|
-
:splat => [@splat_sym_param],
|
47
|
-
'splat' => [@splat_string_param],
|
41
|
+
@server_data = Factory.server_data
|
42
|
+
@request_data = Factory.request_data(:params => {
|
43
|
+
:splat => [Factory.string],
|
44
|
+
'splat' => [Factory.string],
|
48
45
|
:captures => [Factory.string],
|
49
46
|
'captures' => [Factory.string]
|
50
|
-
}
|
51
|
-
|
52
|
-
@proxy.run(@server_data, @fake_sinatra_call)
|
47
|
+
})
|
48
|
+
@proxy.run(@server_data, @request_data)
|
53
49
|
end
|
54
50
|
|
55
51
|
should "remove any 'splat' or 'captures' params added by Sinatra's router" do
|
56
52
|
[:splat, 'splat', :captures, 'captures'].each do |param_name|
|
57
|
-
assert_nil @
|
53
|
+
assert_nil @request_data.params[param_name]
|
58
54
|
end
|
59
55
|
end
|
60
56
|
|
@@ -65,44 +61,40 @@ class Deas::HandlerProxy
|
|
65
61
|
:logger => @server_data.logger,
|
66
62
|
:router => @server_data.router,
|
67
63
|
:template_source => @server_data.template_source,
|
68
|
-
:request => @
|
69
|
-
:
|
70
|
-
:
|
71
|
-
:splat => @splat_sym_param
|
64
|
+
:request => @request_data.request,
|
65
|
+
:params => @request_data.params,
|
66
|
+
:route_path => @request_data.route_path
|
72
67
|
}
|
73
68
|
assert_equal exp_args, @runner_spy.args
|
74
69
|
|
75
70
|
assert_true @runner_spy.run_called
|
76
71
|
end
|
77
72
|
|
78
|
-
should "prefer splat sym params over splat string params" do
|
79
|
-
assert_equal @splat_sym_param, @runner_spy.args[:splat]
|
80
|
-
|
81
|
-
@fake_sinatra_call.params['splat'] = [@splat_string_param]
|
82
|
-
proxy = Deas::HandlerProxy.new('EmptyViewHandler')
|
83
|
-
Assert.stub(proxy, :handler_class){ EmptyViewHandler }
|
84
|
-
proxy.run(@server_data, @fake_sinatra_call)
|
85
|
-
assert_equal @splat_string_param, @runner_spy.args[:splat]
|
86
|
-
end
|
87
|
-
|
88
73
|
should "add data to the request env to make it available to Rack" do
|
89
74
|
exp = subject.handler_class
|
90
|
-
assert_equal exp, @
|
75
|
+
assert_equal exp, @request_data.request.env['deas.handler_class']
|
91
76
|
|
92
77
|
exp = @runner_spy.handler
|
93
|
-
assert_equal exp, @
|
78
|
+
assert_equal exp, @request_data.request.env['deas.handler']
|
94
79
|
|
95
80
|
exp = @runner_spy.params
|
96
|
-
assert_equal exp, @
|
81
|
+
assert_equal exp, @request_data.request.env['deas.params']
|
82
|
+
|
83
|
+
exp = @runner_spy.splat
|
84
|
+
assert_equal exp, @request_data.request.env['deas.splat']
|
85
|
+
|
86
|
+
exp = @runner_spy.route_path
|
87
|
+
assert_equal exp, @request_data.request.env['deas.route_path']
|
97
88
|
end
|
98
89
|
|
99
90
|
should "log the handler class name and the params" do
|
100
91
|
exp_msgs = [
|
101
92
|
" Handler: #{subject.handler_class.name}",
|
102
93
|
" Params: #{@runner_spy.params.inspect}",
|
103
|
-
" Splat: #{@runner_spy.splat.inspect}"
|
94
|
+
" Splat: #{@runner_spy.splat.inspect}",
|
95
|
+
" Route: #{@runner_spy.route_path.inspect}"
|
104
96
|
]
|
105
|
-
assert_equal exp_msgs, @
|
97
|
+
assert_equal exp_msgs, @request_data.request.logging_msgs
|
106
98
|
end
|
107
99
|
|
108
100
|
end
|
@@ -112,7 +104,7 @@ class Deas::HandlerProxy
|
|
112
104
|
attr_reader :run_called
|
113
105
|
attr_reader :handler_class, :handler, :args
|
114
106
|
attr_reader :logger, :router, :template_source
|
115
|
-
attr_reader :request, :
|
107
|
+
attr_reader :request, :params, :splat, :route_path
|
116
108
|
|
117
109
|
def initialize
|
118
110
|
@run_called = false
|
@@ -127,9 +119,12 @@ class Deas::HandlerProxy
|
|
127
119
|
@router = args[:router]
|
128
120
|
@template_source = args[:template_source]
|
129
121
|
@request = args[:request]
|
130
|
-
@session = args[:session]
|
131
122
|
@params = args[:params]
|
132
|
-
@
|
123
|
+
@route_path = args[:route_path]
|
124
|
+
|
125
|
+
# runners parse the splat value from the PATH_INFO and route path. just
|
126
|
+
# use a placeholder value for the spy.
|
127
|
+
@splat = Factory.string
|
133
128
|
end
|
134
129
|
|
135
130
|
def run
|
data/test/unit/logging_tests.rb
CHANGED
@@ -7,11 +7,11 @@ module Deas::Logging
|
|
7
7
|
desc "Deas::Logging"
|
8
8
|
subject{ Deas::Logging }
|
9
9
|
|
10
|
-
should have_imeths :
|
10
|
+
should have_imeths :middleware_args
|
11
11
|
|
12
|
-
should "return
|
13
|
-
assert_equal Deas::VerboseLogging, subject.
|
14
|
-
assert_equal Deas::SummaryLogging, subject.
|
12
|
+
should "return middleware args given a verbose flag" do
|
13
|
+
assert_equal [Deas::VerboseLogging], subject.middleware_args(true)
|
14
|
+
assert_equal [Deas::SummaryLogging], subject.middleware_args(false)
|
15
15
|
end
|
16
16
|
|
17
17
|
end
|
@@ -205,9 +205,11 @@ module Deas::Logging
|
|
205
205
|
desc "when init"
|
206
206
|
setup do
|
207
207
|
@params = { Factory.string => Factory.string }
|
208
|
+
@splat = Factory.string
|
208
209
|
@handler_class = TestHandler
|
209
210
|
@env.merge!({
|
210
211
|
'deas.params' => @params,
|
212
|
+
'deas.splat' => @splat,
|
211
213
|
'deas.handler_class' => @handler_class
|
212
214
|
})
|
213
215
|
|
@@ -237,6 +239,7 @@ module Deas::Logging
|
|
237
239
|
'method' => @env['REQUEST_METHOD'],
|
238
240
|
'path' => @env['PATH_INFO'],
|
239
241
|
'params' => @env['deas.params'],
|
242
|
+
'splat' => @env['deas.splat'],
|
240
243
|
'time' => @env['deas.time_taken'],
|
241
244
|
'status' => @resp_status,
|
242
245
|
'handler' => @handler_class.name,
|
@@ -253,6 +256,7 @@ module Deas::Logging
|
|
253
256
|
'method' => @env['REQUEST_METHOD'],
|
254
257
|
'path' => @env['PATH_INFO'],
|
255
258
|
'params' => @env['deas.params'],
|
259
|
+
'splat' => @env['deas.splat'],
|
256
260
|
'time' => @env['deas.time_taken'],
|
257
261
|
'status' => @resp_status,
|
258
262
|
'redir' => @resp_headers['Location']
|
@@ -268,6 +272,7 @@ module Deas::Logging
|
|
268
272
|
'method' => @env['REQUEST_METHOD'],
|
269
273
|
'path' => @env['PATH_INFO'],
|
270
274
|
'params' => @env['deas.params'],
|
275
|
+
'splat' => @env['deas.splat'],
|
271
276
|
'time' => @env['deas.time_taken'],
|
272
277
|
'status' => @resp_status,
|
273
278
|
'handler' => @handler_class.name,
|
@@ -282,7 +287,7 @@ module Deas::Logging
|
|
282
287
|
subject{ Deas::SummaryLine }
|
283
288
|
|
284
289
|
should "output its attributes in a specific order" do
|
285
|
-
assert_equal %w{time status method path handler params redir}, subject.keys
|
290
|
+
assert_equal %w{time status method path handler params splat redir}, subject.keys
|
286
291
|
end
|
287
292
|
|
288
293
|
should "output its attributes in a single line" do
|
@@ -293,6 +298,7 @@ module Deas::Logging
|
|
293
298
|
'path' => 'pth',
|
294
299
|
'handler' => 'h',
|
295
300
|
'params' => 'p',
|
301
|
+
'splat' => 'spl',
|
296
302
|
'redir' => 'r'
|
297
303
|
}
|
298
304
|
exp_line = "time=\"t\" "\
|
@@ -301,6 +307,7 @@ module Deas::Logging
|
|
301
307
|
"path=\"pth\" "\
|
302
308
|
"handler=\"h\" "\
|
303
309
|
"params=\"p\" "\
|
310
|
+
"splat=\"spl\" "\
|
304
311
|
"redir=\"r\""
|
305
312
|
assert_equal exp_line, subject.new(line_attrs)
|
306
313
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'deas/request_data'
|
3
|
+
|
4
|
+
class Deas::RequestData
|
5
|
+
|
6
|
+
class UnitTests < Assert::Context
|
7
|
+
desc "Deas::RequestData"
|
8
|
+
setup do
|
9
|
+
@request = Factory.string
|
10
|
+
@response = Factory.string
|
11
|
+
@params = Factory.string
|
12
|
+
@route_path = Factory.string
|
13
|
+
|
14
|
+
@request_data = Deas::RequestData.new({
|
15
|
+
:request => @request,
|
16
|
+
:response => @response,
|
17
|
+
:params => @params,
|
18
|
+
:route_path => @route_path
|
19
|
+
})
|
20
|
+
end
|
21
|
+
subject{ @request_data }
|
22
|
+
|
23
|
+
should have_readers :request, :response, :params, :route_path
|
24
|
+
|
25
|
+
should "know its attributes" do
|
26
|
+
assert_equal @request, subject.request
|
27
|
+
assert_equal @response, subject.response
|
28
|
+
assert_equal @params, subject.params
|
29
|
+
assert_equal @route_path, subject.route_path
|
30
|
+
end
|
31
|
+
|
32
|
+
should "default its attributes when they aren't provided" do
|
33
|
+
request_data = Deas::RequestData.new({})
|
34
|
+
|
35
|
+
assert_nil request_data.request
|
36
|
+
assert_nil request_data.response
|
37
|
+
assert_nil request_data.params
|
38
|
+
assert_nil request_data.route_path
|
39
|
+
end
|
40
|
+
|
41
|
+
should "know if it is equal to another request data" do
|
42
|
+
request_data = Deas::RequestData.new({
|
43
|
+
:request => @request,
|
44
|
+
:response => @response,
|
45
|
+
:params => @params,
|
46
|
+
:route_path => @route_path
|
47
|
+
})
|
48
|
+
assert_equal request_data, subject
|
49
|
+
|
50
|
+
request_data = Deas::RequestData.new({})
|
51
|
+
assert_not_equal request_data, subject
|
52
|
+
end
|
53
|
+
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
data/test/unit/route_tests.rb
CHANGED
@@ -10,8 +10,8 @@ class Deas::Route
|
|
10
10
|
class UnitTests < Assert::Context
|
11
11
|
desc "Deas::Route"
|
12
12
|
setup do
|
13
|
-
@req_type_name
|
14
|
-
@proxy
|
13
|
+
@req_type_name = Factory.string
|
14
|
+
@proxy = HandlerProxySpy.new
|
15
15
|
@handler_proxies = Hash.new{ |h, k| raise(Deas::HandlerProxyNotFound) }.tap do |h|
|
16
16
|
h[@req_type_name] = @proxy
|
17
17
|
end
|
@@ -40,46 +40,46 @@ class Deas::Route
|
|
40
40
|
class RunTests < UnitTests
|
41
41
|
desc "when run"
|
42
42
|
setup do
|
43
|
-
@server_data
|
44
|
-
@
|
43
|
+
@server_data = Factory.server_data
|
44
|
+
@request_data = Factory.request_data
|
45
45
|
end
|
46
46
|
|
47
47
|
should "run the proxy for the given request type name" do
|
48
48
|
Assert.stub(@server_data.router, :request_type_name).with(
|
49
|
-
@
|
49
|
+
@request_data.request
|
50
50
|
){ @req_type_name }
|
51
51
|
|
52
|
-
@route.run(@server_data, @
|
52
|
+
@route.run(@server_data, @request_data)
|
53
53
|
assert_true @proxy.run_called
|
54
|
+
assert_equal @server_data, @proxy.server_data
|
55
|
+
assert_equal @request_data, @proxy.request_data
|
54
56
|
end
|
55
57
|
|
56
58
|
should "halt 404 if it can't find a proxy for the given request type name" do
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
assert_equal [404], halt_value
|
59
|
+
exp = [404, Rack::Utils::HeaderHash.new, []]
|
60
|
+
assert_equal exp, @route.run(@server_data, @request_data)
|
61
61
|
end
|
62
62
|
|
63
63
|
end
|
64
64
|
|
65
65
|
class HandlerProxySpy
|
66
66
|
|
67
|
-
attr_reader :validate_called, :run_called, :server_data, :
|
67
|
+
attr_reader :validate_called, :run_called, :server_data, :request_data
|
68
68
|
|
69
69
|
def initialize
|
70
70
|
@run_called = false
|
71
71
|
@validate_called = false
|
72
72
|
@server_data = nil
|
73
|
-
@
|
73
|
+
@request_data = nil
|
74
74
|
end
|
75
75
|
|
76
76
|
def validate!
|
77
77
|
@validate_called = true
|
78
78
|
end
|
79
79
|
|
80
|
-
def run(server_data,
|
81
|
-
@server_data =
|
82
|
-
@
|
80
|
+
def run(server_data, request_data)
|
81
|
+
@server_data = server_data
|
82
|
+
@request_data = request_data
|
83
83
|
@run_called = true
|
84
84
|
end
|
85
85
|
|
data/test/unit/router_tests.rb
CHANGED
@@ -43,7 +43,7 @@ class Deas::Router
|
|
43
43
|
should have_imeths :route, :redirect, :not_found
|
44
44
|
should have_imeths :apply_definitions!, :validate!
|
45
45
|
|
46
|
-
should "default its
|
46
|
+
should "default its attrs" do
|
47
47
|
router = @router_class.new
|
48
48
|
assert_nil router.view_handler_ns
|
49
49
|
assert_nil router.base_url
|
@@ -370,11 +370,40 @@ class Deas::Router
|
|
370
370
|
assert_equal [404, {}, body], handler.halt_args
|
371
371
|
end
|
372
372
|
|
373
|
+
should "complain if adding a route with invalid splats in its path" do
|
374
|
+
[ "/something/other*/",
|
375
|
+
"/something/other*",
|
376
|
+
"/something/*other",
|
377
|
+
"/something*/other",
|
378
|
+
"/*something/other",
|
379
|
+
"/something/*/other/*",
|
380
|
+
"/something/*/other",
|
381
|
+
"/something/*/",
|
382
|
+
"/*/something",
|
383
|
+
].each do |path|
|
384
|
+
assert_raises InvalidSplatError do
|
385
|
+
router = @router_class.new
|
386
|
+
router.route(:get, path)
|
387
|
+
router.apply_definitions!
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
[ "/something/*",
|
392
|
+
"/*"
|
393
|
+
].each do |path|
|
394
|
+
assert_nothing_raised do
|
395
|
+
router = @router_class.new
|
396
|
+
router.route(:get, path)
|
397
|
+
router.apply_definitions!
|
398
|
+
end
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
373
402
|
end
|
374
403
|
|
375
404
|
class NamedUrlTests < InitTests
|
376
405
|
setup do
|
377
|
-
@router.url(
|
406
|
+
@router.url(:get_info, '/info/:for')
|
378
407
|
end
|
379
408
|
|
380
409
|
should "define a url given a name and a path" do
|
@@ -388,38 +417,23 @@ class Deas::Router
|
|
388
417
|
end
|
389
418
|
|
390
419
|
should "define a url with a custom escape query value proc" do
|
391
|
-
name = Factory.string
|
420
|
+
name = Factory.string.to_sym
|
392
421
|
escape_proc = proc{ Factory.string }
|
393
422
|
@router.url(name, Factory.path, :escape_query_value => escape_proc)
|
394
423
|
|
395
|
-
url = subject.urls[name
|
424
|
+
url = subject.urls[name]
|
396
425
|
assert_equal escape_proc, url.escape_query_value_proc
|
397
426
|
end
|
398
427
|
|
399
|
-
should "complain if defining a url with a non-
|
428
|
+
should "complain if defining a url with a non-symbol name" do
|
400
429
|
assert_raises ArgumentError do
|
401
|
-
subject.url(
|
430
|
+
subject.url('get_info', '/info')
|
402
431
|
end
|
403
432
|
end
|
404
433
|
|
405
|
-
should "complain if defining a url with
|
406
|
-
assert_raises ArgumentError do
|
407
|
-
subject.url(:get_info, "/something/*/other/*")
|
408
|
-
end
|
409
|
-
assert_raises ArgumentError do
|
410
|
-
subject.url(:get_info, "/something/*/other")
|
411
|
-
end
|
412
|
-
assert_raises ArgumentError do
|
413
|
-
subject.url(:get_info, "/something/*/")
|
414
|
-
end
|
434
|
+
should "complain if defining a url with a non-string path" do
|
415
435
|
assert_raises ArgumentError do
|
416
|
-
subject.url(:get_info,
|
417
|
-
end
|
418
|
-
assert_nothing_raised do
|
419
|
-
subject.url(:get_info, "/something/*")
|
420
|
-
end
|
421
|
-
assert_nothing_raised do
|
422
|
-
subject.url(:get_info, "/*")
|
436
|
+
subject.url(:get_info, /^\/info/)
|
423
437
|
end
|
424
438
|
end
|
425
439
|
|
@@ -510,7 +524,7 @@ class Deas::Router
|
|
510
524
|
url = Factory.url
|
511
525
|
subject.base_url url
|
512
526
|
path = Factory.path
|
513
|
-
subject.url(
|
527
|
+
subject.url(:base_get_info, path)
|
514
528
|
|
515
529
|
exp_path = subject.prepend_base_url(path)
|
516
530
|
assert_equal exp_path, subject.url_for(:base_get_info)
|
data/test/unit/runner_tests.rb
CHANGED
@@ -45,7 +45,7 @@ class Deas::Runner
|
|
45
45
|
|
46
46
|
should have_readers :handler_class, :handler
|
47
47
|
should have_readers :logger, :router, :template_source
|
48
|
-
should have_readers :request, :
|
48
|
+
should have_readers :request, :params, :route_path, :splat
|
49
49
|
should have_imeths :run, :to_rack
|
50
50
|
should have_imeths :status, :headers, :body, :content_type
|
51
51
|
should have_imeths :halt, :redirect, :send_file
|
@@ -63,20 +63,21 @@ class Deas::Runner
|
|
63
63
|
assert_kind_of Deas::NullTemplateSource, runner.template_source
|
64
64
|
|
65
65
|
assert_nil runner.request
|
66
|
-
assert_nil runner.session
|
67
66
|
|
68
|
-
assert_equal
|
67
|
+
assert_equal Hash.new, runner.params
|
68
|
+
assert_equal '', runner.route_path
|
69
|
+
|
70
|
+
assert_nil runner.splat
|
69
71
|
end
|
70
72
|
|
71
73
|
should "know its attrs" do
|
72
74
|
args = {
|
73
|
-
:logger =>
|
74
|
-
:router =>
|
75
|
-
:template_source =>
|
76
|
-
:request =>
|
77
|
-
:
|
78
|
-
:
|
79
|
-
:splat => 'a-splat'
|
75
|
+
:logger => Factory.string,
|
76
|
+
:router => Factory.string,
|
77
|
+
:template_source => Factory.string,
|
78
|
+
:request => Factory.request,
|
79
|
+
:params => { Factory.string => Factory.string },
|
80
|
+
:route_path => Factory.string
|
80
81
|
}
|
81
82
|
|
82
83
|
runner = @runner_class.new(@handler_class, args)
|
@@ -85,9 +86,62 @@ class Deas::Runner
|
|
85
86
|
assert_equal args[:router], runner.router
|
86
87
|
assert_equal args[:template_source], runner.template_source
|
87
88
|
assert_equal args[:request], runner.request
|
88
|
-
assert_equal args[:session], runner.session
|
89
89
|
assert_equal args[:params], runner.params
|
90
|
-
assert_equal args[:
|
90
|
+
assert_equal args[:route_path], runner.route_path
|
91
|
+
end
|
92
|
+
|
93
|
+
should "know its splat value" do
|
94
|
+
route_path = [
|
95
|
+
'/some/:value/other/:value/*',
|
96
|
+
'/some/:value/*'
|
97
|
+
].sample
|
98
|
+
|
99
|
+
params = { 'value' => Factory.string }
|
100
|
+
splat = Factory.integer(3).times.map{ Factory.string}.join('/')
|
101
|
+
path_info = route_path.gsub(':value', params['value']).sub('*', splat)
|
102
|
+
request_env = { 'PATH_INFO' => path_info }
|
103
|
+
|
104
|
+
args = {
|
105
|
+
:request => Factory.request(:env => request_env),
|
106
|
+
:params => params,
|
107
|
+
:route_path => route_path
|
108
|
+
}
|
109
|
+
|
110
|
+
runner = @runner_class.new(@handler_class, args)
|
111
|
+
assert_equal splat, runner.splat
|
112
|
+
end
|
113
|
+
|
114
|
+
should "not have a splat value if there is no splat in the route path" do
|
115
|
+
route_path = '/some/:value'
|
116
|
+
params = { 'value' => Factory.string }
|
117
|
+
path_info = route_path.gsub(':value', params['value'])
|
118
|
+
request_env = { 'PATH_INFO' => path_info }
|
119
|
+
|
120
|
+
args = {
|
121
|
+
:request => Factory.request(:env => request_env),
|
122
|
+
:params => params,
|
123
|
+
:route_path => route_path
|
124
|
+
}
|
125
|
+
|
126
|
+
runner = @runner_class.new(@handler_class, args)
|
127
|
+
assert_nil runner.splat
|
128
|
+
end
|
129
|
+
|
130
|
+
should "complain if it can't parse the splat param" do
|
131
|
+
route_path = '/some/:value/*'
|
132
|
+
params = { 'value' => Factory.string }
|
133
|
+
splat = Factory.integer(3).times.map{ Factory.string}.join('/')
|
134
|
+
path_info = "/some/#{Factory.string}"
|
135
|
+
request_env = { 'PATH_INFO' => path_info }
|
136
|
+
|
137
|
+
args = {
|
138
|
+
:request => Factory.request(:env => request_env),
|
139
|
+
:params => params,
|
140
|
+
:route_path => route_path
|
141
|
+
}
|
142
|
+
|
143
|
+
runner = @runner_class.new(@handler_class, args)
|
144
|
+
assert_raises(SplatParseError){ runner.splat }
|
91
145
|
end
|
92
146
|
|
93
147
|
should "not implement its run method" do
|