padrino-core 0.12.0 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/lib/padrino-core.rb +4 -4
  3. data/lib/padrino-core/application.rb +6 -195
  4. data/lib/padrino-core/application/application_setup.rb +199 -0
  5. data/lib/padrino-core/application/routing.rb +66 -25
  6. data/lib/padrino-core/cli/base.rb +8 -5
  7. data/lib/padrino-core/cli/rake.rb +12 -9
  8. data/lib/padrino-core/loader.rb +1 -1
  9. data/lib/padrino-core/logger.rb +25 -0
  10. data/lib/padrino-core/mounter.rb +8 -3
  11. data/lib/padrino-core/reloader.rb +2 -2
  12. data/lib/padrino-core/server.rb +50 -17
  13. data/lib/padrino-core/version.rb +1 -1
  14. data/padrino-core.gemspec +2 -10
  15. data/test/fixtures/apps/demo_app.rb +7 -0
  16. data/test/fixtures/apps/demo_demo.rb +7 -0
  17. data/test/helper.rb +6 -37
  18. data/test/test_application.rb +12 -13
  19. data/test/test_core.rb +12 -13
  20. data/test/test_csrf_protection.rb +49 -23
  21. data/test/test_dependencies.rb +7 -7
  22. data/test/test_filters.rb +41 -17
  23. data/test/test_flash.rb +24 -24
  24. data/test/test_locale.rb +1 -1
  25. data/test/test_logger.rb +39 -27
  26. data/test/test_mounter.rb +34 -20
  27. data/test/test_reloader_complex.rb +5 -6
  28. data/test/test_reloader_simple.rb +23 -20
  29. data/test/test_reloader_system.rb +10 -7
  30. data/test/test_restful_routing.rb +1 -1
  31. data/test/test_router.rb +7 -7
  32. data/test/test_routing.rb +177 -141
  33. metadata +14 -53
  34. data/lib/padrino-core/application/rendering.rb +0 -325
  35. data/lib/padrino-core/application/rendering/extensions/erubis.rb +0 -68
  36. data/lib/padrino-core/application/rendering/extensions/haml.rb +0 -29
  37. data/lib/padrino-core/application/rendering/extensions/slim.rb +0 -21
  38. data/lib/padrino-core/locale/cs.yml +0 -33
  39. data/lib/padrino-core/locale/da.yml +0 -33
  40. data/lib/padrino-core/locale/de.yml +0 -33
  41. data/lib/padrino-core/locale/en.yml +0 -33
  42. data/lib/padrino-core/locale/es.yml +0 -33
  43. data/lib/padrino-core/locale/fr.yml +0 -33
  44. data/lib/padrino-core/locale/hu.yml +0 -33
  45. data/lib/padrino-core/locale/it.yml +0 -39
  46. data/lib/padrino-core/locale/ja.yml +0 -33
  47. data/lib/padrino-core/locale/lv.yml +0 -33
  48. data/lib/padrino-core/locale/nl.yml +0 -33
  49. data/lib/padrino-core/locale/no.yml +0 -33
  50. data/lib/padrino-core/locale/pl.yml +0 -33
  51. data/lib/padrino-core/locale/pt_br.yml +0 -39
  52. data/lib/padrino-core/locale/ro.yml +0 -33
  53. data/lib/padrino-core/locale/ru.yml +0 -34
  54. data/lib/padrino-core/locale/sv.yml +0 -33
  55. data/lib/padrino-core/locale/tr.yml +0 -33
  56. data/lib/padrino-core/locale/uk.yml +0 -33
  57. data/lib/padrino-core/locale/zh_cn.yml +0 -33
  58. data/lib/padrino-core/locale/zh_tw.yml +0 -33
  59. data/lib/padrino-core/support_lite.rb +0 -259
  60. data/test/fixtures/apps/.components +0 -6
  61. data/test/fixtures/apps/.gitignore +0 -7
  62. data/test/fixtures/apps/render.rb +0 -13
  63. data/test/fixtures/apps/views/blog/post.erb +0 -1
  64. data/test/fixtures/layouts/layout.erb +0 -1
  65. data/test/mini_shoulda.rb +0 -45
  66. data/test/test_rendering.rb +0 -606
  67. data/test/test_rendering_extensions.rb +0 -14
  68. data/test/test_support_lite.rb +0 -56
data/test/test_mounter.rb CHANGED
@@ -12,8 +12,8 @@ describe "Mounter" do
12
12
  $VERBOSE = @_verbose_was
13
13
  end
14
14
 
15
- context 'for mounter functionality' do
16
- should 'check methods' do
15
+ describe 'for mounter functionality' do
16
+ it 'should check methods' do
17
17
  mounter = Padrino::Mounter.new("test_app", :app_file => "/path/to/test.rb")
18
18
  mounter.to("/test_app")
19
19
  assert_kind_of Padrino::Mounter, mounter
@@ -27,14 +27,14 @@ describe "Mounter" do
27
27
  assert_equal Padrino.root, mounter.app_root
28
28
  end
29
29
 
30
- should 'use app.root if available' do
30
+ it 'should use app.root if available' do
31
31
  require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/kiq')
32
32
  mounter = Padrino::Mounter.new("kiq", :app_class => "Kiq")
33
33
  mounter.to("/test_app")
34
34
  assert_equal '/weird', mounter.app_root
35
35
  end
36
36
 
37
- should 'check locate_app_file with __FILE__' do
37
+ it 'should check locate_app_file with __FILE__' do
38
38
  mounter = Padrino::Mounter.new("test_app", :app_file => __FILE__)
39
39
  mounter.to("/test_app")
40
40
  assert_equal "test_app", mounter.name
@@ -44,14 +44,14 @@ describe "Mounter" do
44
44
  assert_equal File.dirname(mounter.app_file), mounter.app_root
45
45
  end
46
46
 
47
- should 'mount an app' do
47
+ it 'should mount an app' do
48
48
  class ::AnApp < Padrino::Application; end
49
49
  Padrino.mount("an_app").to("/")
50
50
  assert_equal AnApp, Padrino.mounted_apps.first.app_obj
51
51
  assert_equal ["an_app"], Padrino.mounted_apps.map(&:name)
52
52
  end
53
53
 
54
- should 'correctly mount an app in a namespace' do
54
+ it 'should correctly mount an app in a namespace' do
55
55
  module ::SomeNamespace
56
56
  class AnApp < Padrino::Application; end
57
57
  end
@@ -60,7 +60,7 @@ describe "Mounter" do
60
60
  assert_equal ["some_namespace/an_app"], Padrino.mounted_apps.map(&:name)
61
61
  end
62
62
 
63
- should 'correctly set a name of a namespaced app' do
63
+ it 'should correctly set a name of a namespaced app' do
64
64
  module ::SomeNamespace2
65
65
  class AnApp < Padrino::Application
66
66
  get(:index) { settings.app_name }
@@ -71,7 +71,7 @@ describe "Mounter" do
71
71
  assert_equal "some_namespace2/an_app", res.body
72
72
  end
73
73
 
74
- should 'mount a primary app to root uri' do
74
+ it 'should mount a primary app to root uri' do
75
75
  mounter = Padrino.mount("test_app", :app_file => __FILE__).to("/")
76
76
  assert_equal "test_app", mounter.name
77
77
  assert_equal "TestApp", mounter.app_class
@@ -81,7 +81,7 @@ describe "Mounter" do
81
81
  assert_equal File.dirname(mounter.app_file), mounter.app_root
82
82
  end
83
83
 
84
- should 'mount a primary app to sub_uri' do
84
+ it 'should mount a primary app to sub_uri' do
85
85
  mounter = Padrino.mount("test_app", :app_file => __FILE__).to('/me')
86
86
  assert_equal "test_app", mounter.name
87
87
  assert_equal "TestApp", mounter.app_class
@@ -91,18 +91,18 @@ describe "Mounter" do
91
91
  assert_equal File.dirname(mounter.app_file), mounter.app_root
92
92
  end
93
93
 
94
- should "raise error when app has no located file" do
94
+ it 'should raise error when app has no located file' do
95
95
  # TODO enabling this screws minitest
96
96
  # assert_raises(Padrino::Mounter::MounterException) { Padrino.mount("tester_app").to('/test') }
97
97
  assert_equal 0, Padrino.mounted_apps.size
98
98
  end
99
99
 
100
- should "raise error when app has no located object" do
100
+ it 'should raise error when app has no located object' do
101
101
  assert_raises(Padrino::Mounter::MounterException) { Padrino.mount("tester_app", :app_file => "/path/to/file.rb").to('/test') }
102
102
  assert_equal 0, Padrino.mounted_apps.size
103
103
  end
104
104
 
105
- should 'mount multiple apps' do
105
+ it 'should mount multiple apps' do
106
106
  class ::OneApp < Padrino::Application; end
107
107
  class ::TwoApp < Padrino::Application; end
108
108
 
@@ -118,7 +118,16 @@ describe "Mounter" do
118
118
  assert_equal ["one_app", "two_app"], Padrino.mounted_apps.map(&:name)
119
119
  end
120
120
 
