rack-jet_router 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +10 -0
- data/README.md +80 -72
- data/bench/Gemfile +5 -4
- data/bench/Rakefile.rb +3 -3
- data/bench/bench.rb +330 -244
- data/lib/rack/jet_router.rb +119 -62
- data/rack-jet_router.gemspec +1 -1
- data/test/builder_test.rb +129 -41
- data/test/router_test.rb +49 -7
- data/test/shared.rb +2 -2
- metadata +2 -2
data/test/router_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
4
|
+
### $Release: 1.4.0 $
|
5
5
|
### $Copyright: copyright(c) 2015 kwatch@gmail.com $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
@@ -35,6 +35,8 @@ Oktest.scope do
|
|
35
35
|
admin_book_delete_app = proc {|env| [200, {}, ["admin_book_delete_app"]]}
|
36
36
|
admin_book_edit_app = proc {|env| [200, {}, ["admin_book_edit_app"]]}
|
37
37
|
#
|
38
|
+
staticfile_app = proc {|env| [200, {}, ["staticfile_app"]]}
|
39
|
+
#
|
38
40
|
whole_urlpath_mapping = [
|
39
41
|
['/' , welcome_app],
|
40
42
|
['/index.html' , welcome_app],
|
@@ -56,6 +58,7 @@ Oktest.scope do
|
|
56
58
|
['/:id' , {:GET=>admin_book_show_app, :PUT=>admin_book_update_app, :DELETE=>admin_book_delete_app}],
|
57
59
|
]],
|
58
60
|
]],
|
61
|
+
['/static/*filepath', {:GET=>staticfile_app}],
|
59
62
|
]
|
60
63
|
|
61
64
|
def new_env(req_method, req_path, opts={})
|
@@ -250,6 +253,9 @@ Oktest.scope do
|
|
250
253
|
"PUT" => admin_book_update_app,
|
251
254
|
"DELETE" => admin_book_delete_app,
|
252
255
|
}],
|
256
|
+
["/static/*filepath", {
|
257
|
+
"GET" => staticfile_app,
|
258
|
+
}],
|
253
259
|
]
|
254
260
|
end
|
255
261
|
|
@@ -277,10 +283,45 @@ Oktest.scope do
|
|
277
283
|
end
|
278
284
|
end
|
279
285
|
|
286
|
+
spec "[!ec0av] treats '/foo(.html|.json)' as three fixed urlpaths." do
|
287
|
+
mapping = {
|
288
|
+
"/api/books(.html|.json)" => book_list_api,
|
289
|
+
}
|
290
|
+
router = Rack::JetRouter.new(mapping)
|
291
|
+
router.instance_exec(self) do |_|
|
292
|
+
_.ok {@fixed_endpoints} == {
|
293
|
+
"/api/books" => book_list_api,
|
294
|
+
"/api/books.html" => book_list_api,
|
295
|
+
"/api/books.json" => book_list_api,
|
296
|
+
}
|
297
|
+
_.ok {@variable_endpoints} == []
|
298
|
+
end
|
299
|
+
end
|
300
|
+
|
301
|
+
spec "[!ylyi0] stores '/foo' as fixed path when path pattern is '/foo(.:format)'." do
|
302
|
+
mapping = {
|
303
|
+
"/api/books(.json|.:format|.html)" => book_list_api,
|
304
|
+
}
|
305
|
+
router = Rack::JetRouter.new(mapping)
|
306
|
+
router.instance_exec(self) do |_|
|
307
|
+
_.ok {@fixed_endpoints} == {
|
308
|
+
"/api/books" => book_list_api,
|
309
|
+
"/api/books.json" => book_list_api,
|
310
|
+
"/api/books.html" => book_list_api,
|
311
|
+
}
|
312
|
+
_.ok {@variable_endpoints} == [
|
313
|
+
[%r!\A/api/books(?:\.([^./?]+))?\z!,
|
314
|
+
["format"], book_list_api, nil, nil],
|
315
|
+
]
|
316
|
+
end
|
317
|
+
|
318
|
+
end
|
319
|
+
|
280
320
|
spec "[!saa1a] compiles compound urlpath regexp." do
|
281
321
|
id = '[^./?]+'
|
282
322
|
z = '(\z)'
|
283
|
-
|
323
|
+
expected = %r!\A/(?:a(?:pi/books/#{id}(?:#{z}|/(?:edit#{z}|comments(?:#{z}|/#{id}#{z})))|dmin/books/#{id}#{z})|static/.*(\z))\z!
|
324
|
+
ok {@router.urlpath_rexp} == expected
|
284
325
|
end
|
285
326
|
|
286
327
|
spec "[!f1d7s] builds variable endpoint list." do
|
@@ -292,11 +333,12 @@ Oktest.scope do
|
|
292
333
|
}
|
293
334
|
@router.instance_exec(self) do |_|
|
294
335
|
_.ok {@variable_endpoints} == [
|
295
|
-
[%r'\A/api/books/(#{id})\z', ['id'], book_show_api, (11..-1)],
|
296
|
-
[%r'\A/api/books/(#{id})/edit\z', ['id'], book_edit_api, (11..-6)],
|
297
|
-
[%r'\A/api/books/(#{id})/comments\z',
|
298
|
-
[%r'\A/api/books/(#{id})/comments/(#{id})\z', ['book_id', 'comment_id'], comment_update_api,
|
299
|
-
[%r'\A/admin/books/(#{id})\z', ['id'], map2, (13..-1)],
|
336
|
+
[%r'\A/api/books/(#{id})\z', ['id'], book_show_api, (11..-1), nil],
|
337
|
+
[%r'\A/api/books/(#{id})/edit\z', ['id'], book_edit_api, (11..-6), nil],
|
338
|
+
[%r'\A/api/books/(#{id})/comments\z', ['book_id'], comment_create_api, (11..-10), nil],
|
339
|
+
[%r'\A/api/books/(#{id})/comments/(#{id})\z', ['book_id', 'comment_id'], comment_update_api, (11..-1), '/comments/'],
|
340
|
+
[%r'\A/admin/books/(#{id})\z', ['id'], map2, (13..-1), nil],
|
341
|
+
[%r'\A/static/(.*)\z', ['filepath'], {"GET"=>staticfile_app}, (8..-1), nil],
|
300
342
|
]
|
301
343
|
end
|
302
344
|
end
|
data/test/shared.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-jet_router
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kwatch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oktest
|