routing-filter 0.2.4 → 0.3.0.beta
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/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
|