121
- should 'change mounted_root' do
121
+ it 'should mount app with the same name as the module' do
122
+ Padrino.mount("Demo::App", :app_file => File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/demo_app.rb')).to("/app")
123
+ Padrino.mount("Demo::Demo", :app_file => File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/demo_demo.rb')).to("/")
124
+
125
+ Padrino.mounted_apps.each do |app|
126
+ assert_equal app.app_obj.setup_application!, true
127
+ end
128
+ end
129
+
130
+ it 'should change mounted_root' do
122
131
  Padrino.mounted_root = "fixtures"
123
132
  assert_equal Padrino.root("fixtures", "test", "app.rb"), Padrino.mounted_root("test", "app.rb")
124
133
  Padrino.mounted_root = "apps"
@@ -127,7 +136,7 @@ describe "Mounter" do
127
136
  assert_equal Padrino.root("test", "app.rb"), Padrino.mounted_root("test", "app.rb")
128
137
  end
129
138
 
130
- should "be able to access routes data for mounted apps" do
139
+ it 'should be able to access routes data for mounted apps' do
131
140
  class ::OneApp < Padrino::Application
132
141
  get("/test") { "test" }
133
142
  get(:index, :provides => [:js, :json]) { "index" }
@@ -155,15 +164,18 @@ describe "Mounter" do
155
164
  put(:update) { "foo bar update" }
156
165
  delete(:destroy) { "foo bar delete" }
157
166
  end
167
+ controllers :test, :nested do
168
+ get(:test1){ "test1" }
169
+ end
158
170
  end
159
171
 
160
172
  Padrino.mount("one_app").to("/")
161
173
  Padrino.mount("two_app").to("/two_app")
162
174
 
163
175
  assert_equal 15, Padrino.mounted_apps[0].routes.size
164
- assert_equal 14, Padrino.mounted_apps[1].routes.size
176
+ assert_equal 16, Padrino.mounted_apps[1].routes.size
165
177
  assert_equal 6, Padrino.mounted_apps[0].named_routes.size
166
- assert_equal 10, Padrino.mounted_apps[1].named_routes.size
178
+ assert_equal 11, Padrino.mounted_apps[1].named_routes.size
167
179
 
168
180
  first_route = Padrino.mounted_apps[0].named_routes[3]
169
181
  assert_equal "posts show", first_route.identifier.to_s
@@ -181,9 +193,11 @@ describe "Mounter" do
181
193
  assert_equal "/\\/foo|\\/baz/", regexp_route.path
182
194
  foo_bar_route = Padrino.mounted_apps[1].named_routes[5]
183
195
  assert_equal "(:foo_bar, :index)", foo_bar_route.name
196
+ nested_route = Padrino.mounted_apps[1].named_routes[10]
197
+ assert_equal "(:test_nested, :test1)", nested_route.name
184
198
  end
185
199
 
186
- should "configure cascade apps" do
200
+ it 'should configure cascade apps' do
187
201
  class ::App1 < Padrino::Application
188
202
  get(:index) { halt 404, 'index1' }
189
203
  end
@@ -200,7 +214,7 @@ describe "Mounter" do
200
214
  assert_equal 'index2', res.body
201
215
  end
202
216
 
203
- should 'correctly instantiate a new padrino application' do
217
+ it 'should correctly instantiate a new padrino application' do
204
218
  mock_app do
205
219
  get("/demo_1"){ "Im Demo 1" }
206
220
  get("/demo_2"){ "Im Demo 2" }
@@ -212,7 +226,7 @@ describe "Mounter" do
212
226
  assert_equal "Im Demo 2", response.body
213
227
  end
214
228
 
215
- should "not clobber the public setting when mounting an app" do
229
+ it 'should not clobber the public setting when mounting an app' do
216
230
  class ::PublicApp < Padrino::Application
217
231
  set :root, "/root"
218
232
  set :public_folder, File.expand_path(File.dirname(__FILE__))
@@ -224,7 +238,7 @@ describe "Mounter" do
224
238
  assert_equal File.read(__FILE__), res.body
225
239
  end
226
240
 
227
- should "load apps from gems" do
241
+ it 'should load apps from gems' do
228
242
  spec_file = Padrino.root("fixtures", "app_gem", "app_gem.gemspec")
229
243
  spec = Gem::Specification.load(spec_file)
230
244
  spec.activate
@@ -3,14 +3,14 @@ require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/complex')
3
3
 
4
4
  describe "ComplexReloader" do
5
5
 
6
- context 'for complex reload functionality' do
7
- setup do
6
+ describe 'for complex reload functionality' do
7
+ before do
8
8
  Padrino.clear!
9
9
  Padrino.mount("complex_1_demo").to("/complex_1_demo")
10
10
  Padrino.mount("complex_2_demo").to("/complex_2_demo")
11
11
  end
12
12
 
13
- should 'correctly instantiate Complex(1-2)Demo fixture' do
13
+ it 'should correctly instantiate Complex(1-2)Demo fixture' do
14
14
  assert_equal ["/complex_1_demo", "/complex_2_demo"], Padrino.mounted_apps.map(&:uri_root)
15
15
  assert_equal ["complex_1_demo", "complex_2_demo"], Padrino.mounted_apps.map(&:name)
16
16
  assert Complex1Demo.reload?
@@ -19,7 +19,7 @@ describe "ComplexReloader" do
19
19
  assert_match %r{fixtures/apps/complex.rb}, Complex2Demo.app_file
20
20
  end
21
21
 
22
- should 'correctly reload Complex(1-2)Demo fixture' do
22
+ it 'should correctly reload Complex(1-2)Demo fixture' do
23
23
  assert_match %r{fixtures/apps/complex.rb}, Complex1Demo.app_file
24
24
  @app = Padrino.application
25
25
 
@@ -47,8 +47,7 @@ describe "ComplexReloader" do
47
47
  new_buffer.gsub!(/get\(:destroy\)/, 'get(:destroy, :with => :id)')
48
48
  begin
49
49
  File.open(Complex1Demo.app_file, "w") { |f| f.write(new_buffer) }
50
- sleep 1.1 # We need at least a cooldown of 1 sec.
51
- get "/complex_2_demo"
50
+ Time.stub(:now, Time.now + 2) { get "/complex_2_demo" }
52
51
  assert_equal new_phrase, body
53
52
 
54
53
  # Re-Check that we didn't forget any route
@@ -3,9 +3,9 @@ require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/simple')
3
3
 
4
4
  describe "SimpleReloader" do
5
5
 
6
- context 'for simple reset functionality' do
6
+ describe 'for simple reset functionality' do
7
7
 
8
- should 'reset routes' do
8
+ it 'should reset routes' do
9
9
  mock_app do
10
10
  (1..10).each do |i|
11
11
  get("/#{i}") { "Foo #{i}" }
@@ -22,7 +22,7 @@ describe "SimpleReloader" do
22
22
  end
23
23
  end
24
24
 
25
- should 'keep sinatra routes on development' do
25
+ it 'should keep sinatra routes on development' do
26
26
  mock_app do
27
27
  set :environment, :development
28
28
  get("/"){ "ok" }
@@ -42,36 +42,39 @@ describe "SimpleReloader" do
42
42
  end
43
43
  end
44
44
 
45
- context 'for simple reload functionality' do
46
-
47
- should 'correctly instantiate SimpleDemo fixture' do
45
+ describe 'for simple reload functionality' do
46
+ before do
48
47
  Padrino.clear!
49
48
  Padrino.mount("simple_demo").to("/")
49
+ Padrino.reload!
50
+ end
51
+
52
+ it 'should correctly instantiate SimpleDemo fixture' do
50
53
  assert_equal ["simple_demo"], Padrino.mounted_apps.map(&:name)
51
54
  assert SimpleDemo.reload?
52
55
  assert_match %r{fixtures/apps/simple.rb}, SimpleDemo.app_file
53
56
  end
54
57
 
55
- should_eventually 'correctly reload SimpleDemo fixture' do
56
- # TODO fix this test
58
+ it 'should correctly reload SimpleDemo fixture' do
57
59
  @app = SimpleDemo
58
60
  get "/"
59
61
  assert ok?
60
62
  new_phrase = "The magick number is: #{rand(2**255)}!"
61
63
  buffer = File.read(SimpleDemo.app_file)
62
64
  new_buffer = buffer.gsub(/The magick number is: \d+!/, new_phrase)
63
- File.open(SimpleDemo.app_file, "w") { |f| f.write(new_buffer) }
64
- sleep 1.1 # We need at least a cooldown of 1 sec.
65
- get "/"
66
- assert_equal new_phrase, body
67
-
68
- # Now we need to prevent to commit a new changed file so we revert it
69
- File.open(SimpleDemo.app_file, "w") { |f| f.write(buffer) }
70
- Padrino.reload!
65
+ begin
66
+ File.open(SimpleDemo.app_file, "w") { |f| f.write(new_buffer) }
67
+ Time.stub(:now, Time.now + 2) { get "/" }
68
+ assert_equal new_phrase, body
69
+ ensure
70
+ File.open(SimpleDemo.app_file, "w") { |f| f.write(buffer) }
71
+ Padrino.reload!
72
+ end
71
73
  end
72
74
 
73
- should 'correctly reset SimpleDemo fixture' do
75
+ it 'should correctly reset SimpleDemo fixture' do
74
76
  @app = SimpleDemo
77
+ get "/"
75
78
  @app.reload!
76
79
  get "/rand"
77
80
  assert ok?
@@ -81,17 +84,17 @@ describe "SimpleReloader" do
81
84
  assert_equal 2, @app.filters[:after].size # app + content-type + padrino-flash
82
85
  assert_equal 0, @app.middleware.size
83
86
  assert_equal 4, @app.routes.size # GET+HEAD of "/" + GET+HEAD of "/rand" = 4
84
- assert_equal 3, @app.extensions.size # [Padrino::Routing, Padrino::Rendering, Padrino::Flash]
87
+ assert_equal 3, @app.extensions.size # [Padrino::ApplicationSetup, Padrino::Routing, Padrino::Flash]
85
88
  assert_equal 0, @app.templates.size
86
89
  @app.reload!
87
90
  get "/rand"
88
- assert_not_equal last_body, body
91
+ refute_equal last_body, body
89
92
  assert_equal 2, @app.filters[:before].size # one is ours the other is default_filter for content type
90
93
  assert_equal 1, @app.errors.size
91
94
  assert_equal 2, @app.filters[:after].size
92
95
  assert_equal 0, @app.middleware.size
93
96
  assert_equal 4, @app.routes.size # GET+HEAD of "/" = 2
94
- assert_equal 3, @app.extensions.size # [Padrino::Routing, Padrino::Rendering, Padrino::Flash]
97
+ assert_equal 3, @app.extensions.size # [Padrino::ApplicationSetup, Padrino::Routing, Padrino::Flash]
95
98
  assert_equal 0, @app.templates.size
96
99
  end
97
100
  end
@@ -4,16 +4,19 @@ require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/system')
4
4
  require File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/static')
5
5
 
6
6
  describe "SystemReloader" do
7
- context 'for wierd and difficult reload events' do
8
- should 'reload system features if they were required only in helper' do
7
+ describe 'for wierd and difficult reload events' do
8
+ before do
9
9
  @app = SystemDemo
10
+ get '/'
11
+ end
12
+
13
+ it 'should reload system features if they were required only in helper' do
10
14
  @app.reload!
11
15
  get '/'
12
16
  assert_equal 'Resolv', body
13
17
  end
14
18
 
15
- should 'reload children on parent change' do
16
- @app = SystemDemo
19
+ it 'should reload children on parent change' do
17
20
  assert_equal Child.new.family, 'Danes'
18
21
  parent_file = File.expand_path(File.dirname(__FILE__) + '/fixtures/apps/models/parent.rb')
19
22
  new_class = <<-DOC
@@ -42,7 +45,7 @@ describe "SystemReloader" do
42
45
  end
43
46
  end
44
47
 
45
- should 'tamper with LOAD_PATH' do
48
+ it 'should tamper with LOAD_PATH' do
46
49
  SystemDemo.load_paths.each do |lib_dir|
47
50
  assert_includes $LOAD_PATH, lib_dir
48
51
  end
@@ -51,12 +54,12 @@ describe "SystemReloader" do
51
54
  end
52
55
  end
53
56
 
54
- should 'not fail horribly on reload event with non-padrino apps' do
57
+ it 'should not fail horribly on reload event with non-padrino apps' do
55
58
  Padrino.mount("kiq").to("/")
56
59
  Padrino.reload!
57
60
  end
58
61
 
59
- should 'not reload apps with disabled reload' do
62
+ it 'should not reload apps with disabled reload' do
60
63
  Padrino.mount(StaticDemo).to("/")
61
64
  Padrino.reload!
62
65
  end
@@ -1,7 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
 
3
3
  describe "Routing" do
4
- should 'perform restul routing' do
4
+ it 'should perform restul routing' do
5
5
  mock_app do
6
6
  controller :parent => :parents do
7
7
  get :index do
data/test/test_router.rb CHANGED
@@ -7,7 +7,7 @@ describe "Router" do
7
7
  Padrino.clear!
8
8
  end
9
9
 
10
- should "dispatch paths correctly" do
10
+ it 'should dispatch paths correctly' do
11
11
  app = lambda { |env|
12
12
  [200, {
13
13
  'X-ScriptName' => env['SCRIPT_NAME'],
@@ -69,7 +69,7 @@ describe "Router" do
69
69
  assert_equal "/", res["X-PathInfo"]
70
70
  end
71
71
 
72
- should "dispatch requests to cascade mounted apps" do
72
+ it 'should dispatch requests to cascade mounted apps' do
73
73
  app = lambda { |env|
74
74
  scary = !!env['PATH_INFO'].match(/scary/)
75
75
  [scary ? 404 : 200, {
@@ -120,7 +120,7 @@ describe "Router" do
120
120
  assert_equal "/scary", res["X-PathInfo"]
121
121
  end
122
122
 
123
- should "dispatch requests to cascade mounted apps and not cascade ok statuses" do
123
+ it 'should dispatch requests to cascade mounted apps and not cascade ok statuses' do
124
124
 
125
125
  api = mock_app do
126
126
  get 'scary' do
@@ -158,7 +158,7 @@ describe "Router" do
158
158
 
159
159
  end
160
160
 
161
- should "dispatch requests to cascade mounted apps until it sees a cascade == false or []g" do
161
+ it 'should dispatch requests to cascade mounted apps until it sees a cascade == false or []g' do
162
162
  app = mock_app do
163
163
  get 'scary' do
164
164
  ""
@@ -188,7 +188,7 @@ describe "Router" do
188
188
  assert request_case.call.ok?
189
189
  end
190
190
 
191
- should "dispatches hosts correctly" do
191
+ it 'should dispatches hosts correctly' do
192
192
  map = Padrino::Router.new(
193
193
  { :host => "foo.org", :to => lambda { |env|
194
194
  [200,
@@ -226,7 +226,7 @@ describe "Router" do
226
226
  assert_equal "subdomain.foo.org", res["X-Position"]
227
227
  end
228
228
 
229
- should "works with padrino core applications" do
229
+ it 'should works with padrino core applications' do
230
230
  Padrino.mount("simple_demo").host("padrino.org")
231
231
  assert_equal ["simple_demo"], Padrino.mounted_apps.map(&:name)
232
232
  assert_equal ["padrino.org"], Padrino.mounted_apps.map(&:app_host)
@@ -241,7 +241,7 @@ describe "Router" do
241
241
  assert res.ok?
242
242
  end
243
243
 
244
- should "works with padrino applications" do
244
+ it 'should works with padrino applications' do
245
245
  Padrino.mount("simple_demo").to("/foo").host(/.*\.padrino.org/)
246
246
 
247
247
  res = Rack::MockRequest.new(Padrino.application).get("/")
data/test/test_routing.rb CHANGED
@@ -5,12 +5,11 @@ class FooError < RuntimeError; end
5
5
 
6
6
 
7
7
  describe "Routing" do
8
- setup do
9
- Padrino::Application.send(:register, Padrino::Rendering)
10
- Padrino::Rendering::DEFAULT_RENDERING_OPTIONS[:strict_format] = false
8
+ before do
9
+ Padrino.clear!
11
10
  end
12
11
 
13
- should "serve static files with simple cache control" do
12
+ it 'should serve static files with simple cache control' do
14
13
  mock_app do
15
14
  set :static_cache_control, :public
16
15
  set :public_folder, File.dirname(__FILE__)
@@ -20,7 +19,7 @@ describe "Routing" do
20
19
  assert_equal headers['Cache-Control'], 'public'
21
20
  end # static simple
22
21
 
23
- should "serve static files with cache control and max_age" do
22
+ it 'should serve static files with cache control and max_age' do
24
23
  mock_app do
25
24
  set :static_cache_control, [:public, :must_revalidate, {:max_age => 300}]
26
25
  set :public_folder, File.dirname(__FILE__)
@@ -30,7 +29,7 @@ describe "Routing" do
30
29
  assert_equal headers['Cache-Control'], 'public, must-revalidate, max-age=300'
31
30
  end # static max_age
32
31
 
33
- should 'ignore trailing delimiters for basic route' do
32
+ it 'should ignore trailing delimiters for basic route' do
34
33
  mock_app do
35
34
  get("/foo"){ "okey" }
36
35
  get(:test) { "tester" }
@@ -45,7 +44,7 @@ describe "Routing" do
45
44
  assert_equal "tester", body
46
45
  end
47
46
 
48
- should 'fail with unrecognized route exception when not found' do
47
+ it 'should fail with unrecognized route exception when not found' do
49
48
  mock_app do
50
49
  get(:index){ "okey" }
51
50
  end
@@ -56,7 +55,7 @@ describe "Routing" do
56
55
  }
57
56
  end
58
57
 
59
- should 'fail with unrecognized route exception when namespace is invalid' do
58
+ it 'should fail with unrecognized route exception when namespace is invalid' do
60
59
  mock_app do
61
60
  controller :foo_bar do
62
61
  get(:index){ "okey" }
@@ -82,7 +81,7 @@ describe "Routing" do
82
81
  }
83
82
  end
84
83
 
85
- should 'accept regexp routes' do
84
+ it 'should accept regexp routes' do
86
85
  mock_app do
87
86
  get(%r./fob|/baz.) { "regexp" }
88
87
  get("/foo") { "str" }
@@ -105,14 +104,14 @@ describe "Routing" do
105
104
  assert_equal "My lucky number: 99 99", body
106
105
  end
107
106
 
108
- should 'accept regexp routes with generate with :generate_with' do
107
+ it 'should accept regexp routes with generate with :generate_with' do
109
108
  mock_app do
110
109
  get(%r{/fob|/baz}, :name => :foo, :generate_with => '/fob') { "regexp" }
111
110
  end
112
111
  assert_equal "/fob", @app.url(:foo)
113
112
  end
114
113
 
115
- should "parse routes with question marks" do
114
+ it 'should parse routes with question marks' do
116
115
  mock_app do
117
116
  get("/foo/?"){ "okey" }
118
117
  post('/unauthenticated/?') { "no access" }
@@ -127,7 +126,7 @@ describe "Routing" do
127
126
  assert_equal "no access", body
128
127
  end
129
128
 
130
- should 'parse routes that are encoded' do
129
+ it 'should parse routes that are encoded' do
131
130
  mock_app do
132
131
  get('/щч') { 'success!' }
133
132
  end
@@ -135,7 +134,7 @@ describe "Routing" do
135
134
  assert_equal 'success!', body
136
135
  end
137
136
 
138
- should 'parse routes that include encoded slash' do
137
+ it 'should parse routes that include encoded slash' do
139
138
  mock_app do
140
139
  get('/:drive_alias/:path', :path => /.*/){
141
140
  "Show #{params[:drive_alias]} and #{params[:path]}"
@@ -145,7 +144,7 @@ describe "Routing" do
145
144
  assert_equal "Show drive/foo and some/path", body
146
145
  end
147
146
 
148
- should 'encode params using UTF-8' do
147
+ it 'should encode params using UTF-8' do
149
148
  mock_app do
150
149
  get('/:foo') { params[:foo].encoding.name }
151
150
  end
@@ -153,7 +152,7 @@ describe "Routing" do
153
152
  assert_equal 'UTF-8', body
154
153
  end
155
154
 
156
- should 'match correctly similar paths' do
155
+ it 'should match correctly similar paths' do
157
156
  mock_app do
158
157
  get("/my/:foo_id"){ params[:foo_id] }
159
158
  get("/my/:bar_id/bar"){ params[:bar_id] }
@@ -164,7 +163,7 @@ describe "Routing" do
164
163
  assert_equal "2", body
165
164
  end
166
165
 
167
- should "match user agents" do
166
+ it 'should match user agents' do
168
167
  app = mock_app do
169
168
  get("/main", :agent => /IE/){ "hello IE" }
170
169
  get("/main"){ "hello" }
@@ -175,7 +174,7 @@ describe "Routing" do
175
174
  assert_equal "hello IE", body
176
175
  end
177
176
 
178
- should "use regex for parts of a route" do
177
+ it 'should use regex for parts of a route' do
179
178
  app = mock_app do
180
179
  get("/main/:id", :id => /\d+/){ "hello #{params[:id]}" }
181
180
  end
@@ -185,7 +184,7 @@ describe "Routing" do
185
184
  assert_equal 404, status
186
185
  end
187
186
 
188
- should "parse params when use regex for parts of a route" do
187
+ it 'should parse params when use regex for parts of a route' do
189
188
  mock_app do
190
189
  post :index, :with => [:foo, :bar], :bar => /.+/ do
191
190
  "show #{params[:foo]}"
@@ -199,7 +198,7 @@ describe "Routing" do
199
198
  assert_equal "show 5 and 2", body
200
199
  end
201
200
 
202
- should "not generate overlapping head urls" do
201
+ it 'should not generate overlapping head urls' do
203
202
  app = mock_app do
204
203
  get("/main"){ "hello" }
205
204
  post("/main"){ "hello" }
@@ -210,7 +209,7 @@ describe "Routing" do
210
209
  assert_equal "POST", app.routes[2].request_methods.first
211
210
  end
212
211
 
213
- should 'generate basic urls' do
212
+ it 'should generate basic urls' do
214
213
  mock_app do
215
214
  get(:foo){ "/foo" }
216
215
  get(:foo, :with => :id){ |id| "/foo/#{id}" }
@@ -247,7 +246,7 @@ describe "Routing" do
247
246
  assert_equal "4", body
248
247
  end
249
248
 
250
- should 'generate url with format' do
249
+ it 'should generate url with format' do
251
250
  mock_app do
252
251
  get(:a, :provides => :any){ url(:a, :format => :json) }
253
252
  get(:b, :provides => :js){ url(:b, :format => :js) }
@@ -274,7 +273,7 @@ describe "Routing" do
274
273
  assert_equal 404, status
275
274
  end
276
275
 
277
- should 'generate absolute urls' do
276
+ it 'should generate absolute urls' do
278
277
  mock_app do
279
278
  get(:hash, :with => :id){ absolute_url(:hash, :id => 1) }
280
279
  end
@@ -284,7 +283,7 @@ describe "Routing" do
284
283
  assert_equal "https://example.org/hash/1", body
285
284
  end
286
285
 
287
- should 'generate absolute urls from stringified keys' do
286
+ it 'should generate absolute urls from stringified keys' do
288
287
  mock_app do
289
288
  get(:hash, with: :id) { absolute_url(:hash, "id" => 1) }
290
289
  end
@@ -292,7 +291,7 @@ describe "Routing" do
292
291
  assert_equal "http://example.org/hash/1", body
293
292
  end
294
293
 
295
- should 'generate proper absolute urls for mounted apps' do
294
+ it 'should generate proper absolute urls for mounted apps' do
296
295
  class Test < Padrino::Application
297
296
  get :foo do
298
297
  absolute_url(:foo, :id => 1)
@@ -304,7 +303,7 @@ describe "Routing" do
304
303
  assert_equal 'http://example.org/test/foo?id=1', body
305
304
  end
306
305
 
307
- should 'rebase simple string urls to app uri_root' do
306
+ it 'should rebase simple string urls to app uri_root' do
308
307
  mock_app do
309
308
  set :uri_root, '/app'
310
309
  get(:a){ url('/foo') }
@@ -322,7 +321,7 @@ describe "Routing" do
322
321
  assert_equal "http://example.org/app/d/e/bar", body
323
322
  end
324
323
 
325
- should 'allow regex url with format' do
324
+ it 'should allow regex url with format' do
326
325
  mock_app do
327
326
  get(/.*/, :provides => :any) { "regexp" }
328
327
  end
@@ -330,14 +329,14 @@ describe "Routing" do
330
329
  assert_equal "regexp", body
331
330
  end
332
331
 
333
- should 'use padrino url method' do
332
+ it 'should use padrino url method' do
334
333
  mock_app do
335
334
  end
336
335
 
337
336
  assert_equal @app.method(:url).owner, Padrino::Routing::ClassMethods
338
337
  end
339
338
 
340
- should 'work correctly with sinatra redirects' do
339
+ it 'should work correctly with sinatra redirects' do
341
340
  mock_app do
342
341
  get(:index) { redirect url(:index) }
343
342
  get(:google) { redirect "http://google.com" }
@@ -353,7 +352,7 @@ describe "Routing" do
353
352
  assert_equal "http://example.org/bar", headers['Location']
354
353
  end
355
354
 
356
- should "return 406 on Accept-Headers it does not provide" do
355
+ it 'should return 406 on Accept-Headers it does not provide' do
357
356
  mock_app do
358
357
  get(:a, :provides => [:html, :js]){ content_type }
359
358
  end
@@ -362,7 +361,7 @@ describe "Routing" do
362
361
  assert_equal 406, status
363
362
  end
364
363
 
365
- should "return 406 on file extensions it does not provide and flag is set" do
364
+ it 'should return 406 on file extensions it does not provide and flag is set' do
366
365
  mock_app do
367
366
  enable :treat_format_as_accept
368
367
  get(:a, :provides => [:html, :js]){ content_type }
@@ -372,7 +371,7 @@ describe "Routing" do
372
371
  assert_equal 406, status
373
372
  end
374
373
 
375
- should "return 404 on file extensions it does not provide and flag is not set" do
374
+ it 'should return 404 on file extensions it does not provide and flag is not set' do
376
375
  mock_app do
377
376
  get(:a, :provides => [:html, :js]){ content_type }
378
377
  end
@@ -381,7 +380,7 @@ describe "Routing" do
381
380
  assert_equal 404, status
382
381
  end
383
382
 
384
- should "not set content_type to :html if Accept */* and html not in provides" do
383
+ it 'should not set content_type to :html if Accept */* and html not in provides' do
385
384
  mock_app do
386
385
  get("/foo", :provides => [:json, :xml]) { content_type.to_s }
387
386
  end
@@ -390,7 +389,7 @@ describe "Routing" do
390
389
  assert_equal 'json', body
391
390
  end
392
391
 
393
- should "set content_type to :json if Accept contains */*" do
392
+ it 'should set content_type to :json if Accept contains */*' do
394
393
  mock_app do
395
394
  get("/foo", :provides => [:json]) { content_type.to_s }
396
395
  end
@@ -399,7 +398,7 @@ describe "Routing" do
399
398
  assert_equal 'json', body
400
399
  end
401
400
 
402
- should 'set and get content_type' do
401
+ it 'should set and get content_type' do
403
402
  mock_app do
404
403
  get("/foo"){ content_type(:json); content_type.to_s }
405
404
  end
@@ -408,7 +407,7 @@ describe "Routing" do
408
407
  assert_equal 'json', body
409
408
  end
410
409
 
411
- should "send the appropriate number of params" do
410
+ it 'should send the appropriate number of params' do
412
411
  mock_app do
413
412
  get('/id/:user_id', :provides => [:json]) { |user_id, format| user_id}
414
413
  end
@@ -416,7 +415,7 @@ describe "Routing" do
416
415
  assert_equal '5', body
417
416
  end
418
417
 
419
- should "allow .'s in param values" do
418
+ it 'should allow "." in param values' do
420
419
  skip # TODO fix this?
421
420
  mock_app do
422
421
  get('/id/:email', :provides => [:json]) { |email, format| [email, format] * '/' }
@@ -425,7 +424,7 @@ describe "Routing" do
425
424
  assert_equal 'foo@bar.com/json', body
426
425
  end
427
426
 
428
- should "set correct content_type for Accept not equal to */* even if */* also provided" do
427
+ it 'should set correct content_type for Accept not equal to */* even if */* also provided' do
429
428
  mock_app do
430
429
  get("/foo", :provides => [:html, :js, :xml]) { content_type.to_s }
431
430
  end
@@ -434,7 +433,7 @@ describe "Routing" do
434
433
  assert_equal 'js', body
435
434
  end
436
435
 
437
- should "return the first content type in provides if accept header is empty" do
436
+ it 'should return the first content type in provides if accept header is empty' do
438
437
  mock_app do
439
438
  get(:a, :provides => [:js]){ content_type.to_s }
440
439
  end
@@ -443,7 +442,7 @@ describe "Routing" do
443
442
  assert_equal "js", body
444
443
  end
445
444
 
446
- should "not default to HTML if HTML is not provided and no type is given" do
445
+ it 'should not default to HTML if HTML is not provided and no type is given' do
447
446
  mock_app do
448
447
  get(:a, :provides => [:js]){ content_type }
449
448
  end
@@ -452,7 +451,7 @@ describe "Routing" do
452
451
  assert_equal "application/javascript;charset=utf-8", content_type
453
452
  end
454
453
 
455
- should "not match routes if url_format and http_accept is provided but not included" do
454
+ it 'should not match routes if url_format and http_accept is provided but not included' do
456
455
  mock_app do
457
456
  get(:a, :provides => [:js, :html]){ content_type }
458
457
  end
@@ -461,7 +460,7 @@ describe "Routing" do
461
460
  assert_equal 404, status
462
461
  end
463
462
 
464
- should "generate routes for format simple" do
463
+ it 'should generate routes for format simple' do
465
464
  mock_app do
466
465
  get(:foo, :provides => [:html, :rss]) { render :haml, "Test" }
467
466
  end
@@ -471,7 +470,7 @@ describe "Routing" do
471
470
  assert_equal "Test\n", body
472
471
  end
473
472
 
474
- should "should inject the controller name into the request" do
473
+ it 'should inject the controller name into the request' do
475
474
  mock_app do
476
475
  controller :posts do
477
476
  get(:index) { request.controller }
@@ -486,7 +485,7 @@ describe "Routing" do
486
485
  assert_equal "mini", body
487
486
  end
488
487
 
489
- should "should inject the action name into the request" do
488
+ it 'should inject the action name into the request' do
490
489
  mock_app do
491
490
  controller :posts do
492
491
  get('/omnomnom(/:id)') { request.action.inspect }
@@ -501,7 +500,7 @@ describe "Routing" do
501
500
  assert_equal ":a", body
502
501
  end
503
502
 
504
- should "support not_found" do
503
+ it 'should support not_found' do
505
504
  mock_app do
506
505
  not_found { 'whatever' }
507
506
 
@@ -517,7 +516,7 @@ describe "Routing" do
517
516
  assert_equal 200, status
518
517
  end
519
518
 
520
- should "should inject the route into the request" do
519
+ it 'should inject the route into the request' do
521
520
  mock_app do
522
521
  controller :posts do
523
522
  get(:index) { request.route_obj.name.to_s }
@@ -527,7 +526,7 @@ describe "Routing" do
527
526
  assert_equal "posts index", body
528
527
  end
529
528
 
530
- should "preserve the format if you set it manually" do
529
+ it 'should preserve the format if you set it manually' do
531
530
  mock_app do
532
531
  before do
533
532
  params[:format] = "json"
@@ -545,7 +544,7 @@ describe "Routing" do
545
544
  assert_equal ":json", body
546
545
  end
547
546
 
548
- should "correctly accept '.' in the route" do
547
+ it 'should correctly accept "." in the route' do
549
548
  mock_app do
550
549
  get "test.php", :provides => [:html, :json] do
551
550
  content_type.inspect
@@ -557,7 +556,7 @@ describe "Routing" do
557
556
  assert_equal ":json", body
558
557
  end
559
558
 
560
- should "correctly accept priority of format" do
559
+ it 'should correctly accept priority of format' do
561
560
  mock_app do
562
561
  get "test.php", :provides => [:html, :json, :xml] do
563
562
  content_type.inspect
@@ -574,7 +573,7 @@ describe "Routing" do
574
573
  assert_equal ":json", body
575
574
  end
576
575
 
577
- should "generate routes for format with controller" do
576
+ it 'should generate routes for format with controller' do
578
577
  mock_app do
579
578
  controller :posts do
580
579
  get(:index, :provides => [:html, :rss, :atom, :js]) { render :haml, "Index.#{content_type}" }
@@ -597,7 +596,7 @@ describe "Routing" do
597
596
  assert_equal "Show.atom\n", body
598
597
  end
599
598
 
600
- should 'map routes' do
599
+ it 'should map routes' do
601
600
  mock_app do
602
601
  get(:bar){ "bar" }
603
602
  end
@@ -606,7 +605,7 @@ describe "Routing" do
606
605
  assert_equal "/bar", @app.url(:bar)
607
606
  end
608
607
 
609
- should 'remove index from path' do
608
+ it 'should remove index from path' do
610
609
  mock_app do
611
610
  get(:index){ "index" }
612
611
  get("/accounts/index"){ "accounts" }
@@ -618,7 +617,7 @@ describe "Routing" do
618
617
  assert_equal "accounts", body
619
618
  end
620
619
 
621
- should 'remove index from path with params' do
620
+ it 'should remove index from path with params' do
622
621
  mock_app do
623
622
  get(:index, :with => :name){ "index with #{params[:name]}" }
624
623
  end
@@ -627,7 +626,7 @@ describe "Routing" do
627
626
  assert_equal "/john", @app.url(:index, :name => "john")
628
627
  end
629
628
 
630
- should 'parse named params' do
629
+ it 'should parse named params' do
631
630
  mock_app do
632
631
  get(:print, :with => :id){ "Im #{params[:id]}" }
633
632
  end
@@ -636,7 +635,7 @@ describe "Routing" do
636
635
  assert_equal "/print/9", @app.url(:print, :id => 9)
637
636
  end
638
637
 
639
- should '405 on wrong request_method' do
638
+ it 'should 405 on wrong request_method' do
640
639
  mock_app do
641
640
  post('/bar'){ "bar" }
642
641
  end
@@ -644,7 +643,7 @@ describe "Routing" do
644
643
  assert_equal 405, status
645
644
  end
646
645
 
647
- should 'respond to' do
646
+ it 'should respond to' do
648
647
  mock_app do
649
648
  get(:a, :provides => :js){ "js" }
650
649
  get(:b, :provides => :any){ "any" }
@@ -673,7 +672,7 @@ describe "Routing" do
673
672
  assert_equal "html,js", body
674
673
  end
675
674
 
676
- should 'respond_to and set content_type' do
675
+ it 'should respond_to and set content_type' do
677
676
  Rack::Mime::MIME_TYPES['.foo'] = 'application/foo'
678
677
  mock_app do
679
678
  get :a, :provides => :any do
@@ -699,7 +698,7 @@ describe "Routing" do
699
698
  assert_equal 'text/html;charset=utf-8', response["Content-Type"]
700
699
  end
701
700
 
702
- should 'use controllers' do
701
+ it 'should use controllers' do
703
702
  mock_app do
704
703
  controller "/admin" do
705
704
  get("/"){ "index" }
@@ -712,7 +711,7 @@ describe "Routing" do
712
711
  assert_equal "show 1", body
713
712
  end
714
713
 
715
- should 'use named controllers' do
714
+ it 'should use named controllers' do
716
715
  mock_app do
717
716
  controller :admin do
718
717
  get(:index, :with => :id){ params[:id] }
@@ -732,7 +731,7 @@ describe "Routing" do
732
731
  assert_equal "foo_bar_index", body
733
732
  end
734
733
 
735
- should 'use map and with' do
734
+ it 'should use map and with' do
736
735
  mock_app do
737
736
  get :index, :map => '/bugs', :with => :id do
738
737
  params[:id]
@@ -743,7 +742,7 @@ describe "Routing" do
743
742
  assert_equal "/bugs/4", @app.url(:index, :id => 4)
744
743
  end
745
744
 
746
- should "ignore trailing delimiters within a named controller" do
745
+ it 'should ignore trailing delimiters within a named controller' do
747
746
  mock_app do
748
747
  controller :posts do
749
748
  get(:index, :provides => [:html, :js]){ "index" }
@@ -765,7 +764,7 @@ describe "Routing" do
765
764
  assert_equal "new", body
766
765
  end
767
766
 
768
- should "ignore trailing delimiters within a named controller for unnamed actions" do
767
+ it 'should ignore trailing delimiters within a named controller for unnamed actions' do
769
768
  mock_app do
770
769
  controller :accounts do
771
770
  get("/") { "account_index" }
@@ -789,7 +788,7 @@ describe "Routing" do
789
788
  assert_equal "vote_index", body
790
789
  end
791
790
 
792
- should 'use named controllers with array routes' do
791
+ it 'should use named controllers with array routes' do
793
792
  mock_app do
794
793
  controller :admin do
795
794
  get(:index){ "index" }
@@ -809,7 +808,7 @@ describe "Routing" do
809
808
  assert_equal "foo_bar_index", body
810
809
  end
811
810
 
812
- should "support a reindex action and remove index inside controller" do
811
+ it 'should support a reindex action and remove index inside controller' do
813
812
  mock_app do
814
813
  controller :posts do
815
814
  get(:index){ "index" }
@@ -823,7 +822,7 @@ describe "Routing" do
823
822
  assert_equal "reindex", body
824
823
  end
825
824
 
826
- should 'use uri_root' do
825
+ it 'should use uri_root' do
827
826
  mock_app do
828
827
  get(:foo){ "foo" }
829
828
  end
@@ -837,7 +836,7 @@ describe "Routing" do
837
836
  assert_equal "/testing/bar/foo", @app.url(:foo)
838
837
  end
839
838
 
840
- should 'use uri_root with controllers' do
839
+ it 'should use uri_root with controllers' do
841
840
  mock_app do
842
841
  controller :foo do
843
842
  get(:bar){ "bar" }
@@ -847,7 +846,7 @@ describe "Routing" do
847
846
  assert_equal "/testing/foo/bar", @app.url(:foo, :bar)
848
847
  end
849
848
 
850
- should 'use RACK_BASE_URI' do
849
+ it 'should use RACK_BASE_URI' do
851
850
  mock_app do
852
851
  get(:foo){ "foo" }
853
852
  end
@@ -859,7 +858,7 @@ describe "Routing" do
859
858
  ENV['RACK_BASE_URI'] = nil
860
859
  end
861
860
 
862
- should 'reset routes' do
861
+ it 'should reset routes' do
863
862
  mock_app do
864
863
  get("/"){ "foo" }
865
864
  reset_router!
@@ -868,7 +867,7 @@ describe "Routing" do
868
867
  assert_equal 404, status
869
868
  end
870
869
 
871
- should "match params and format" do
870
+ it 'should match params and format' do
872
871
  app = mock_app do
873
872
  get '/:id', :provides => [:json, :html] do |id, _|
874
873
  id
@@ -887,7 +886,7 @@ describe "Routing" do
887
886
  end
888
887
 
889
888
 
890
- should 'respect priorities' do
889
+ it 'should respect priorities' do
891
890
  route_order = []
892
891
  mock_app do
893
892
  get(:index, :priority => :normal) { route_order << :normal; pass }
@@ -899,7 +898,7 @@ describe "Routing" do
899
898
  assert_equal "hello", body
900
899
  end
901
900
 
902
- should 'catch all after controllers' do
901
+ it 'should catch all after controllers' do
903
902
  mock_app do
904
903
  get(:index, :with => :slug, :priority => :low) { "catch all" }
905
904
  controllers :contact do
@@ -912,7 +911,7 @@ describe "Routing" do
912
911
  assert_equal "catch all", body
913
912
  end
914
913
 
915
- should 'allow optionals' do
914
+ it 'should allow optionals' do
916
915
  mock_app do
917
916
  get(:show, :map => "/stories/:type(/:category)") do
918
917
  "#{params[:type]}/#{params[:category]}"
@@ -924,7 +923,7 @@ describe "Routing" do
924
923
  assert_equal "foo/bar", body
925
924
  end
926
925
 
927
- should 'apply maps' do
926
+ it 'should apply maps' do
928
927
  mock_app do
929
928
  controllers :admin do
930
929
  get(:index, :map => "/"){ "index" }
@@ -945,7 +944,7 @@ describe "Routing" do
945
944
  assert_equal "wacky 1-2", body
946
945
  end
947
946
 
948
- should 'apply maps when given path is kind of hash' do
947
+ it 'should apply maps when given path is kind of hash' do
949
948
  mock_app do
950
949
  controllers :admin do
951
950
  get(:foobar, "/foo/bar"){ "foobar" }
@@ -955,7 +954,7 @@ describe "Routing" do
955
954
  assert_equal "foobar", body
956
955
  end
957
956
 
958
- should "apply parent to route" do
957
+ it 'should apply parent to route' do
959
958
  mock_app do
960
959
  controllers :project do
961
960
  get(:index, :parent => :user) { "index #{params[:user_id]}" }
@@ -974,7 +973,7 @@ describe "Routing" do
974
973
  assert_equal "show 3 1 2", body
975
974
  end
976
975
 
977
- should "respect parent precedence: controllers parents go before route parents" do
976
+ it 'should respect parent precedence: controllers parents go before route parents' do
978
977
  mock_app do
979
978
  controllers :project do
980
979
  get(:index, :parent => :user) { "index #{params[:user_id]}" }
@@ -994,7 +993,7 @@ describe "Routing" do
994
993
  assert_equal "index on foo 1 @ baz 2 @ bar", body
995
994
  end
996
995
 
997
- should "keep a reference to the parent on the route" do
996
+ it 'should keep a reference to the parent on the route' do
998
997
  mock_app do
999
998
  controllers :project do
1000
999
  get(:index, :parent => :user) { "index #{params[:user_id]}" }
@@ -1023,7 +1022,7 @@ describe "Routing" do
1023
1022
  assert_equal [:foo, :baz], @app.routes[10].parent
1024
1023
  end
1025
1024
 
1026
- should "apply parent to controller" do
1025
+ it 'should apply parent to controller' do
1027
1026
  mock_app do
1028
1027
  controller :project, :parent => :user do
1029
1028
  get(:index) { "index #{params[:user_id]}"}
@@ -1048,7 +1047,7 @@ describe "Routing" do
1048
1047
  assert_equal user_product_project_url, @app.url(:project, :show, :user_id => 1, :product_id => 2, :id => 3)
1049
1048
  end
1050
1049
 
1051
- should "apply parent with shallowing to controller" do
1050
+ it 'should apply parent with shallowing to controller' do
1052
1051
  mock_app do
1053
1052
  controller :project do
1054
1053
  parent :user
@@ -1093,7 +1092,7 @@ describe "Routing" do
1093
1092
  assert_equal user_product_project_url, @app.url(:project, :show, :user_id => 1, :product_id => 2, :id => 3, :shop_id => 1)
1094
1093
  end
1095
1094
 
1096
- should "respect map in parents with shallowing" do
1095
+ it 'should respect map in parents with shallowing' do
1097
1096
  mock_app do
1098
1097
  controller :project do
1099
1098
  parent :shop, :map => "/foo/bar"
@@ -1107,7 +1106,7 @@ describe "Routing" do
1107
1106
  assert_equal shop_project_url, @app.url(:project, :index, :shop_id => 1)
1108
1107
  end
1109
1108
 
1110
- should "use default values" do
1109
+ it 'should use default values' do
1111
1110
  mock_app do
1112
1111
  controller :lang => :it do
1113
1112
  get(:index, :map => "/:lang") { "lang is #{params[:lang]}" }
@@ -1122,7 +1121,7 @@ describe "Routing" do
1122
1121
  assert_equal "lang is en", body
1123
1122
  end
1124
1123
 
1125
- should "transitions to the next matching route on pass" do
1124
+ it 'should transitions to the next matching route on pass' do
1126
1125
  mock_app do
1127
1126
  get '/:foo' do
1128
1127
  pass
@@ -1137,7 +1136,43 @@ describe "Routing" do
1137
1136
  assert_equal 'Hello World', body
1138
1137
  end
1139
1138
 
1140
- should "filters by accept header" do
1139
+ it 'should filters by media type' do
1140
+ mock_app do
1141
+ get '/foo', :accepts => [:xml, :json] do
1142
+ request.env['CONTENT_TYPE']
1143
+ end
1144
+ end
1145
+
1146
+ get '/foo', {}, { 'CONTENT_TYPE' => 'application/xml' }
1147
+ assert ok?
1148
+ assert_equal 'application/xml', body
1149
+ assert_equal 'application/xml;charset=utf-8', response.headers['Content-Type']
1150
+ get '/foo'
1151
+ assert_equal 406, status
1152
+ get '/foo.xml'
1153
+ assert_equal 404, status
1154
+
1155
+ get '/foo', {}, { 'CONTENT_TYPE' => 'application/json' }
1156
+ assert ok?
1157
+ assert_equal 'application/json', body
1158
+ assert_equal 'application/json', response.headers['Content-Type']
1159
+ end
1160
+
1161
+ it 'should filters by media type when using :accepts as controller option' do
1162
+ mock_app do
1163
+ controller accepts: [:xml, :js] do
1164
+ get '/foo' do
1165
+ request.env['CONTENT_TYPE']
1166
+ end
1167
+ end
1168
+ end
1169
+
1170
+ get '/foo', {}, { 'CONTENT_TYPE' => 'application/javascript' }
1171
+ assert ok?
1172
+ assert_equal 'application/javascript', body
1173
+ end
1174
+
1175
+ it 'should filters by accept header' do
1141
1176
  mock_app do
1142
1177
  get '/foo', :provides => [:xml, :js] do
1143
1178
  request.env['HTTP_ACCEPT']
@@ -1166,7 +1201,7 @@ describe "Routing" do
1166
1201
  assert_equal 406, status
1167
1202
  end
1168
1203
 
1169
- should "does not allow global provides" do
1204
+ it 'should does not allow global provides' do
1170
1205
  mock_app do
1171
1206
  provides :xml
1172
1207
 
@@ -1183,7 +1218,7 @@ describe "Routing" do
1183
1218
  assert_equal 'Bar in nil', body
1184
1219
  end
1185
1220
 
1186
- should "does not allow global provides in controller" do
1221
+ it 'should does not allow global provides in controller' do
1187
1222
  mock_app do
1188
1223
  controller :base do
1189
1224
  provides :xml
@@ -1202,7 +1237,7 @@ describe "Routing" do
1202
1237
  assert_equal 'Bar in nil', body
1203
1238
  end
1204
1239
 
1205
- should "map non named routes in controllers" do
1240
+ it 'should map non named routes in controllers' do
1206
1241
  mock_app do
1207
1242
  controller :base do
1208
1243
  get("/foo") { "ok" }
@@ -1216,7 +1251,7 @@ describe "Routing" do
1216
1251
  assert ok?
1217
1252
  end
1218
1253
 
1219
- should "set content_type to :html for both empty Accept as well as Accept text/html" do
1254
+ it 'should set content_type to :html for both empty Accept as well as Accept text/html' do
1220
1255
  mock_app do
1221
1256
  provides :html
1222
1257
 
@@ -1230,7 +1265,7 @@ describe "Routing" do
1230
1265
  assert_equal 'html', body
1231
1266
  end
1232
1267
 
1233
- should "set content_type to :html if Accept */*" do
1268
+ it 'should set content_type to :html if Accept */*' do
1234
1269
  mock_app do
1235
1270
  get("/foo", :provides => [:html, :js]) { content_type.to_s }
1236
1271
  end
@@ -1241,7 +1276,7 @@ describe "Routing" do
1241
1276
  assert_equal 'html', body
1242
1277
  end
1243
1278
 
1244
- should "set content_type to :js if Accept includes both application/javascript and */*;q=0.5" do
1279
+ it 'should set content_type to :js if Accept includes both application/javascript and */*;q=0.5' do
1245
1280
  mock_app do
1246
1281
  get("/foo", :provides => [:html, :js]) { content_type.to_s }
1247
1282
  end
@@ -1249,7 +1284,7 @@ describe "Routing" do
1249
1284
  assert_equal 'js', body
1250
1285
  end
1251
1286
 
1252
- should "set content_type to :html if Accept */* and provides of :any" do
1287
+ it 'should set content_type to :html if Accept */* and provides of :any' do
1253
1288
  mock_app do
1254
1289
  get("/foo", :provides => :any) { content_type.to_s }
1255
1290
  end
@@ -1258,7 +1293,7 @@ describe "Routing" do
1258
1293
  assert_equal 'html', body
1259
1294
  end
1260
1295
 
1261
- should "set content_type to :js if Accept includes both application/javascript, */*;q=0.5 and provides of :any" do
1296
+ it 'should set content_type to :js if Accept includes both application/javascript, */*;q=0.5 and provides of :any' do
1262
1297
  mock_app do
1263
1298
  get("/foo", :provides => :any) { content_type.to_s }
1264
1299
  end
@@ -1267,7 +1302,7 @@ describe "Routing" do
1267
1302
  assert_equal 'js', body
1268
1303
  end
1269
1304
 
1270
- should 'allows custom route-conditions to be set via route options and halt' do
1305
+ it 'should allows custom route-conditions to be set via route options and halt' do
1271
1306
  protector = Module.new do
1272
1307
  def protect(*args)
1273
1308
  condition {
@@ -1301,7 +1336,7 @@ describe "Routing" do
1301
1336
  assert_equal "hey", body
1302
1337
  end
1303
1338
 
1304
- should 'allows custom route-conditions to be set via route options using two routes' do
1339
+ it 'should allows custom route-conditions to be set via route options using two routes' do
1305
1340
  protector = Module.new do
1306
1341
  def protect(*args)
1307
1342
  condition { authorize(params["user"], params["password"]) }
@@ -1334,7 +1369,7 @@ describe "Routing" do
1334
1369
  assert_equal "hey", body
1335
1370
  end
1336
1371
 
1337
- should "allow concise routing" do
1372
+ it 'should allow concise routing' do
1338
1373
  mock_app do
1339
1374
  get :index, ":id" do
1340
1375
  params[:id]
@@ -1352,7 +1387,7 @@ describe "Routing" do
1352
1387
  assert_equal "123", body
1353
1388
  end
1354
1389
 
1355
- should "support halting with 404 and message" do
1390
+ it 'should support halting with 404 and message' do
1356
1391
  mock_app do
1357
1392
  controller do
1358
1393
  get :index do
@@ -1366,7 +1401,7 @@ describe "Routing" do
1366
1401
  assert_equal "not found", body
1367
1402
  end
1368
1403
 
1369
- should "allow passing & halting in before filters" do
1404
+ it 'should allow passing & halting in before filters' do
1370
1405
  mock_app do
1371
1406
  controller do
1372
1407
  before { env['QUERY_STRING'] == 'secret' or pass }
@@ -1394,7 +1429,7 @@ describe "Routing" do
1394
1429
  assert_equal "index", body
1395
1430
  end
1396
1431
 
1397
- should 'scope filters in the given controller' do
1432
+ it 'should scope filters in the given controller' do
1398
1433
  mock_app do
1399
1434
  before { @global = 'global' }
1400
1435
  after { @global = nil }
@@ -1424,7 +1459,7 @@ describe "Routing" do
1424
1459
  assert_equal "global", body
1425
1460
  end
1426
1461
 
1427
- should 'works with optionals params' do
1462
+ it 'should works with optionals params' do
1428
1463
  mock_app do
1429
1464
  get("/foo(/:bar)") { params[:bar] }
1430
1465
  end
@@ -1436,7 +1471,7 @@ describe "Routing" do
1436
1471
  assert_equal "", body
1437
1472
  end
1438
1473
 
1439
- should 'work with multiple dashed params' do
1474
+ it 'should work with multiple dashed params' do
1440
1475
  mock_app do
1441
1476
  get "/route/:foo/:bar/:baz", :provides => :html do
1442
1477
  "#{params[:foo]};#{params[:bar]};#{params[:baz]}"
@@ -1450,7 +1485,7 @@ describe "Routing" do
1450
1485
  assert_equal 'foo;bar-whatever;baz', body
1451
1486
  end
1452
1487
 
1453
- should 'work with arbitrary params' do
1488
+ it 'should work with arbitrary params' do
1454
1489
  mock_app do
1455
1490
  get(:testing) { params[:foo] }
1456
1491
  end
@@ -1461,7 +1496,7 @@ describe "Routing" do
1461
1496
  assert_equal "bar", body
1462
1497
  end
1463
1498
 
1464
- should 'ignore nil params' do
1499
+ it 'should ignore nil params' do
1465
1500
  mock_app do
1466
1501
  get(:testing, :provides => [:html, :json]) do
1467
1502
  end
@@ -1470,7 +1505,7 @@ describe "Routing" do
1470
1505
  assert_equal '/testing', @app.url(:testing, :format => nil)
1471
1506
  end
1472
1507
 
1473
- should 'be able to access params in a before filter' do
1508
+ it 'should be able to access params in a before filter' do
1474
1509
  username_from_before_filter = nil
1475
1510
 
1476
1511
  mock_app do
@@ -1485,7 +1520,7 @@ describe "Routing" do
1485
1520
  assert_equal 'josh', username_from_before_filter
1486
1521
  end
1487
1522
 
1488
- should "be able to access params normally when a before filter is specified" do
1523
+ it 'should be able to access params normally when a before filter is specified' do
1489
1524
  mock_app do
1490
1525
  before { }
1491
1526
  get :index do
@@ -1496,7 +1531,7 @@ describe "Routing" do
1496
1531
  assert_equal '{"test"=>"what"}', body
1497
1532
  end
1498
1533
 
1499
- should "work only for the given controller and route when using before-filter with route's name" do
1534
+ it 'should work only for the given controller and route when using before-filter with route name' do
1500
1535
  mock_app do
1501
1536
  controller :foo do
1502
1537
  before(:index) { @a = "only to :index" }
@@ -1510,7 +1545,7 @@ describe "Routing" do
1510
1545
  assert_equal '', body
1511
1546
  end
1512
1547
 
1513
- should "work only for the given controller and route when using after-filter with route's name" do
1548
+ it 'should work only for the given controller and route when using after-filter with route name' do
1514
1549
  mock_app do
1515
1550
  controller :after_controller do
1516
1551
  global = "global variable"
@@ -1525,7 +1560,7 @@ describe "Routing" do
1525
1560
  assert_equal '', body
1526
1561
  end
1527
1562
 
1528
- should "execute the before/after filters when they are inserted after the target route" do
1563
+ it 'should execute the before/after filters when they are inserted after the target route' do
1529
1564
  mock_app do
1530
1565
  controller :after_test do
1531
1566
  global = "global variable"
@@ -1541,7 +1576,7 @@ describe "Routing" do
1541
1576
  assert_equal 'after', body
1542
1577
  end
1543
1578
 
1544
- should 'work with controller and arbitrary params' do
1579
+ it 'should work with controller and arbitrary params' do
1545
1580
  mock_app do
1546
1581
  get(:testing) { params[:foo] }
1547
1582
  controller :test1 do
@@ -1561,7 +1596,7 @@ describe "Routing" do
1561
1596
  assert_equal "bar2", body
1562
1597
  end
1563
1598
 
1564
- should "parse two routes with the same path but different http verbs" do
1599
+ it 'should parse two routes with the same path but different http verbs' do
1565
1600
  mock_app do
1566
1601
  get(:index) { "This is the get index" }
1567
1602
  post(:index) { "This is the post index" }
@@ -1572,7 +1607,7 @@ describe "Routing" do
1572
1607
  assert_equal "This is the post index", body
1573
1608
  end
1574
1609
 
1575
- should "use optionals params" do
1610
+ it 'should use optionals params' do
1576
1611
  mock_app do
1577
1612
  get(:index, :map => "/(:foo(/:bar))") { "#{params[:foo]}-#{params[:bar]}" }
1578
1613
  end
@@ -1582,7 +1617,7 @@ describe "Routing" do
1582
1617
  assert_equal "foo-bar", body
1583
1618
  end
1584
1619
 
1585
- should "parse two routes with the same path but different http verbs and provides" do
1620
+ it 'should parse two routes with the same path but different http verbs and provides' do
1586
1621
  mock_app do
1587
1622
  get(:index, :provides => [:html, :json]) { "This is the get index.#{content_type}" }
1588
1623
  post(:index, :provides => [:html, :json]) { "This is the post index.#{content_type}" }
@@ -1601,7 +1636,7 @@ describe "Routing" do
1601
1636
  assert_equal 404, status
1602
1637
  end
1603
1638
 
1604
- should "allow controller level mapping" do
1639
+ it 'should allow controller level mapping' do
1605
1640
  mock_app do
1606
1641
  controller :map => "controller-:id" do
1607
1642
  get(:url3) { "#{params[:id]}" }
@@ -1620,7 +1655,7 @@ describe "Routing" do
1620
1655
  assert_equal "1, 2", body
1621
1656
  end
1622
1657
 
1623
- should "replace name of named controller with mapping path" do
1658
+ it 'should replace name of named controller with mapping path' do
1624
1659
  mock_app do
1625
1660
  controller :ugly, :map => "/pretty/:id" do
1626
1661
  get(:url3) { "#{params[:id]}" }
@@ -1647,7 +1682,7 @@ describe "Routing" do
1647
1682
  assert_equal 'okay', body
1648
1683
  end
1649
1684
 
1650
- should 'use absolute and relative maps' do
1685
+ it 'should use absolute and relative maps' do
1651
1686
  mock_app do
1652
1687
  controller :one do
1653
1688
  parent :three
@@ -1667,7 +1702,7 @@ describe "Routing" do
1667
1702
  assert_equal "/two/four_id", @app.url(:two, :index2, 'four_id')
1668
1703
  end
1669
1704
 
1670
- should "work with params and parent options" do
1705
+ it 'should work with params and parent options' do
1671
1706
  mock_app do
1672
1707
  controller :test2, :parent => :parent1, :parent1_id => 1 do
1673
1708
  get(:url3) { params[:foo] }
@@ -1692,7 +1727,7 @@ describe "Routing" do
1692
1727
  assert_equal "bar5", body
1693
1728
  end
1694
1729
 
1695
- should "parse params without explicit provides for every matching route" do
1730
+ it 'should parse params without explicit provides for every matching route' do
1696
1731
  mock_app do
1697
1732
  get(:index, :map => "/foos/:bar") { "get bar = #{params[:bar]}" }
1698
1733
  post :create, :map => "/foos/:bar", :provides => [:html, :js] do
@@ -1708,7 +1743,7 @@ describe "Routing" do
1708
1743
  assert_equal "post bar = hello", body
1709
1744
  end
1710
1745
 
1711
- should "properly route to first foo with two similar routes" do
1746
+ it 'should properly route to first foo with two similar routes' do
1712
1747
  mock_app do
1713
1748
  controllers do
1714
1749
  get('/foo/') { "this is foo" }
@@ -1723,7 +1758,7 @@ describe "Routing" do
1723
1758
  assert_equal "/foo/5/10", body
1724
1759
  end
1725
1760
 
1726
- should "index routes should be optional when nested" do
1761
+ it 'should index routes should be optional when nested' do
1727
1762
  mock_app do
1728
1763
  controller '/users', :provides => [:json] do
1729
1764
  get '/' do
@@ -1735,7 +1770,7 @@ describe "Routing" do
1735
1770
  assert_equal "foo", body
1736
1771
  end
1737
1772
 
1738
- should "use provides as conditional" do
1773
+ it 'should use provides as conditional' do
1739
1774
  mock_app do
1740
1775
  provides :json
1741
1776
  get "/" do
@@ -1746,7 +1781,9 @@ describe "Routing" do
1746
1781
  assert_equal "foo", body
1747
1782
  end
1748
1783
 
1749
- should_eventually "reset provides for routes that didn't use it" do
1784
+ it 'should reset provides for routes that did not use it' do
1785
+ skip
1786
+ #FIXME
1750
1787
  mock_app do
1751
1788
  get('/foo', :provides => :js){}
1752
1789
  get('/bar'){}
@@ -1761,7 +1798,7 @@ describe "Routing" do
1761
1798
  assert_equal 404, status
1762
1799
  end
1763
1800
 
1764
- should "pass controller conditions to each route" do
1801
+ it 'should pass controller conditions to each route' do
1765
1802
  counter = 0
1766
1803
 
1767
1804
  mock_app do
@@ -1781,7 +1818,7 @@ describe "Routing" do
1781
1818
  assert_equal 2, counter
1782
1819
  end
1783
1820
 
1784
- should "allow controller conditions to be overridden" do
1821
+ it 'should allow controller conditions to be overridden' do
1785
1822
  counter = 0
1786
1823
 
1787
1824
  mock_app do
@@ -1801,7 +1838,7 @@ describe "Routing" do
1801
1838
  assert_equal 1, counter
1802
1839
  end
1803
1840
 
1804
- should "parse params with class level provides" do
1841
+ it 'should parse params with class level provides' do
1805
1842
  mock_app do
1806
1843
  controllers :posts, :provides => [:html, :js] do
1807
1844
  post(:create, :map => "/foo/:bar/:baz/:id") {
@@ -1823,7 +1860,7 @@ describe "Routing" do
1823
1860
  assert_equal "POST CREATE bar - baz - 5", body
1824
1861
  end
1825
1862
 
1826
- should "parse params properly with inline provides" do
1863
+ it 'should parse params properly with inline provides' do
1827
1864
  mock_app do
1828
1865
  controllers :posts do
1829
1866
  post(:create, :map => "/foo/:bar/:baz/:id", :provides => [:html, :js]) {
@@ -1841,7 +1878,7 @@ describe "Routing" do
1841
1878
  assert_equal "POST CREATE bar - baz - 5", body, "should properly post to create action"
1842
1879
  end
1843
1880
 
1844
- should "have overideable format" do
1881
+ it 'should have overideable format' do
1845
1882
  ::Rack::Mime::MIME_TYPES[".other"] = "text/html"
1846
1883
  mock_app do
1847
1884
  before do
@@ -1854,7 +1891,7 @@ describe "Routing" do
1854
1891
  ::Rack::Mime::MIME_TYPES.delete('.other')
1855
1892
  end
1856
1893
 
1857
- should 'invokes handlers registered with ::error when raised' do
1894
+ it 'should invokes handlers registered with ::error when raised' do
1858
1895
  mock_app do
1859
1896
  set :raise_errors, false
1860
1897
  error(FooError) { 'Foo!' }
@@ -1867,7 +1904,7 @@ describe "Routing" do
1867
1904
  assert_equal 'Foo!', body
1868
1905
  end
1869
1906
 
1870
- should 'have MethodOverride middleware' do
1907
+ it 'should have MethodOverride middleware' do
1871
1908
  mock_app do
1872
1909
  put('/') { 'okay' }
1873
1910
  end
@@ -1877,7 +1914,7 @@ describe "Routing" do
1877
1914
  assert_equal 'okay', body
1878
1915
  end
1879
1916
 
1880
- should 'return value from params' do
1917
+ it 'should return value from params' do
1881
1918
  mock_app do
1882
1919
  get("/foo/:bar"){ raise "'bar' should be a string" unless params[:bar].kind_of? String}
1883
1920
  end
@@ -1885,7 +1922,7 @@ describe "Routing" do
1885
1922
  assert ok?
1886
1923
  end
1887
1924
 
1888
- should 'return params as a HashWithIndifferentAccess object via GET' do
1925
+ it 'should return params as a HashWithIndifferentAccess object via GET' do
1889
1926
  mock_app do
1890
1927
  get('/foo/:bar') { "#{params["bar"]} #{params[:bar]}" }
1891
1928
  get(:foo, :map => '/prefix/:var') { "#{params["var"]} #{params[:var]}" }
@@ -1898,7 +1935,7 @@ describe "Routing" do
1898
1935
  assert_equal "var var", body
1899
1936
  end
1900
1937
 
1901
- should 'return params as a HashWithIndifferentAccess object via POST' do
1938
+ it 'should return params as a HashWithIndifferentAccess object via POST' do
1902
1939
  mock_app do
1903
1940
  post('/user') do
1904
1941
  "#{params["user"]["full_name"]} #{params[:user][:full_name]}"
@@ -1912,7 +1949,7 @@ describe "Routing" do
1912
1949
  assert_equal "example user example user", body
1913
1950
  end
1914
1951
 
1915
- should 'have MethodOverride middleware with more options' do
1952
+ it 'should have MethodOverride middleware with more options' do
1916
1953
  mock_app do
1917
1954
  put('/hi', :provides => [:json]) { 'hi' }
1918
1955
  end
@@ -1926,7 +1963,7 @@ describe "Routing" do
1926
1963
  assert_equal 405, status
1927
1964
  end
1928
1965
 
1929
- should 'parse nested params' do
1966
+ it 'should parse nested params' do
1930
1967
  mock_app do
1931
1968
  get(:index) { "%s %s" % [params[:account][:name], params[:account][:surname]] }
1932
1969
  end
@@ -1936,14 +1973,14 @@ describe "Routing" do
1936
1973
  assert_equal 'foo bar', body
1937
1974
  end
1938
1975
 
1939
- should 'render sinatra NotFound page' do
1976
+ it 'should render sinatra NotFound page' do
1940
1977
  mock_app { set :environment, :development }
1941
1978
  get "/"
1942
1979
  assert_equal 404, status
1943
1980
  assert_match %r{(Sinatra doesn&rsquo;t know this ditty.|<h1>Not Found</h1>)}, body
1944
1981
  end
1945
1982
 
1946
- should 'render a custom NotFound page' do
1983
+ it 'should render a custom NotFound page' do
1947
1984
  mock_app do
1948
1985
  error(Sinatra::NotFound) { "not found" }
1949
1986
  end
@@ -1952,7 +1989,7 @@ describe "Routing" do
1952
1989
  assert_match /not found/, body
1953
1990
  end
1954
1991
 
1955
- should 'render a custom 404 page using not_found' do
1992
+ it 'should render a custom 404 page using not_found' do
1956
1993
  mock_app do
1957
1994
  not_found { "custom 404 not found" }
1958
1995
  end
@@ -1961,8 +1998,7 @@ describe "Routing" do
1961
1998
  assert_equal "custom 404 not found", body
1962
1999
  end
1963
2000
 
1964
- should 'render a custom error page using error method' do
1965
- skip # TODO sinatra bug?
2001
+ it 'should render a custom error page using error method' do
1966
2002
  mock_app do
1967
2003
  error(404) { "custom 404 error" }
1968
2004
  end
@@ -1971,7 +2007,7 @@ describe "Routing" do
1971
2007
  assert_equal "custom 404 error", body
1972
2008
  end
1973
2009
 
1974
- should 'render a custom 403 page' do
2010
+ it 'should render a custom 403 page' do
1975
2011
  mock_app do
1976
2012
  error(403) { "custom 403 not found" }
1977
2013
  get("/") { status 403 }
@@ -1981,7 +2017,7 @@ describe "Routing" do
1981
2017
  assert_equal "custom 403 not found", body
1982
2018
  end
1983
2019
 
1984
- should 'recognize paths' do
2020
+ it 'should recognize paths' do
1985
2021
  mock_app do
1986
2022
  controller :foo do
1987
2023
  get(:bar, :map => "/my/:id/custom-route") { }
@@ -1999,7 +2035,7 @@ describe "Routing" do
1999
2035
  assert_equal [:with_format, { :id => "9", :format => "js" }], @app.recognize_path(@app.url(:with_format, :id => 9, :format => :js))
2000
2036
  end
2001
2037
 
2002
- should 'have current_path' do
2038
+ it 'should have current_path' do
2003
2039
  mock_app do
2004
2040
  controller :foo do
2005
2041
  get(:index) { current_path }
@@ -2017,7 +2053,7 @@ describe "Routing" do
2017
2053
  assert_equal "/foo", body
2018
2054
  end
2019
2055
 
2020
- should 'accept :map and :parent' do
2056
+ it 'should accept :map and :parent' do
2021
2057
  mock_app do
2022
2058
  controller :posts do
2023
2059
  get :show, :parent => :users, :map => "posts/:id" do
@@ -2029,7 +2065,7 @@ describe "Routing" do
2029
2065
  assert_equal "123-321", body
2030
2066
  end
2031
2067
 
2032
- should 'change params in current_path' do
2068
+ it 'should change params in current_path' do
2033
2069
  mock_app do
2034
2070
  get :index, :map => "/paginate/:page" do
2035
2071
  current_path(:page => 66)
@@ -2039,7 +2075,7 @@ describe "Routing" do
2039
2075
  assert_equal "/paginate/66", body
2040
2076
  end
2041
2077
 
2042
- should 'not route get :users, :with => :id to /users//' do
2078
+ it 'should not route get :users, :with => :id to /users//' do
2043
2079
  mock_app do
2044
2080
  get(:users, :with => :id) { 'boo' }
2045
2081
  end