vigetlabs-routing-filter 0.2.4
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/.travis.yml +1 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +82 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +204 -0
- data/Rakefile +31 -0
- data/ci/Gemfile.rails-2.3.x +8 -0
- data/ci/Gemfile.rails-2.3.x.lock +40 -0
- data/ci/Gemfile.rails-3.x +8 -0
- data/ci/Gemfile.rails-3.x.lock +40 -0
- data/lib/routing-filter.rb +1 -0
- data/lib/routing_filter.rb +27 -0
- data/lib/routing_filter/adapters/rails_2.rb +69 -0
- data/lib/routing_filter/adapters/rails_3.rb +77 -0
- data/lib/routing_filter/chain.rb +22 -0
- data/lib/routing_filter/filter.rb +37 -0
- data/lib/routing_filter/filters/extension.rb +76 -0
- data/lib/routing_filter/filters/locale.rb +83 -0
- data/lib/routing_filter/filters/pagination.rb +47 -0
- data/lib/routing_filter/filters/uuid.rb +40 -0
- data/lib/routing_filter/version.rb +3 -0
- data/test/all.rb +1 -0
- data/test/filters/all_filters/generation.rb +42 -0
- data/test/filters/all_filters/recognition.rb +92 -0
- data/test/filters/all_filters_test.rb +25 -0
- data/test/filters/extension_test.rb +54 -0
- data/test/filters/locale_test.rb +69 -0
- data/test/filters/pagination_test.rb +29 -0
- data/test/filters/uuid_test.rb +40 -0
- data/test/rails_test.rb +92 -0
- data/test/routes_test.rb +31 -0
- data/test/routing_filter_test.rb +47 -0
- data/test/test_adapters/rails_2.rb +17 -0
- data/test/test_adapters/rails_3.rb +28 -0
- data/test/test_helper.rb +41 -0
- data/vigetlabs-routing-filter.gemspec +90 -0
- metadata +130 -0
@@ -0,0 +1,40 @@
|
|
1
|
+
# The Uuid filter extracts an UUID segment from the beginning of the recognized
|
2
|
+
# path and exposes the page parameter as params[:page]. When a path is generated
|
3
|
+
# the filter adds the segments to the path accordingly if the page parameter is
|
4
|
+
# passed to the url helper.
|
5
|
+
#
|
6
|
+
# incoming url: /d00fbbd1-82b6-4c1a-a57d-098d529d6854/product/1
|
7
|
+
# filtered url: /product/1
|
8
|
+
# params: params[:uuid] = 'd00fbbd1-82b6-4c1a-a57d-098d529d6854'
|
9
|
+
#
|
10
|
+
# You can install the filter like this:
|
11
|
+
#
|
12
|
+
# # in config/routes.rb
|
13
|
+
# Rails.application.routes.draw do
|
14
|
+
# filter :uuid
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# To make your named_route helpers or url_for add the uuid segment you can use:
|
18
|
+
#
|
19
|
+
# product_path(:uuid => uuid)
|
20
|
+
# url_for(product, :uuid => uuid)
|
21
|
+
|
22
|
+
module RoutingFilter
|
23
|
+
class Uuid < Filter
|
24
|
+
UUID_SEGMENT = %r(^/?([a-z\d]{8}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{4}\-[a-z\d]{12})(/)?)
|
25
|
+
|
26
|
+
def around_recognize(path, env, &block)
|
27
|
+
uuid = extract_segment!(UUID_SEGMENT, path)
|
28
|
+
yield.tap do |params|
|
29
|
+
params[:uuid] = uuid if uuid
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def around_generate(params, &block)
|
34
|
+
uuid = params.delete(:uuid)
|
35
|
+
yield.tap do |result|
|
36
|
+
prepend_segment!(result, uuid) if uuid
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/test/all.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir[File.expand_path('../**/*_test.rb', __FILE__)].each { |file| require file }
|
@@ -0,0 +1,42 @@
|
|
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
|
@@ -0,0 +1,92 @@
|
|
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
|
@@ -0,0 +1,25 @@
|
|
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
|
@@ -0,0 +1,54 @@
|
|
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
|
@@ -0,0 +1,69 @@
|
|
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
|
@@ -0,0 +1,29 @@
|
|
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
|
@@ -0,0 +1,40 @@
|
|
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
ADDED
@@ -0,0 +1,92 @@
|
|
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
|