routing-filter 0.2.4 → 0.3.0.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +3 -0
- data/README.markdown +8 -6
- data/lib/routing/filter.rb +1 -0
- data/lib/routing_filter/adapters/rails_3.rb +5 -35
- data/lib/routing_filter/adapters/routers/journey.rb +23 -0
- data/lib/routing_filter/adapters/routers/rack_mount.rb +42 -0
- data/lib/routing_filter/filters/extension.rb +6 -12
- data/lib/routing_filter/filters/locale.rb +4 -6
- data/lib/routing_filter/filters/pagination.rb +2 -2
- data/lib/routing_filter/filters/uuid.rb +5 -5
- data/lib/routing_filter/version.rb +1 -1
- metadata +70 -111
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -82
- data/Rakefile +0 -11
- data/test/all.rb +0 -1
- data/test/filters/all_filters/generation.rb +0 -42
- data/test/filters/all_filters/recognition.rb +0 -92
- data/test/filters/all_filters_test.rb +0 -25
- data/test/filters/extension_test.rb +0 -54
- data/test/filters/locale_test.rb +0 -69
- data/test/filters/pagination_test.rb +0 -29
- data/test/filters/uuid_test.rb +0 -40
- data/test/rails_test.rb +0 -92
- data/test/routes_test.rb +0 -31
- data/test/routing_filter_test.rb +0 -47
- data/test/test_adapters/rails_2.rb +0 -17
- data/test/test_adapters/rails_3.rb +0 -28
- data/test/test_helper.rb +0 -41
data/CHANGELOG.md
ADDED
data/README.markdown
CHANGED
@@ -61,17 +61,19 @@ Filters can also accept options:
|
|
61
61
|
|
62
62
|
## Running the tests
|
63
63
|
|
64
|
-
|
64
|
+
To run the tests against different dependencies [appraisal](https://github.com/thoughtbot/appraisal) is used.
|
65
65
|
|
66
|
-
Running the tests
|
66
|
+
Running the tests for all supported Rails versions:
|
67
67
|
|
68
68
|
$ bundle install
|
69
|
-
$
|
69
|
+
$ bundle exec rake all
|
70
70
|
|
71
|
-
Running the tests
|
71
|
+
Running the tests for a single version, for example Rails 3.1:
|
72
72
|
|
73
|
-
$
|
74
|
-
$
|
73
|
+
$ bundle install
|
74
|
+
$ bundle exec rake appraisal:rails-3.1 test
|
75
|
+
|
76
|
+
Valid appraisal targets include rails-2.3, rails-3.0, rails-3.1 and rails-3.2
|
75
77
|
|
76
78
|
## Filter order
|
77
79
|
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'routing_filter'
|
@@ -39,39 +39,9 @@ ActionDispatch::Routing::RouteSet.class_eval do
|
|
39
39
|
alias_method_chain :clear!, :filtering
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
@filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
|
48
|
-
end
|
42
|
+
case ActionPack::VERSION::MINOR
|
43
|
+
when 2
|
44
|
+
require 'routing_filter/adapters/routers/journey'
|
45
|
+
when 0,1
|
46
|
+
require 'routing_filter/adapters/routers/rack_mount'
|
49
47
|
end
|
50
|
-
|
51
|
-
# gah. so who's hoped monkeypatching optimized code wouldn't be necessary with rails 3 anymore?
|
52
|
-
Rack::Mount::CodeGeneration.class_eval do
|
53
|
-
def optimize_recognize_with_filtering!
|
54
|
-
optimize_recognize_without_filtering!
|
55
|
-
(class << self; self; end).class_eval do
|
56
|
-
alias_method_chain :recognize, :filtering
|
57
|
-
end
|
58
|
-
end
|
59
|
-
alias :optimize_recognize_without_filtering! :optimize_recognize!
|
60
|
-
alias :optimize_recognize! :optimize_recognize_with_filtering!
|
61
|
-
|
62
|
-
# note: if you overly and unnecessarily use blocks in your lowlevel libraries you make it fricking
|
63
|
-
# hard for your users to hook in anywhere
|
64
|
-
def recognize_with_filtering(request, &block)
|
65
|
-
path, route, matches, params = request.env['PATH_INFO'], nil, nil, nil
|
66
|
-
original_path = path.dup
|
67
|
-
|
68
|
-
filters.run(:around_recognize, path, request.env) do
|
69
|
-
route, matches, params = recognize_without_filtering(request)
|
70
|
-
params || {}
|
71
|
-
end
|
72
|
-
|
73
|
-
request.env['PATH_INFO'] = original_path # hmm ...
|
74
|
-
block.call(route, matches, params) if route
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'journey/routes'
|
2
|
+
require 'journey/router'
|
3
|
+
|
4
|
+
Journey::Routes.class_eval do
|
5
|
+
def filters
|
6
|
+
@filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
Journey::Router.class_eval do
|
11
|
+
def find_routes_with_filtering env
|
12
|
+
path, filter_parameters = env['PATH_INFO'], {}
|
13
|
+
|
14
|
+
@routes.filters.run(:around_recognize, path, env) do
|
15
|
+
filter_parameters
|
16
|
+
end
|
17
|
+
|
18
|
+
find_routes_without_filtering(env).map do |match, parameters, route|
|
19
|
+
[ match, parameters.merge(filter_parameters), route ]
|
20
|
+
end
|
21
|
+
end
|
22
|
+
alias_method_chain :find_routes, :filtering
|
23
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'action_dispatch'
|
2
|
+
require 'rack/mount/route_set'
|
3
|
+
require 'rack/mount/code_generation'
|
4
|
+
|
5
|
+
Rack::Mount::RouteSet.class_eval do
|
6
|
+
def filters
|
7
|
+
@filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
# gah. so who's hoped monkeypatching optimized code wouldn't be necessary with rails 3 anymore?
|
12
|
+
Rack::Mount::CodeGeneration.class_eval do
|
13
|
+
def optimize_recognize_with_filtering!
|
14
|
+
optimize_recognize_without_filtering!
|
15
|
+
(class << self; self; end).class_eval do
|
16
|
+
alias_method_chain :recognize, :filtering
|
17
|
+
end
|
18
|
+
end
|
19
|
+
alias :optimize_recognize_without_filtering! :optimize_recognize!
|
20
|
+
alias :optimize_recognize! :optimize_recognize_with_filtering!
|
21
|
+
|
22
|
+
# note: if you overly and unnecessarily use blocks in your lowlevel libraries you make it fricking
|
23
|
+
# hard for your users to hook in anywhere
|
24
|
+
def recognize_with_filtering(request, &block)
|
25
|
+
path, route, matches, params = request.env['PATH_INFO'], nil, nil, nil
|
26
|
+
original_path = path.dup
|
27
|
+
|
28
|
+
filters.run(:around_recognize, path, request.env) do
|
29
|
+
route, matches, params = recognize_without_filtering(request)
|
30
|
+
params || {}
|
31
|
+
end
|
32
|
+
|
33
|
+
request.env['PATH_INFO'] = original_path # hmm ...
|
34
|
+
return nil unless route
|
35
|
+
|
36
|
+
if block_given?
|
37
|
+
return block.call(route, matches, params)
|
38
|
+
else
|
39
|
+
return route, matches, params
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -2,22 +2,16 @@
|
|
2
2
|
# recognized path. When a path is generated the filter re-adds the extension
|
3
3
|
# to the path accordingly.
|
4
4
|
#
|
5
|
-
# incoming url: /
|
6
|
-
# filtered url: /
|
7
|
-
#
|
5
|
+
# incoming url: /products.xml
|
6
|
+
# filtered url: /products
|
7
|
+
# generated url: /products.xml
|
8
8
|
#
|
9
9
|
# You can install the filter like this:
|
10
10
|
#
|
11
11
|
# # in config/routes.rb
|
12
12
|
# Rails.application.routes.draw do
|
13
|
-
# filter :
|
13
|
+
# filter :extension
|
14
14
|
# end
|
15
|
-
#
|
16
|
-
# To make your named_route helpers or url_for add the pagination segments you
|
17
|
-
# can use:
|
18
|
-
#
|
19
|
-
# products_path(:locale => 'de')
|
20
|
-
# url_for(:products, :locale => 'de'))
|
21
15
|
|
22
16
|
module RoutingFilter
|
23
17
|
class Extension < Filter
|
@@ -31,7 +25,7 @@ module RoutingFilter
|
|
31
25
|
|
32
26
|
def around_recognize(path, env, &block)
|
33
27
|
extract_extension!(path) unless excluded?(path)
|
34
|
-
yield
|
28
|
+
yield
|
35
29
|
end
|
36
30
|
|
37
31
|
def around_generate(params, &block)
|
@@ -73,4 +67,4 @@ module RoutingFilter
|
|
73
67
|
url =~ /\.#{Mime::EXTENSION_LOOKUP.keys.join('|')}(\?|$)/
|
74
68
|
end
|
75
69
|
end
|
76
|
-
end
|
70
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# The Locale filter extracts segments matching /:locale from the beginning of
|
2
|
-
# the recognized path and exposes the page parameter as params[:
|
2
|
+
# the recognized path and exposes the page parameter as params[:locale]. When a
|
3
3
|
# path is generated the filter adds the segments to the path accordingly if
|
4
4
|
# the page parameter is passed to the url helper.
|
5
5
|
#
|
6
|
-
# incoming url: /de/products
|
7
|
-
# filtered url: /
|
6
|
+
# incoming url: /de/products
|
7
|
+
# filtered url: /products
|
8
8
|
# params: params[:locale] = 'de'
|
9
9
|
#
|
10
10
|
# You can install the filter like this:
|
@@ -14,14 +14,12 @@
|
|
14
14
|
# filter :locale
|
15
15
|
# end
|
16
16
|
#
|
17
|
-
# To make your named_route helpers or url_for add the
|
17
|
+
# To make your named_route helpers or url_for add the locale segments you
|
18
18
|
# can use:
|
19
19
|
#
|
20
20
|
# products_path(:locale => 'de')
|
21
21
|
# url_for(:products, :locale => 'de'))
|
22
22
|
|
23
|
-
require 'i18n'
|
24
|
-
|
25
23
|
module RoutingFilter
|
26
24
|
class Locale < Filter
|
27
25
|
@@include_default_locale = true
|
@@ -26,7 +26,7 @@ module RoutingFilter
|
|
26
26
|
|
27
27
|
def around_recognize(path, env, &block)
|
28
28
|
page = extract_segment!(PAGINATION_SEGMENT, path)
|
29
|
-
yield
|
29
|
+
yield.tap do |params|
|
30
30
|
params[:page] = page.to_i if page
|
31
31
|
end
|
32
32
|
end
|
@@ -44,4 +44,4 @@ module RoutingFilter
|
|
44
44
|
page && page.to_i != 1
|
45
45
|
end
|
46
46
|
end
|
47
|
-
end
|
47
|
+
end
|
@@ -3,8 +3,8 @@
|
|
3
3
|
# the filter adds the segments to the path accordingly if the page parameter is
|
4
4
|
# passed to the url helper.
|
5
5
|
#
|
6
|
-
# incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/
|
7
|
-
# filtered url: /
|
6
|
+
# incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/products
|
7
|
+
# filtered url: /products
|
8
8
|
# params: params[:uuid] = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
9
9
|
#
|
10
10
|
# You can install the filter like this:
|
@@ -16,8 +16,8 @@
|
|
16
16
|
#
|
17
17
|
# To make your named_route helpers or url_for add the uuid segment you can use:
|
18
18
|
#
|
19
|
-
#
|
20
|
-
# url_for(
|
19
|
+
# products_path(:uuid => uuid)
|
20
|
+
# url_for(:products, :uuid => uuid)
|
21
21
|
|
22
22
|
module RoutingFilter
|
23
23
|
class Uuid < Filter
|
@@ -37,4 +37,4 @@ module RoutingFilter
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
40
|
-
end
|
40
|
+
end
|
metadata
CHANGED
@@ -1,149 +1,108 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: routing-filter
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 4
|
10
|
-
version: 0.2.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.3.0.beta
|
5
|
+
prerelease: 6
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Sven Fuchs
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: actionpack
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &11358960 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: i18n
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *11358960
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: appraisal
|
27
|
+
requirement: &11358420 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
46
33
|
type: :development
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: rails
|
50
34
|
prerelease: false
|
51
|
-
|
35
|
+
version_requirements: *11358420
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: i18n
|
38
|
+
requirement: &11357860 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
60
44
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: test_declarative
|
64
45
|
prerelease: false
|
65
|
-
|
46
|
+
version_requirements: *11357860
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: test_declarative
|
49
|
+
requirement: &11284300 !ruby/object:Gem::Requirement
|
66
50
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
|
71
|
-
segments:
|
72
|
-
- 0
|
73
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
74
55
|
type: :development
|
75
|
-
|
76
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *11284300
|
58
|
+
description: Routing filters wraps around the complex beast that the Rails routing
|
59
|
+
system is, allowing for unseen flexibility and power in Rails URL recognition and
|
60
|
+
generation.
|
77
61
|
email: svenfuchs@artweb-design.de
|
78
62
|
executables: []
|
79
|
-
|
80
63
|
extensions: []
|
81
|
-
|
82
64
|
extra_rdoc_files: []
|
83
|
-
|
84
|
-
|
85
|
-
-
|
86
|
-
-
|
87
|
-
- lib/
|
65
|
+
files:
|
66
|
+
- CHANGELOG.md
|
67
|
+
- README.markdown
|
68
|
+
- MIT-LICENSE
|
69
|
+
- lib/routing/filter.rb
|
88
70
|
- lib/routing_filter/chain.rb
|
89
|
-
- lib/routing_filter/filters/extension.rb
|
90
71
|
- lib/routing_filter/filters/locale.rb
|
91
|
-
- lib/routing_filter/filters/pagination.rb
|
92
72
|
- lib/routing_filter/filters/uuid.rb
|
73
|
+
- lib/routing_filter/filters/pagination.rb
|
74
|
+
- lib/routing_filter/filters/extension.rb
|
93
75
|
- lib/routing_filter/version.rb
|
94
|
-
- lib/
|
76
|
+
- lib/routing_filter/filter.rb
|
77
|
+
- lib/routing_filter/adapters/rails_3.rb
|
78
|
+
- lib/routing_filter/adapters/routers/journey.rb
|
79
|
+
- lib/routing_filter/adapters/routers/rack_mount.rb
|
80
|
+
- lib/routing_filter/adapters/rails_2.rb
|
95
81
|
- lib/routing_filter.rb
|
96
|
-
-
|
97
|
-
- test/rails_test.rb
|
98
|
-
- test/routes_test.rb
|
99
|
-
- test/test_adapters/rails_2.rb
|
100
|
-
- test/test_adapters/rails_3.rb
|
101
|
-
- test/routing_filter_test.rb
|
102
|
-
- test/test_helper.rb
|
103
|
-
- test/filters/locale_test.rb
|
104
|
-
- test/filters/all_filters_test.rb
|
105
|
-
- test/filters/pagination_test.rb
|
106
|
-
- test/filters/all_filters/generation.rb
|
107
|
-
- test/filters/all_filters/recognition.rb
|
108
|
-
- test/filters/uuid_test.rb
|
109
|
-
- test/filters/extension_test.rb
|
110
|
-
- Gemfile.lock
|
111
|
-
- MIT-LICENSE
|
112
|
-
- Rakefile
|
113
|
-
- Gemfile
|
114
|
-
- README.markdown
|
82
|
+
- lib/routing-filter.rb
|
115
83
|
homepage: http://github.com/svenfuchs/routing-filter
|
116
84
|
licenses: []
|
117
|
-
|
118
85
|
post_install_message:
|
119
86
|
rdoc_options: []
|
120
|
-
|
121
|
-
require_paths:
|
87
|
+
require_paths:
|
122
88
|
- lib
|
123
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
124
90
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
129
|
-
|
130
|
-
- 0
|
131
|
-
version: "0"
|
132
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
96
|
none: false
|
134
|
-
requirements:
|
135
|
-
- -
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
version: "0"
|
97
|
+
requirements:
|
98
|
+
- - ! '>'
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: 1.3.1
|
141
101
|
requirements: []
|
142
|
-
|
143
|
-
|
144
|
-
rubygems_version: 1.8.5
|
102
|
+
rubyforge_project: ! '[none]'
|
103
|
+
rubygems_version: 1.8.10
|
145
104
|
signing_key:
|
146
105
|
specification_version: 3
|
147
|
-
summary: Routing filters wraps around the complex beast that the Rails routing system
|
106
|
+
summary: Routing filters wraps around the complex beast that the Rails routing system
|
107
|
+
is, allowing for unseen flexibility and power in Rails URL recognition and generation
|
148
108
|
test_files: []
|
149
|
-
|
data/Gemfile
DELETED
data/Gemfile.lock
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
abstract (1.0.0)
|
5
|
-
actionmailer (3.0.3)
|
6
|
-
actionpack (= 3.0.3)
|
7
|
-
mail (~> 2.2.9)
|
8
|
-
actionpack (3.0.3)
|
9
|
-
activemodel (= 3.0.3)
|
10
|
-
activesupport (= 3.0.3)
|
11
|
-
builder (~> 2.1.2)
|
12
|
-
erubis (~> 2.6.6)
|
13
|
-
i18n (~> 0.4)
|
14
|
-
rack (~> 1.2.1)
|
15
|
-
rack-mount (~> 0.6.13)
|
16
|
-
rack-test (~> 0.5.6)
|
17
|
-
tzinfo (~> 0.3.23)
|
18
|
-
activemodel (3.0.3)
|
19
|
-
activesupport (= 3.0.3)
|
20
|
-
builder (~> 2.1.2)
|
21
|
-
i18n (~> 0.4)
|
22
|
-
activerecord (3.0.3)
|
23
|
-
activemodel (= 3.0.3)
|
24
|
-
activesupport (= 3.0.3)
|
25
|
-
arel (~> 2.0.2)
|
26
|
-
tzinfo (~> 0.3.23)
|
27
|
-
activeresource (3.0.3)
|
28
|
-
activemodel (= 3.0.3)
|
29
|
-
activesupport (= 3.0.3)
|
30
|
-
activesupport (3.0.3)
|
31
|
-
arel (2.0.6)
|
32
|
-
builder (2.1.2)
|
33
|
-
columnize (0.3.2)
|
34
|
-
erubis (2.6.6)
|
35
|
-
abstract (>= 1.0.0)
|
36
|
-
i18n (0.5.0)
|
37
|
-
linecache (0.43)
|
38
|
-
mail (2.2.12)
|
39
|
-
activesupport (>= 2.3.6)
|
40
|
-
i18n (>= 0.4.0)
|
41
|
-
mime-types (~> 1.16)
|
42
|
-
treetop (~> 1.4.8)
|
43
|
-
mime-types (1.16)
|
44
|
-
polyglot (0.3.1)
|
45
|
-
rack (1.2.1)
|
46
|
-
rack-mount (0.6.13)
|
47
|
-
rack (>= 1.0.0)
|
48
|
-
rack-test (0.5.6)
|
49
|
-
rack (>= 1.0)
|
50
|
-
rails (3.0.3)
|
51
|
-
actionmailer (= 3.0.3)
|
52
|
-
actionpack (= 3.0.3)
|
53
|
-
activerecord (= 3.0.3)
|
54
|
-
activeresource (= 3.0.3)
|
55
|
-
activesupport (= 3.0.3)
|
56
|
-
bundler (~> 1.0)
|
57
|
-
railties (= 3.0.3)
|
58
|
-
railties (3.0.3)
|
59
|
-
actionpack (= 3.0.3)
|
60
|
-
activesupport (= 3.0.3)
|
61
|
-
rake (>= 0.8.7)
|
62
|
-
thor (~> 0.14.4)
|
63
|
-
rake (0.8.7)
|
64
|
-
ruby-debug (0.10.4)
|
65
|
-
columnize (>= 0.1)
|
66
|
-
ruby-debug-base (~> 0.10.4.0)
|
67
|
-
ruby-debug-base (0.10.4)
|
68
|
-
linecache (>= 0.3)
|
69
|
-
test_declarative (0.0.5)
|
70
|
-
thor (0.14.6)
|
71
|
-
treetop (1.4.9)
|
72
|
-
polyglot (>= 0.3.1)
|
73
|
-
tzinfo (0.3.23)
|
74
|
-
|
75
|
-
PLATFORMS
|
76
|
-
ruby
|
77
|
-
|
78
|
-
DEPENDENCIES
|
79
|
-
i18n
|
80
|
-
rails (~> 3.0)
|
81
|
-
ruby-debug
|
82
|
-
test_declarative
|
data/Rakefile
DELETED
data/test/all.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Dir[File.expand_path('../**/*_test.rb', __FILE__)].each { |file| require file }
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module Generation
|
2
|
-
test 'generates the path /some.html (extension)' do
|
3
|
-
params = self.params
|
4
|
-
assert_equal '/some.html', routes.generate(params)
|
5
|
-
end
|
6
|
-
|
7
|
-
# extension with any
|
8
|
-
|
9
|
-
test 'generates the path /de/some (extension, locale)' do
|
10
|
-
params = self.params.merge(:locale => 'de')
|
11
|
-
assert_equal '/de/some.html', routes.generate(params)
|
12
|
-
end
|
13
|
-
|
14
|
-
test 'generates the path /some/page/2 (extension, pagination)' do
|
15
|
-
params = self.params.merge(:page => 2)
|
16
|
-
assert_equal '/some/page/2.html', routes.generate(params)
|
17
|
-
end
|
18
|
-
|
19
|
-
test 'generates the path /:uuid/some (extension, uuid)' do
|
20
|
-
params = self.params.merge(:uuid => uuid)
|
21
|
-
assert_equal "/#{uuid}/some.html", routes.generate(params)
|
22
|
-
end
|
23
|
-
|
24
|
-
# extension, locale with any
|
25
|
-
|
26
|
-
test 'generates the path /de/some/page/2 (extension, locale, pagination)' do
|
27
|
-
params = self.params.merge(:locale => 'de', :page => 2)
|
28
|
-
assert_equal '/de/some/page/2.html', routes.generate(params)
|
29
|
-
end
|
30
|
-
|
31
|
-
test 'generates the path /de/:uuid/some (extension, locale, uuid)' do
|
32
|
-
params = self.params.merge(:locale => 'de', :uuid => uuid)
|
33
|
-
assert_equal "/de/#{uuid}/some.html", routes.generate(params)
|
34
|
-
end
|
35
|
-
|
36
|
-
# all
|
37
|
-
|
38
|
-
test 'generates the path /de/some/page/2 (extension, pagination, uuid)' do
|
39
|
-
params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
|
40
|
-
assert_equal "/de/#{uuid}/some/page/2.html", routes.generate(params)
|
41
|
-
end
|
42
|
-
end
|
@@ -1,92 +0,0 @@
|
|
1
|
-
module Recognition
|
2
|
-
# 1 filter
|
3
|
-
|
4
|
-
test 'recognizes the path /some.html (extension)' do
|
5
|
-
params = self.params
|
6
|
-
assert_equal params, routes.recognize_path('/some.html')
|
7
|
-
end
|
8
|
-
|
9
|
-
test 'recognizes the path /de/some (locale)' do
|
10
|
-
params = self.params.merge(:locale => 'de')
|
11
|
-
assert_equal params, routes.recognize_path('/de/some')
|
12
|
-
end
|
13
|
-
|
14
|
-
test 'recognizes the path /some/page/2 (pagination)' do
|
15
|
-
params = self.params.merge(:page => 2)
|
16
|
-
assert_equal params, routes.recognize_path('/some/page/2')
|
17
|
-
end
|
18
|
-
|
19
|
-
test 'recognizes the path /:uuid/some (uuid)' do
|
20
|
-
params = self.params.merge(:uuid => uuid)
|
21
|
-
assert_equal params, routes.recognize_path("/#{uuid}/some")
|
22
|
-
end
|
23
|
-
|
24
|
-
# extension with any
|
25
|
-
|
26
|
-
test 'recognizes the path /de/some.html (extension, locale)' do
|
27
|
-
params = self.params.merge(:locale => 'de')
|
28
|
-
assert_equal params, routes.recognize_path('/de/some.html')
|
29
|
-
end
|
30
|
-
|
31
|
-
test 'recognizes the path /some/page/2.html (extension, pagination)' do
|
32
|
-
params = self.params.merge(:page => 2)
|
33
|
-
assert_equal params, routes.recognize_path('/some/page/2.html')
|
34
|
-
end
|
35
|
-
|
36
|
-
test 'recognizes the path /:uuid/some.html (extension, uuid)' do
|
37
|
-
params = self.params.merge(:uuid => uuid)
|
38
|
-
assert_equal params, routes.recognize_path("/#{uuid}/some.html")
|
39
|
-
end
|
40
|
-
|
41
|
-
# locale with any
|
42
|
-
|
43
|
-
test 'recognizes the path /de/some/page/2 (locale, pagination)' do
|
44
|
-
params = self.params.merge(:locale => 'de', :page => 2)
|
45
|
-
assert_equal params, routes.recognize_path('/de/some/page/2')
|
46
|
-
end
|
47
|
-
|
48
|
-
test 'recognizes the path /de/:uuid/some (locale, uuid)' do
|
49
|
-
params = self.params.merge(:locale => 'de', :uuid => uuid)
|
50
|
-
assert_equal params, routes.recognize_path("/de/#{uuid}/some")
|
51
|
-
end
|
52
|
-
|
53
|
-
# pagination with any
|
54
|
-
|
55
|
-
test 'recognizes the path /:uuid/some/page/2 (pagination, uuid)' do
|
56
|
-
params = self.params.merge(:page => 2, :uuid => uuid)
|
57
|
-
assert_equal params, routes.recognize_path("/#{uuid}/some/page/2")
|
58
|
-
end
|
59
|
-
|
60
|
-
# extension, locale with any
|
61
|
-
|
62
|
-
test 'recognizes the path /de/some/page/2.html (extension, locale, pagination)' do
|
63
|
-
params = self.params.merge(:locale => 'de', :page => 2)
|
64
|
-
assert_equal params, routes.recognize_path("/de/some/page/2.html")
|
65
|
-
end
|
66
|
-
|
67
|
-
test 'recognizes the path /de/:uuid/some.html (extension, locale, uuid)' do
|
68
|
-
params = self.params.merge(:locale => 'de', :uuid => uuid)
|
69
|
-
assert_equal params, routes.recognize_path("/de/#{uuid}/some.html")
|
70
|
-
end
|
71
|
-
|
72
|
-
# extension, pagination with any
|
73
|
-
|
74
|
-
test 'recognizes the path /some/page/2.html (extension, pagination, uuid)' do
|
75
|
-
params = self.params.merge(:page => 2, :uuid => uuid)
|
76
|
-
assert_equal params, routes.recognize_path("/#{uuid}/some/page/2.html")
|
77
|
-
end
|
78
|
-
|
79
|
-
# locale, pagination with any
|
80
|
-
|
81
|
-
test 'recognizes the path /de/some/page/2 (locale, pagination, uuid)' do
|
82
|
-
params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
|
83
|
-
assert_equal params, routes.recognize_path("/de/#{uuid}/some/page/2")
|
84
|
-
end
|
85
|
-
|
86
|
-
# all
|
87
|
-
|
88
|
-
test 'recognizes the path /de/:uuid/some/page/2.html (extension, locale, pagination, uuid)' do
|
89
|
-
params = self.params.merge(:locale => 'de', :page => 2, :uuid => uuid)
|
90
|
-
assert_equal params, routes.recognize_path("/de/#{uuid}/some/page/2.html")
|
91
|
-
end
|
92
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'filters/all_filters/generation'
|
3
|
-
require 'filters/all_filters/recognition'
|
4
|
-
|
5
|
-
class AllFiltersTest < Test::Unit::TestCase
|
6
|
-
attr_reader :routes, :params, :uuid
|
7
|
-
|
8
|
-
def setup
|
9
|
-
I18n.locale = nil
|
10
|
-
I18n.default_locale = :en
|
11
|
-
I18n.available_locales = %w(de en)
|
12
|
-
|
13
|
-
RoutingFilter::Locale.include_default_locale = false
|
14
|
-
|
15
|
-
@params = { :controller => 'some', :action => 'index' }
|
16
|
-
@uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
17
|
-
|
18
|
-
@routes = draw_routes do
|
19
|
-
filter :uuid, :pagination ,:locale, :extension
|
20
|
-
match 'some', :to => 'some#index'
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
include Recognition, Generation
|
25
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ForceExtensionTest < Test::Unit::TestCase
|
4
|
-
attr_reader :routes, :params
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@routes = draw_routes do
|
8
|
-
filter :extension, :exclude => %r(^/(admin|$))
|
9
|
-
match '/', :to => 'some#index'
|
10
|
-
match 'some/:id(.:format)', :to => 'some#show'
|
11
|
-
match '/admin/some/new', :to => 'some#new'
|
12
|
-
end
|
13
|
-
@params = { :controller => 'some', :action => 'show', :id => '1' }
|
14
|
-
end
|
15
|
-
|
16
|
-
test 'recognizes the path some/1.html and strips the extension' do
|
17
|
-
assert_nil routes.recognize_path('/some/1.html')[:format]
|
18
|
-
end
|
19
|
-
|
20
|
-
test 'recognizes the path some/1.xml but does not strip the extension' do
|
21
|
-
assert 'xml', routes.recognize_path('/some/1.xml')[:format]
|
22
|
-
end
|
23
|
-
|
24
|
-
test 'appends the extension .html to the generated path' do
|
25
|
-
assert_equal '/some/1.html', routes.generate(params)
|
26
|
-
end
|
27
|
-
|
28
|
-
test 'does not touch existing extensions in generated paths' do
|
29
|
-
assert_equal '/some/1.xml', routes.generate(params.merge(:format => 'xml'))
|
30
|
-
end
|
31
|
-
|
32
|
-
test 'does not touch url query params in generated paths' do
|
33
|
-
assert_equal '/some/1.html?foo=bar', routes.generate(params.merge(:foo => 'bar'))
|
34
|
-
end
|
35
|
-
|
36
|
-
test 'excludes / by default' do
|
37
|
-
assert_equal '/', routes.generate(:controller => 'some', :action => 'index')
|
38
|
-
end
|
39
|
-
|
40
|
-
test 'excludes / by default (with url query params)' do
|
41
|
-
assert_equal '/?foo=bar', routes.generate(:controller => 'some', :action => 'index', :foo => 'bar')
|
42
|
-
end
|
43
|
-
|
44
|
-
test 'excludes with custom regexp' do
|
45
|
-
assert_equal '/admin/some/new', routes.generate(:controller => 'some', :action => 'new')
|
46
|
-
end
|
47
|
-
|
48
|
-
# TODO - why would anyone want to have this?
|
49
|
-
#
|
50
|
-
# test 'does not exclude / when :exclude => false was passed' do
|
51
|
-
# routes.filters.first.instance_variable_set(:@exclude, false)
|
52
|
-
# assert_equal '/.html', routes.generate(:controller => 'some', :action => 'index')
|
53
|
-
# end
|
54
|
-
end
|
data/test/filters/locale_test.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class LocaleTest < Test::Unit::TestCase
|
4
|
-
attr_reader :routes, :show_params, :index_params
|
5
|
-
|
6
|
-
def setup
|
7
|
-
I18n.locale = nil
|
8
|
-
I18n.default_locale = :en
|
9
|
-
I18n.available_locales = %w(de en)
|
10
|
-
|
11
|
-
RoutingFilter::Locale.include_default_locale = true
|
12
|
-
|
13
|
-
@index_params = { :controller => 'some', :action => 'index' }
|
14
|
-
@show_params = { :controller => 'some', :action => 'show', :id => '1' }
|
15
|
-
|
16
|
-
@routes = draw_routes do
|
17
|
-
filter :locale
|
18
|
-
match 'products/:id', :to => 'some#show'
|
19
|
-
match '/', :to => 'some#index'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
test 'recognizes the path /en' do
|
24
|
-
assert_equal index_params.merge(:locale => 'en'), routes.recognize_path('/en')
|
25
|
-
end
|
26
|
-
|
27
|
-
test 'recognizes the path /en/' do
|
28
|
-
assert_equal index_params.merge(:locale => 'en'), routes.recognize_path('/en/')
|
29
|
-
end
|
30
|
-
|
31
|
-
test 'recognizes the path /en/products/1' do
|
32
|
-
assert_equal show_params.merge(:locale => 'en'), routes.recognize_path('/en/products/1')
|
33
|
-
end
|
34
|
-
|
35
|
-
test 'recognizes the path /de/products/1' do
|
36
|
-
assert_equal show_params.merge(:locale => 'de'), routes.recognize_path('/de/products/1')
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
test 'prepends the segments /:locale to the generated path / if the current locale is not the default locale' do
|
41
|
-
I18n.locale = 'de'
|
42
|
-
assert_equal '/de', routes.generate(index_params)
|
43
|
-
end
|
44
|
-
|
45
|
-
test 'prepends the segments /:locale to the generated path /products/1 if the current locale is not the default locale' do
|
46
|
-
I18n.locale = 'de'
|
47
|
-
assert_equal '/de/products/1', routes.generate(show_params)
|
48
|
-
end
|
49
|
-
|
50
|
-
test 'prepends the segments /:locale to the generated path if it was passed as a param' do
|
51
|
-
assert_equal '/de/products/1', routes.generate(show_params.merge(:locale => 'de'))
|
52
|
-
end
|
53
|
-
|
54
|
-
test 'prepends the segments /:locale if the given locale is the default_locale and include_default_locale is true' do
|
55
|
-
assert RoutingFilter::Locale.include_default_locale?
|
56
|
-
assert_equal '/en/products/1', routes.generate(show_params.merge(:locale => 'en'))
|
57
|
-
end
|
58
|
-
|
59
|
-
test 'does not prepend the segments /:locale if the current locale is the default_locale and include_default_locale is false' do
|
60
|
-
I18n.locale = 'en'
|
61
|
-
RoutingFilter::Locale.include_default_locale = false
|
62
|
-
assert_equal '/products/1', routes.generate(show_params)
|
63
|
-
end
|
64
|
-
|
65
|
-
test 'does not prepend the segments /:locale if the given locale is the default_locale and include_default_locale is false' do
|
66
|
-
RoutingFilter::Locale.include_default_locale = false
|
67
|
-
assert_equal '/products/1', routes.generate(show_params.merge(:locale => I18n.default_locale))
|
68
|
-
end
|
69
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class PaginationTest < Test::Unit::TestCase
|
4
|
-
attr_reader :routes, :params
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@routes = draw_routes do
|
8
|
-
filter :pagination
|
9
|
-
match 'some', :to => 'some#index'
|
10
|
-
end
|
11
|
-
@params = { :controller => 'some', :action => 'index', :page => 2 }
|
12
|
-
end
|
13
|
-
|
14
|
-
test 'recognizes the path some/page/2' do
|
15
|
-
assert_equal params, routes.recognize_path('/some/page/2')
|
16
|
-
end
|
17
|
-
|
18
|
-
test 'appends the segments /page/:page to the generated path if the passed :page param does not equal 1' do
|
19
|
-
assert_equal '/some/page/2', routes.generate(params)
|
20
|
-
end
|
21
|
-
|
22
|
-
test 'does not append anything to the generated path if the passed :page param equals 1' do
|
23
|
-
assert_equal '/some', routes.generate(params.merge(:page => 1))
|
24
|
-
end
|
25
|
-
|
26
|
-
test 'appends the segments /page/:page to the generated path but respects url query params' do
|
27
|
-
assert_equal '/some/page/2?foo=bar', routes.generate(params.merge(:foo => 'bar'))
|
28
|
-
end
|
29
|
-
end
|
data/test/filters/uuid_test.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class UuidTest < Test::Unit::TestCase
|
4
|
-
attr_reader :routes, :uuid, :params
|
5
|
-
|
6
|
-
def setup
|
7
|
-
@routes = draw_routes do
|
8
|
-
filter :uuid
|
9
|
-
match 'some/:id', :to => 'some#show'
|
10
|
-
end
|
11
|
-
@uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
12
|
-
@params = { :controller => 'some', :action => 'show', :id => '1', :uuid => uuid }
|
13
|
-
end
|
14
|
-
|
15
|
-
test 'recognizes the path :uuid/product/1' do
|
16
|
-
assert_equal params, routes.recognize_path("/#{uuid}/some/1")
|
17
|
-
end
|
18
|
-
|
19
|
-
test 'prepends the :uuid segment to the generated path if passed as a param' do
|
20
|
-
assert_equal "/#{uuid}/some/1", routes.generate(params)
|
21
|
-
end
|
22
|
-
|
23
|
-
test 'matches uuid segments' do
|
24
|
-
pattern = Uuid::UUID_SEGMENT
|
25
|
-
uuids = %w(
|
26
|
-
d00fbbd1-82b6-4c1a-a57d-098d529d6854 cdb33760-94da-11df-981c-0800200c9a66
|
27
|
-
0c65a6ec-6491-4316-a137-0021cf4e6471 cbbd44c3-c195-48e5-be04-3cc8a6578f51
|
28
|
-
)
|
29
|
-
uuids.each { |uuid| assert pattern.match("/#{uuid}/"), "does not match /#{uuid}/ but should" }
|
30
|
-
end
|
31
|
-
|
32
|
-
test 'does not match non-uuid segments' do
|
33
|
-
pattern = Uuid::UUID_SEGMENT
|
34
|
-
uuids = %w(
|
35
|
-
!aaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa aaaa-aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa
|
36
|
-
aaaaaaaa_aaaa_aaaa_aaaa_aaaaaaaaaaaa aaaaaaaa-aaaa-aaaa-aaaaaaaaaaaa
|
37
|
-
)
|
38
|
-
uuids.each { |uuid| assert !pattern.match("/#{uuid}/"), "matches /#{uuid}/ but shouldn't" }
|
39
|
-
end
|
40
|
-
end
|
data/test/rails_test.rb
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require "test_adapters/rails_#{ActionPack::VERSION::MAJOR}"
|
3
|
-
|
4
|
-
class RailsTest < Test::Unit::TestCase
|
5
|
-
include TestRailsAdapter
|
6
|
-
|
7
|
-
I18n.available_locales = [:en, :de]
|
8
|
-
|
9
|
-
class TestsController < ActionController::Base
|
10
|
-
include Rails.application.routes.url_helpers if defined?(Rails)
|
11
|
-
|
12
|
-
def index
|
13
|
-
url = url_for(params.merge(:only_path => true))
|
14
|
-
render :text => params.merge(:url => url).inspect
|
15
|
-
end
|
16
|
-
|
17
|
-
def show
|
18
|
-
url = foo_path(params)
|
19
|
-
render :text => params.merge(:url => url).inspect
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def params
|
24
|
-
response.status.to_s.include?('200') ? eval(response.body).symbolize_keys : {}
|
25
|
-
end
|
26
|
-
|
27
|
-
test "get to /" do
|
28
|
-
get '/'
|
29
|
-
assert_nil params[:locale]
|
30
|
-
assert_nil params[:page]
|
31
|
-
assert_nil params[:uuid]
|
32
|
-
assert_equal '/en.html', params[:url]
|
33
|
-
end
|
34
|
-
|
35
|
-
test "get to /foo/1" do
|
36
|
-
get '/foo/1'
|
37
|
-
assert_nil params[:locale]
|
38
|
-
assert_nil params[:page]
|
39
|
-
assert_nil params[:uuid]
|
40
|
-
assert_equal '/en/foo/1.html', params[:url]
|
41
|
-
end
|
42
|
-
|
43
|
-
test "get to /de" do
|
44
|
-
get '/de'
|
45
|
-
assert_equal 'de', params[:locale]
|
46
|
-
assert_nil params[:page]
|
47
|
-
assert_nil params[:uuid]
|
48
|
-
assert_equal '/de.html', params[:url]
|
49
|
-
end
|
50
|
-
|
51
|
-
test "get to /de/foo/1" do
|
52
|
-
get '/de/foo/1'
|
53
|
-
assert_equal 'de', params[:locale]
|
54
|
-
assert_nil params[:page]
|
55
|
-
assert_nil params[:uuid]
|
56
|
-
assert_equal '/de/foo/1.html', params[:url]
|
57
|
-
end
|
58
|
-
|
59
|
-
test "get to /page/2" do
|
60
|
-
get '/page/2'
|
61
|
-
assert_nil params[:locale]
|
62
|
-
assert_equal 2, params[:page]
|
63
|
-
assert_nil params[:uuid]
|
64
|
-
assert_equal '/en/page/2.html', params[:url]
|
65
|
-
end
|
66
|
-
|
67
|
-
test "get to /foo/1/page/2" do
|
68
|
-
get '/foo/1/page/2'
|
69
|
-
assert_nil params[:locale]
|
70
|
-
assert_equal 2, params[:page]
|
71
|
-
assert_nil params[:uuid]
|
72
|
-
assert_equal '/en/foo/1/page/2.html', params[:url]
|
73
|
-
end
|
74
|
-
|
75
|
-
test "get to /:uuid" do
|
76
|
-
uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
77
|
-
get "/#{uuid}"
|
78
|
-
assert_nil params[:locale]
|
79
|
-
assert_nil params[:page]
|
80
|
-
assert_equal uuid, params[:uuid]
|
81
|
-
assert_equal "/en/#{uuid}.html", params[:url]
|
82
|
-
end
|
83
|
-
|
84
|
-
test "get to /foo/1/:uuid" do
|
85
|
-
uuid = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
86
|
-
get "/#{uuid}/foo/1"
|
87
|
-
assert_nil params[:locale]
|
88
|
-
assert_nil params[:page]
|
89
|
-
assert_equal uuid, params[:uuid]
|
90
|
-
assert_equal "/en/#{uuid}/foo/1.html", params[:url]
|
91
|
-
end
|
92
|
-
end
|
data/test/routes_test.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class RoutesTest < Test::Unit::TestCase
|
4
|
-
class RoutingFilter::Test < Filter
|
5
|
-
def around_recognize(path, env, &block)
|
6
|
-
'recognized'
|
7
|
-
end
|
8
|
-
|
9
|
-
def around_generate(*args, &block)
|
10
|
-
'generated'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
attr_reader :routes
|
15
|
-
|
16
|
-
def setup
|
17
|
-
@routes = draw_routes { |set| set.filter :test }
|
18
|
-
end
|
19
|
-
|
20
|
-
test "routes.filter instantiates and registers a filter" do
|
21
|
-
assert routes.filters.first.is_a?(RoutingFilter::Test)
|
22
|
-
end
|
23
|
-
|
24
|
-
# test "filter.around_recognize is being called" do
|
25
|
-
# assert_equal 'recognized', routes.recognize_path('/')
|
26
|
-
# end
|
27
|
-
|
28
|
-
test "filter.around_generate is being called" do
|
29
|
-
assert_equal 'generated', routes.generate({})
|
30
|
-
end
|
31
|
-
end
|
data/test/routing_filter_test.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
include RoutingFilter
|
4
|
-
|
5
|
-
class RoutingFilterTest < Test::Unit::TestCase
|
6
|
-
class FooFilter < Filter
|
7
|
-
attr_reader :name
|
8
|
-
|
9
|
-
def initialize(name)
|
10
|
-
@name = name
|
11
|
-
end
|
12
|
-
|
13
|
-
def foo(log, &block)
|
14
|
-
log << name
|
15
|
-
yield
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
attr_reader :chain
|
20
|
-
|
21
|
-
def setup
|
22
|
-
@chain = Chain.new
|
23
|
-
@chain.unshift FooFilter.new('custom filter')
|
24
|
-
@chain.unshift FooFilter.new('common filter')
|
25
|
-
end
|
26
|
-
|
27
|
-
test "filter.previous is nil for the first filter in the chain" do
|
28
|
-
assert_nil chain.first.previous
|
29
|
-
end
|
30
|
-
|
31
|
-
test "filter.previous returns the previous filter in the chain" do
|
32
|
-
assert_equal chain.first, chain.last.previous
|
33
|
-
end
|
34
|
-
|
35
|
-
test "filter.next is nil for the last filter in the chain" do
|
36
|
-
assert_nil chain.last.next
|
37
|
-
end
|
38
|
-
|
39
|
-
test "filter.next returns the next filter in the chain" do
|
40
|
-
assert_equal chain.last, chain.first.next
|
41
|
-
end
|
42
|
-
|
43
|
-
test "chain.run calls the given method on registered filters in reverse order" do
|
44
|
-
log = []
|
45
|
-
assert_equal 'common filter, custom filter, finalizer', chain.run(:foo, log, &lambda { log << 'finalizer' }).join(', ')
|
46
|
-
end
|
47
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
module TestRailsAdapter
|
4
|
-
routes = ActionController::Routing::Routes = ActionController::Routing::RouteSet.new
|
5
|
-
routes.draw do |map|
|
6
|
-
map.connect '/', :controller => 'rails_test/tests', :action => 'index'
|
7
|
-
map.foo '/foo/:id', :controller => 'rails_test/tests', :action => 'show'
|
8
|
-
map.filter :uuid, :pagination ,:locale, :extension
|
9
|
-
end
|
10
|
-
|
11
|
-
attr_reader :session
|
12
|
-
delegate :get, :response, :to => :session
|
13
|
-
|
14
|
-
def setup
|
15
|
-
@session = ActionController::Integration::Session.new(lambda { |env| ActionController::Routing::Routes.call(env) })
|
16
|
-
end
|
17
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
require "rails"
|
4
|
-
require 'rack/test'
|
5
|
-
|
6
|
-
module TestRailsAdapter
|
7
|
-
include ::Rack::Test::Methods
|
8
|
-
|
9
|
-
APP = Class.new(Rails::Application).tap do |app|
|
10
|
-
app.config.secret_token = "3b7cd727ee24e8444053437c36cc66c4"
|
11
|
-
app.config.session_store :cookie_store, :key => "_myapp_session"
|
12
|
-
app.config.active_support.deprecation = :log
|
13
|
-
app.routes.draw do
|
14
|
-
match "/" => "rails_test/tests#index"
|
15
|
-
match "/foo/:id" => "rails_test/tests#show", :as => 'foo'
|
16
|
-
filter :uuid, :pagination ,:locale, :extension
|
17
|
-
end
|
18
|
-
app.initialize!
|
19
|
-
end
|
20
|
-
|
21
|
-
def app
|
22
|
-
APP
|
23
|
-
end
|
24
|
-
|
25
|
-
def response
|
26
|
-
last_response
|
27
|
-
end
|
28
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
ENV['RAILS_ENV'] = 'test'
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'test/unit'
|
5
|
-
require 'bundler/setup'
|
6
|
-
|
7
|
-
require 'i18n'
|
8
|
-
require 'action_pack'
|
9
|
-
require 'active_support'
|
10
|
-
require 'action_controller'
|
11
|
-
require 'active_support/core_ext/enumerable.rb'
|
12
|
-
require 'test_declarative'
|
13
|
-
require 'routing_filter'
|
14
|
-
|
15
|
-
include RoutingFilter
|
16
|
-
|
17
|
-
class SomeController < ActionController::Base
|
18
|
-
end
|
19
|
-
|
20
|
-
class Test::Unit::TestCase
|
21
|
-
def draw_routes(&block)
|
22
|
-
normalized_block = rails_2? ? lambda { |set| set.instance_eval(&block) } : block
|
23
|
-
klass = rails_2? ? ActionController::Routing::RouteSet : ActionDispatch::Routing::RouteSet
|
24
|
-
klass.new.tap { |set| set.draw(&normalized_block) }
|
25
|
-
end
|
26
|
-
|
27
|
-
def rails_2?
|
28
|
-
ActionPack::VERSION::MAJOR == 2
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
if ActionPack::VERSION::MAJOR == 2
|
33
|
-
ActionController::Routing::RouteSet::Mapper.class_eval do
|
34
|
-
def match(pattern, options)
|
35
|
-
pattern.gsub!('(.:format)', '.:format')
|
36
|
-
controller, action = options.delete(:to).split('#')
|
37
|
-
options.merge!(:controller => controller, :action => action)
|
38
|
-
connect(pattern, options)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|