merb-core 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +136 -2
- data/CONTRIBUTORS +6 -0
- data/PUBLIC_CHANGELOG +38 -0
- data/Rakefile +38 -30
- data/lib/merb-core.rb +88 -23
- data/lib/merb-core/bootloader.rb +235 -51
- data/lib/merb-core/config.rb +121 -36
- data/lib/merb-core/controller/abstract_controller.rb +59 -36
- data/lib/merb-core/controller/exceptions.rb +2 -15
- data/lib/merb-core/controller/merb_controller.rb +44 -1
- data/lib/merb-core/controller/mime.rb +4 -0
- data/lib/merb-core/controller/mixins/controller.rb +38 -21
- data/lib/merb-core/controller/mixins/render.rb +44 -29
- data/lib/merb-core/controller/mixins/responder.rb +3 -31
- data/lib/merb-core/controller/template.rb +45 -21
- data/lib/merb-core/core_ext/kernel.rb +60 -32
- data/lib/merb-core/dispatch/default_exception/default_exception.rb +2 -2
- data/lib/merb-core/dispatch/default_exception/views/_css.html.erb +3 -1
- data/lib/merb-core/dispatch/default_exception/views/_javascript.html.erb +71 -67
- data/lib/merb-core/dispatch/default_exception/views/index.html.erb +7 -3
- data/lib/merb-core/dispatch/dispatcher.rb +3 -3
- data/lib/merb-core/dispatch/request.rb +56 -9
- data/lib/merb-core/dispatch/router.rb +159 -133
- data/lib/merb-core/dispatch/router/behavior.rb +462 -703
- data/lib/merb-core/dispatch/router/cached_proc.rb +3 -3
- data/lib/merb-core/dispatch/router/resources.rb +289 -0
- data/lib/merb-core/dispatch/router/route.rb +514 -294
- data/lib/merb-core/dispatch/session.rb +4 -2
- data/lib/merb-core/logger.rb +213 -202
- data/lib/merb-core/plugins.rb +9 -1
- data/lib/merb-core/rack.rb +3 -1
- data/lib/merb-core/rack/adapter.rb +7 -4
- data/lib/merb-core/rack/adapter/abstract.rb +188 -0
- data/lib/merb-core/rack/adapter/ebb.rb +12 -13
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -15
- data/lib/merb-core/rack/adapter/irb.rb +3 -2
- data/lib/merb-core/rack/adapter/mongrel.rb +22 -15
- data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +4 -16
- data/lib/merb-core/rack/adapter/thin.rb +21 -22
- data/lib/merb-core/rack/adapter/thin_turbo.rb +4 -11
- data/lib/merb-core/rack/adapter/webrick.rb +54 -18
- data/lib/merb-core/rack/application.rb +4 -4
- data/lib/merb-core/rack/handler/mongrel.rb +12 -13
- data/lib/merb-core/rack/middleware/csrf.rb +1 -1
- data/lib/merb-core/rack/stream_wrapper.rb +41 -0
- data/lib/merb-core/server.rb +157 -90
- data/lib/merb-core/tasks/gem_management.rb +267 -0
- data/lib/merb-core/tasks/merb.rb +1 -0
- data/lib/merb-core/tasks/merb_rake_helper.rb +48 -34
- data/lib/merb-core/tasks/stats.rake +1 -1
- data/lib/merb-core/test.rb +9 -3
- data/lib/merb-core/test/helpers.rb +1 -0
- data/lib/merb-core/test/helpers/mock_request_helper.rb +393 -0
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +3 -2
- data/lib/merb-core/test/helpers/request_helper.rb +40 -372
- data/lib/merb-core/test/helpers/route_helper.rb +16 -2
- data/lib/merb-core/test/matchers.rb +1 -0
- data/lib/merb-core/test/matchers/controller_matchers.rb +4 -247
- data/lib/merb-core/test/matchers/request_matchers.rb +140 -0
- data/lib/merb-core/test/matchers/view_matchers.rb +22 -4
- data/lib/merb-core/test/run_specs.rb +118 -26
- data/lib/merb-core/test/test_ext/rspec.rb +181 -0
- data/lib/merb-core/version.rb +1 -9
- metadata +10 -342
- data/docs/bootloading.dox +0 -58
- data/docs/documentation_standards +0 -40
- data/docs/merb-core-call-stack-diagram.mmap +0 -0
- data/docs/merb-core-call-stack-diagram.pdf +0 -0
- data/docs/merb-core-call-stack-diagram.png +0 -0
- data/docs/new_render_api +0 -51
- data/lib/merb-core/vendor/facets.rb +0 -2
- data/lib/merb-core/vendor/facets/dictionary.rb +0 -433
- data/lib/merb-core/vendor/facets/inflect.rb +0 -342
- data/spec/private/config/adapter_spec.rb +0 -32
- data/spec/private/config/config_spec.rb +0 -202
- data/spec/private/config/environment_spec.rb +0 -13
- data/spec/private/config/merb_spec.rb +0 -34
- data/spec/private/config/spec_helper.rb +0 -1
- data/spec/private/core_ext/kernel_spec.rb +0 -159
- data/spec/private/dispatch/bootloader_spec.rb +0 -24
- data/spec/private/dispatch/fixture/app/controllers/application.rb +0 -4
- data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +0 -25
- data/spec/private/dispatch/fixture/app/controllers/foo.rb +0 -19
- data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +0 -8
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +0 -37
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +0 -216
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +0 -38
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +0 -40
- data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
- data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +0 -11
- data/spec/private/dispatch/fixture/config/black_hole.rb +0 -12
- data/spec/private/dispatch/fixture/config/environments/development.rb +0 -6
- data/spec/private/dispatch/fixture/config/environments/production.rb +0 -5
- data/spec/private/dispatch/fixture/config/environments/test.rb +0 -6
- data/spec/private/dispatch/fixture/config/init.rb +0 -45
- data/spec/private/dispatch/fixture/config/rack.rb +0 -11
- data/spec/private/dispatch/fixture/config/router.rb +0 -35
- data/spec/private/dispatch/fixture/log/merb_test.log +0 -8839
- data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
- data/spec/private/dispatch/fixture/public/merb.fcgi +0 -4
- data/spec/private/dispatch/fixture/public/stylesheets/master.css +0 -119
- data/spec/private/dispatch/route_params_spec.rb +0 -23
- data/spec/private/dispatch/spec_helper.rb +0 -1
- data/spec/private/router/behavior_spec.rb +0 -60
- data/spec/private/router/fixture/log/merb_test.log +0 -35
- data/spec/private/router/route_spec.rb +0 -418
- data/spec/private/router/router_spec.rb +0 -183
- data/spec/private/vendor/facets/plural_spec.rb +0 -564
- data/spec/private/vendor/facets/singular_spec.rb +0 -489
- data/spec/public/DEFINITIONS +0 -11
- data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/cousins.rb +0 -41
- data/spec/public/abstract_controller/controllers/display.rb +0 -60
- data/spec/public/abstract_controller/controllers/filters.rb +0 -260
- data/spec/public/abstract_controller/controllers/helpers.rb +0 -41
- data/spec/public/abstract_controller/controllers/partial.rb +0 -121
- data/spec/public/abstract_controller/controllers/render.rb +0 -113
- data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/layout/alt.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/layout/custom.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +0 -1
- data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +0 -1
- data/spec/public/abstract_controller/display_spec.rb +0 -37
- data/spec/public/abstract_controller/filter_spec.rb +0 -136
- data/spec/public/abstract_controller/helper_spec.rb +0 -21
- data/spec/public/abstract_controller/partial_spec.rb +0 -61
- data/spec/public/abstract_controller/render_spec.rb +0 -90
- data/spec/public/abstract_controller/spec_helper.rb +0 -31
- data/spec/public/boot_loader/boot_loader_spec.rb +0 -33
- data/spec/public/boot_loader/spec_helper.rb +0 -1
- data/spec/public/controller/authentication_spec.rb +0 -174
- data/spec/public/controller/base_spec.rb +0 -88
- data/spec/public/controller/conditional_get_spec.rb +0 -100
- data/spec/public/controller/config/init.rb +0 -6
- data/spec/public/controller/controllers/authentication.rb +0 -74
- data/spec/public/controller/controllers/base.rb +0 -65
- data/spec/public/controller/controllers/conditional_get.rb +0 -35
- data/spec/public/controller/controllers/cookies.rb +0 -36
- data/spec/public/controller/controllers/dispatcher.rb +0 -35
- data/spec/public/controller/controllers/display.rb +0 -118
- data/spec/public/controller/controllers/redirect.rb +0 -36
- data/spec/public/controller/controllers/responder.rb +0 -93
- data/spec/public/controller/controllers/url.rb +0 -7
- data/spec/public/controller/controllers/views/layout/custom.html.erb +0 -1
- data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +0 -1
- data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +0 -1
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +0 -1
- data/spec/public/controller/cookies_spec.rb +0 -95
- data/spec/public/controller/dispatcher_spec.rb +0 -410
- data/spec/public/controller/display_spec.rb +0 -84
- data/spec/public/controller/redirect_spec.rb +0 -33
- data/spec/public/controller/responder_spec.rb +0 -169
- data/spec/public/controller/spec_helper.rb +0 -13
- data/spec/public/controller/url_spec.rb +0 -255
- data/spec/public/core/merb_core_spec.rb +0 -45
- data/spec/public/core_ext/fixtures/core_ext_dependency.rb +0 -2
- data/spec/public/core_ext/kernel_spec.rb +0 -88
- data/spec/public/core_ext/spec_helper.rb +0 -1
- data/spec/public/directory_structure/directory/app/controllers/application.rb +0 -3
- data/spec/public/directory_structure/directory/app/controllers/base.rb +0 -13
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +0 -19
- data/spec/public/directory_structure/directory/app/views/base/template.html.erb +0 -1
- data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +0 -1
- data/spec/public/directory_structure/directory/config/router.rb +0 -3
- data/spec/public/directory_structure/directory/log/merb_test.log +0 -4588
- data/spec/public/directory_structure/directory_spec.rb +0 -43
- data/spec/public/logger/logger_spec.rb +0 -181
- data/spec/public/logger/spec_helper.rb +0 -1
- data/spec/public/rack/conditinal_get_middleware_spec.rb +0 -127
- data/spec/public/rack/csrf_middleware_spec.rb +0 -70
- data/spec/public/rack/rack_middleware_spec.rb +0 -99
- data/spec/public/rack/shared_example_groups.rb +0 -35
- data/spec/public/reloading/directory/app/controllers/application.rb +0 -3
- data/spec/public/reloading/directory/app/controllers/reload.rb +0 -6
- data/spec/public/reloading/directory/config/init.rb +0 -2
- data/spec/public/reloading/directory/log/merb_test.log +0 -288231
- data/spec/public/reloading/reload_spec.rb +0 -103
- data/spec/public/request/multipart_spec.rb +0 -41
- data/spec/public/request/request_spec.rb +0 -250
- data/spec/public/router/default_spec.rb +0 -21
- data/spec/public/router/deferred_spec.rb +0 -22
- data/spec/public/router/fixation_spec.rb +0 -49
- data/spec/public/router/fixture/log/merb_test.log +0 -524
- data/spec/public/router/namespace_spec.rb +0 -113
- data/spec/public/router/nested_matches_spec.rb +0 -97
- data/spec/public/router/nested_resources_spec.rb +0 -41
- data/spec/public/router/resource_spec.rb +0 -37
- data/spec/public/router/resources_spec.rb +0 -82
- data/spec/public/router/spec_helper.rb +0 -90
- data/spec/public/router/special_spec.rb +0 -61
- data/spec/public/router/string_spec.rb +0 -61
- data/spec/public/session/controllers/sessions.rb +0 -56
- data/spec/public/session/cookie_session_spec.rb +0 -73
- data/spec/public/session/memcached_session_spec.rb +0 -31
- data/spec/public/session/memory_session_spec.rb +0 -28
- data/spec/public/session/multiple_sessions_spec.rb +0 -74
- data/spec/public/session/no_session_spec.rb +0 -12
- data/spec/public/session/session_spec.rb +0 -106
- data/spec/public/template/template_spec.rb +0 -104
- data/spec/public/template/templates/error.html.erb +0 -2
- data/spec/public/template/templates/template.html.erb +0 -1
- data/spec/public/template/templates/template.html.myt +0 -1
- data/spec/public/test/controller_matchers_spec.rb +0 -412
- data/spec/public/test/controllers/controller_assertion_mock.rb +0 -7
- data/spec/public/test/controllers/dispatch_controller.rb +0 -11
- data/spec/public/test/controllers/spec_helper_controller.rb +0 -39
- data/spec/public/test/multipart_request_helper_spec.rb +0 -159
- data/spec/public/test/multipart_upload_text_file.txt +0 -1
- data/spec/public/test/request_helper_spec.rb +0 -269
- data/spec/public/test/route_helper_spec.rb +0 -78
- data/spec/public/test/route_matchers_spec.rb +0 -166
- data/spec/public/test/view_helper_spec.rb +0 -96
- data/spec/public/test/view_matchers_spec.rb +0 -183
- data/spec/spec_helper.rb +0 -121
@@ -1,113 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
describe "namespaced resource(s) routes" do
|
3
|
-
|
4
|
-
after :each do
|
5
|
-
Merb::Router.named_routes = {}
|
6
|
-
Merb::Router.routes = []
|
7
|
-
end
|
8
|
-
|
9
|
-
it "should match a get to /admin/blogposts without setting namespace" do
|
10
|
-
Merb::Router.prepare do |r|
|
11
|
-
r.match('/admin') do |admin|
|
12
|
-
admin.resources :blogposts
|
13
|
-
end
|
14
|
-
end
|
15
|
-
route_to('/admin/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace=>nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should match a get to /admin/blogposts setting namespace manually" do
|
19
|
-
Merb::Router.prepare do |r|
|
20
|
-
r.match('/admin').to(:namespace => "my_admin") do |admin|
|
21
|
-
admin.resources :blogposts
|
22
|
-
end
|
23
|
-
end
|
24
|
-
route_to('/admin/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace=>"my_admin")
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should match a get to /admin/blogposts to the blogposts controller and index action" do
|
28
|
-
Merb::Router.prepare do |r|
|
29
|
-
r.namespace :admin do |admin|
|
30
|
-
admin.resources :blogposts
|
31
|
-
end
|
32
|
-
end
|
33
|
-
route_to('/admin/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace => 'admin')
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should match a get to /admin/foo to the foo controller and show action" do
|
37
|
-
Merb::Router.prepare do |r|
|
38
|
-
r.namespace :admin do |admin|
|
39
|
-
admin.resource :foo
|
40
|
-
end
|
41
|
-
end
|
42
|
-
route_to('/admin/foo', :method => :get).should have_route(:controller => 'foo', :action => 'show', :id => nil)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should match a get to /admin/foo/blogposts to the blogposts controller and index action" do
|
46
|
-
Merb::Router.prepare do |r|
|
47
|
-
r.namespace :admin do |admin|
|
48
|
-
admin.resource :foo do |foo|
|
49
|
-
foo.resources :blogposts
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
route_to('/admin/foo/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace => 'admin')
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should match a get to /admin/blogposts/1/foo to the foo controller and the show action" do
|
57
|
-
Merb::Router.prepare do |r|
|
58
|
-
r.namespace :admin do |admin|
|
59
|
-
admin.resources :blogposts do |blogposts|
|
60
|
-
blogposts.resource :foo
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
route_to('/admin/blogposts/1/foo', :method => :get).should have_route(:controller => 'foo', :action => 'show', :blogpost_id => '1', :id => nil, :namespace => "admin")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "should match a get to /blogposts to the blogposts controller when namespace is passed in to resources" do
|
68
|
-
Merb::Router.prepare do |r|
|
69
|
-
r.resources :blogposts, :namespace => "admin"
|
70
|
-
end
|
71
|
-
route_to("/blogposts", :method =>:get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace => "admin")
|
72
|
-
end
|
73
|
-
|
74
|
-
it "should match a get to /blogposts/1/foo to the foo controller when namespace is passed in to resources as an option" do
|
75
|
-
Merb::Router.prepare do |r|
|
76
|
-
r.resources :blogposts, :namespace => "admin" do |blogposts|
|
77
|
-
blogposts.resource :foo, :namespace => "admin"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
route_to("/blogposts", :method =>:get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace => "admin")
|
81
|
-
route_to("/blogposts/1/foo", :method =>:get).should have_route(:controller => 'foo', :action => 'show', :blogpost_id => '1', :namespace => "admin")
|
82
|
-
end
|
83
|
-
|
84
|
-
it "should match a get to /blogposts/1/foo to the foo controller without a namespace" do
|
85
|
-
Merb::Router.prepare do |r|
|
86
|
-
r.resources :blogposts, :namespace => "admin" do |blogposts|
|
87
|
-
blogposts.resource :foo
|
88
|
-
end
|
89
|
-
end
|
90
|
-
route_to("/blogposts/1/foo", :method =>:get).should have_route(:controller => 'foo', :action => 'show', :blogpost_id => '1', :namespace => nil)
|
91
|
-
end
|
92
|
-
|
93
|
-
it "should match a get to /my_admin/blogposts to the blogposts controller with a custom patch setting" do
|
94
|
-
Merb::Router.prepare do |r|
|
95
|
-
r.namespace(:admin, :path=>"my_admin") do |admin|
|
96
|
-
admin.resources :blogposts
|
97
|
-
end
|
98
|
-
end
|
99
|
-
route_to('/my_admin/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil, :namespace => 'admin')
|
100
|
-
end
|
101
|
-
|
102
|
-
it "should match a get to /admin/blogposts/1/foo to the foo controller and the show action with namespace admin" do
|
103
|
-
Merb::Router.prepare do |r|
|
104
|
-
r.namespace(:admin, :path=>"") do |admin|
|
105
|
-
admin.resources :blogposts do |blogposts|
|
106
|
-
blogposts.resource :foo
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
route_to('/blogposts/1/foo', :method => :get).should have_route(:controller => 'foo', :action => 'show', :blogpost_id => '1', :id => nil, :namespace => "admin")
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
describe "A route derived from the blocks of #match" do
|
4
|
-
|
5
|
-
it "should inherit the :controller option." do
|
6
|
-
Merb::Router.prepare do |r|
|
7
|
-
r.match('/alpha', :controller=>'Alphas') do |alpha|
|
8
|
-
alpha.match('').to(:action=>'normal')
|
9
|
-
end
|
10
|
-
end
|
11
|
-
route_to('/alpha').should have_route(:controller=>'Alphas',:action=>'normal')
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should inherit the :action option." do
|
15
|
-
Merb::Router.prepare do |r|
|
16
|
-
r.match('/alpha', :action=>'wierd') do |alpha|
|
17
|
-
alpha.match('').to(:controller=>'Alphas')
|
18
|
-
end
|
19
|
-
end
|
20
|
-
route_to('/alpha').should have_route(:controller=>'Alphas',:action=>'wierd')
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should inherit the default :action of 'index'" do
|
24
|
-
Merb::Router.prepare do |r|
|
25
|
-
r.match('/alpha', :controller=>'Alphas') do |alpha|
|
26
|
-
alpha.match('').to({})
|
27
|
-
end
|
28
|
-
end
|
29
|
-
route_to('/alpha').should have_route(:controller=>'Alphas',:action=>'index')
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should make use of the :params option" do
|
33
|
-
Merb::Router.prepare do |r|
|
34
|
-
r.match('/alpha', :controller=>'Alphas', :params =>{:key=>'value'}) do |alpha|
|
35
|
-
alpha.match('').to(:action=>'normal',:key2=>'value2')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
route_to('/alpha').should have_route(:controller=>'Alphas',:key=>'value',:action=>'normal',:key2=>'value2')
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should inherit the parameters through many levels" do
|
42
|
-
Merb::Router.prepare do |r|
|
43
|
-
r.match('/alpha', :controller=>'Alphas') do |alpha|
|
44
|
-
alpha.match('/beta', :action=>'normal') do |beta|
|
45
|
-
beta.match('/:id').to(:id=>':id')
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
route_to('/alpha/beta/gamma').should have_route(:controller=>'Alphas',:action=>'normal', :id=>'gamma')
|
50
|
-
end
|
51
|
-
|
52
|
-
it "allows wrapping of nested routes all having shared argument" do
|
53
|
-
Merb::Router.prepare do |r|
|
54
|
-
r.match('/:language') do |i18n|
|
55
|
-
i18n.match!('/:controller/:action')
|
56
|
-
end
|
57
|
-
end
|
58
|
-
route_to('/fr/hotels/search').should have_route(:controller => 'hotels', :action => "search", :language => "fr")
|
59
|
-
end
|
60
|
-
|
61
|
-
it "allows wrapping of nested routes all having shared argument" do
|
62
|
-
Merb::Router.prepare do |r|
|
63
|
-
r.match(/\/?(.*)?/).to(:language => "[1]") do |l|
|
64
|
-
l.match("/guides/:action/:id").to(:controller => "tour_guides")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
route_to('/en/guides/search/london').should have_route(:controller => 'tour_guides', :action => "search", :language => "en", :id => "london")
|
69
|
-
end
|
70
|
-
|
71
|
-
it "allows wrapping of nested routes all having shared OPTIONAL argument" do
|
72
|
-
Merb::Router.prepare do |r|
|
73
|
-
r.match(/\/?(.*)?/).to(:language => "[1]") do |l|
|
74
|
-
l.match("/guides/:action/:id").to(:controller => "tour_guides")
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
route_to('/guides/search/london').should have_route(:controller => 'tour_guides', :action => "search", :id => "london")
|
79
|
-
end
|
80
|
-
|
81
|
-
it "allows wrapping of nested routes all having shared argument with PREDEFINED VALUES" do
|
82
|
-
Merb::Router.prepare do |r|
|
83
|
-
r.match(/\/?(en|es|fr|be|nl)?/).to(:language => "[1]") do |l|
|
84
|
-
l.match("/guides/:action/:id").to(:controller => "tour_guides")
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
route_to('/nl/guides/search/denboss').should have_route(:controller => 'tour_guides', :action => "search", :id => "denboss", :language => "nl")
|
89
|
-
route_to('/es/guides/search/barcelona').should have_route(:controller => 'tour_guides', :action => "search", :id => "barcelona", :language => "es")
|
90
|
-
route_to('/fr/guides/search/lille').should have_route(:controller => 'tour_guides', :action => "search", :id => "lille", :language => "fr")
|
91
|
-
route_to('/en/guides/search/london').should have_route(:controller => 'tour_guides', :action => "search", :id => "london", :language => "en")
|
92
|
-
route_to('/be/guides/search/brussels').should have_route(:controller => 'tour_guides', :action => "search", :id => "brussels", :language => "be")
|
93
|
-
|
94
|
-
route_to('/guides/search/brussels').should have_route(:controller => 'tour_guides', :action => "search", :id => "brussels")
|
95
|
-
route_to('/se/guides/search/stokholm').should have_route(:controller => 'tour_guides', :action => "search", :id => "stokholm", :language => nil)
|
96
|
-
end
|
97
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
Merb::Router.prepare do |r|
|
4
|
-
r.resources :blogposts do |b|
|
5
|
-
b.resources :comments do |c|
|
6
|
-
c.resources :versions
|
7
|
-
end
|
8
|
-
end
|
9
|
-
r.resources :users do |u|
|
10
|
-
u.resources :comments
|
11
|
-
end
|
12
|
-
r.resource :foo do |f|
|
13
|
-
f.resources :comments
|
14
|
-
end
|
15
|
-
r.resources :domains, :keys => [:domain] do |d|
|
16
|
-
d.resources :emails, :keys => [:username]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
describe "nested resources routes" do
|
21
|
-
|
22
|
-
it "should match a get to /blogposts/1/comments to the comments controller and index action with blogpost_id" do
|
23
|
-
route_to('/blogposts/1/comments', :method => :get).should have_route(:controller => 'comments', :action => 'index', :id => nil, :blogpost_id => '1')
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should match a get to /blogposts/1/comments/2/versions to the versions controller and index action with blogpost_id and comment_id" do
|
27
|
-
route_to('/blogposts/1/comments/2/versions', :method => :get).should have_route(:controller => 'versions', :action => 'index', :id => nil, :blogpost_id => '1', :comment_id => '2')
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should match a get to /users/1/comments to the comments controller and index action with user_id" do
|
31
|
-
route_to('/users/1/comments', :method => :get).should have_route(:controller => 'comments', :action => 'index', :id => nil, :user_id => '1')
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should match a get to /foo/comments to the comments controller and index action" do
|
35
|
-
route_to('/foo/comments', :method => :get).should have_route(:controller => 'comments', :action => 'index', :id => nil)
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should match a get to /domains/merbivore_com/emails to the emails controller and index action with domain => 'merbivore_com" do
|
39
|
-
route_to('/domains/merbivore_com/emails', :method => :get).should have_route(:controller => 'emails', :action => 'index', :username => nil, :domain => 'merbivore_com')
|
40
|
-
end
|
41
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
describe "resources routes" do
|
4
|
-
before :each do
|
5
|
-
Merb::Router.prepare do |r|
|
6
|
-
r.resource :foo
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should match a get to /foo to the blogposts controller and show action" do
|
11
|
-
route_to('/foo', :method => :get).should have_route(:controller => 'foo', :action => 'show', :id => nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should match a post to /foo to the blogposts controller and create action" do
|
15
|
-
route_to('/foo', :method => :post).should have_route(:controller => 'foo', :action => 'create', :id => nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should match a put to /foo to the blogposts controller and update action" do
|
19
|
-
route_to('/foo', :method => :put).should have_route(:controller => 'foo', :action => 'update', :id => nil)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should match a delete to /foo to the blogposts controller and show action" do
|
23
|
-
route_to('/foo', :method => :delete).should have_route(:controller => 'foo', :action => 'destroy', :id => nil)
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should match a get to /foo/new to the blogposts controller and new action" do
|
27
|
-
route_to('/foo/new', :method => :get).should have_route(:controller => 'foo', :action => 'new', :id => nil)
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should match a get to /foo/edit to the blogposts controller and edit action" do
|
31
|
-
route_to('/foo/edit', :method => :get).should have_route(:controller => 'foo', :action => 'edit', :id => nil)
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should match a get to /foo/delete to the blogposts controller and delete action" do
|
35
|
-
route_to('/foo/delete', :method => :get).should have_route(:controller => 'foo', :action => 'delete', :id => nil)
|
36
|
-
end
|
37
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
describe "resources routes" do
|
4
|
-
before :each do
|
5
|
-
Merb::Router.prepare do |r|
|
6
|
-
r.resources :blogposts
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should match a get to /blogposts to the blogposts controller and index action" do
|
11
|
-
route_to('/blogposts', :method => :get).should have_route(:controller => 'blogposts', :action => 'index', :id => nil)
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should match a post to /blogposts to the blogposts controller and create action" do
|
15
|
-
route_to('/blogposts', :method => :post).should have_route(:controller => 'blogposts', :action => 'create', :id => nil)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should match a get to /blogposts/new to the blogposts controller and the new action" do
|
19
|
-
route_to('/blogposts/new', :method => :get).should have_route(:controller => 'blogposts', :action => 'new', :id => nil)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should match a get to /blogposts/1 ot the blogposts controller and the show action with id 1" do
|
23
|
-
route_to('/blogposts/1', :method => :get).should have_route(:controller => 'blogposts', :action => 'show', :id => "1")
|
24
|
-
end
|
25
|
-
|
26
|
-
it "should match a put to /blogposts/1 ot the blogposts controller and the update action with id 1" do
|
27
|
-
route_to('/blogposts/1', :method => :put).should have_route(:controller => 'blogposts', :action => 'update', :id => "1")
|
28
|
-
end
|
29
|
-
|
30
|
-
it "should match a delete to /blogposts/1 ot the blogposts controller and the destroy action with id 1" do
|
31
|
-
route_to('/blogposts/1', :method => :delete).should have_route(:controller => 'blogposts', :action => 'destroy', :id => "1")
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should match a get to /blogposts/1/edit to the blogposts controller and the edit action with id 1" do
|
35
|
-
route_to('/blogposts/1/edit', :method => :get).should have_route(:controller => 'blogposts', :action => 'edit', :id => "1")
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should not match a put to /blogposts/1/edit" do
|
39
|
-
# not sure which of these is the best way to specify what I mean - so they're both in...
|
40
|
-
route_to('/blogposts/1/edit', :method => :put).should have_nil_route
|
41
|
-
route_to('/blogposts/1/edit', :method => :put).should_not have_route(:controller => 'blogposts', :action => 'edit', :id => "1")
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should match a get to /blogposts/1/delete to the blogposts controller and the delete action with id 1" do
|
45
|
-
route_to('/blogposts/1/delete', :method => :get).should have_route(:controller => 'blogposts', :action => 'delete', :id => "1")
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
|
50
|
-
describe "resources routes with named keys" do
|
51
|
-
before :each do
|
52
|
-
Merb::Router.prepare do |r|
|
53
|
-
r.resources :emails, :keys => ["username", "domain"]
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should match a get to /emails/bidule/merbivore_com to the emails controller and the show action with username => 'bidule', domain => 'merbivore_com'" do
|
58
|
-
route_to('/emails/bidule/merbivore_com', :method => :get).should have_route(:controller => 'emails', :action => 'show', :username => "bidule", :domain => "merbivore_com")
|
59
|
-
end
|
60
|
-
|
61
|
-
it "should match a put to /emails/bidule/merbivore_com to the emails controller and the update action with username => 'bidule', domain => 'merbivore_com'" do
|
62
|
-
route_to('/emails/bidule/merbivore_com', :method => :put).should have_route(:controller => 'emails', :action => 'update', :username => "bidule", :domain => "merbivore_com")
|
63
|
-
end
|
64
|
-
|
65
|
-
it "should match a delete to /emails/bidule/merbivore_com to the emails controller and the destroy action with username => 'bidule', domain => 'merbivore_com'" do
|
66
|
-
route_to('/emails/bidule/merbivore_com', :method => :delete).should have_route(:controller => 'emails', :action => 'destroy', :username => "bidule", :domain => "merbivore_com")
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should match a get to /emails/bidule/merbivore_com/edit to the emails controller and the destroy action with username => 'bidule', domain => 'merbivore_com'" do
|
70
|
-
route_to('/emails/bidule/merbivore_com/edit', :method => :get).should have_route(:controller => 'emails', :action => 'edit', :username => "bidule", :domain => "merbivore_com")
|
71
|
-
end
|
72
|
-
|
73
|
-
it "should not match a put to /emails/bidule/merbivore_com/edit" do
|
74
|
-
# not sure which of these is the best way to specify what I mean - so they're both in...
|
75
|
-
route_to('/emails/bidule/merbivore_com/edit', :method => :put).should have_nil_route
|
76
|
-
route_to('/emails/bidule/merbivore_com/edit', :method => :put).should_not have_route(:controller => 'emails', :action => 'edit', :username => "bidule", :domain => "merbivore_com")
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should match a get to /emails/bidule/merbivore_com/delete to the emails controller and the delete action with username => 'bidule', domain => 'merbivore_com'" do
|
80
|
-
route_to('/emails/bidule/merbivore_com/delete', :method => :get).should have_route(:controller => 'emails', :action => 'delete', :username => "bidule", :domain => "merbivore_com")
|
81
|
-
end
|
82
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
require 'rack/mock'
|
5
|
-
require 'stringio'
|
6
|
-
Merb.start :environment => 'test',
|
7
|
-
:merb_root => File.dirname(__FILE__) / 'fixture'
|
8
|
-
|
9
|
-
|
10
|
-
class SimpleRequest < OpenStruct
|
11
|
-
|
12
|
-
def method
|
13
|
-
@table[:method]
|
14
|
-
end
|
15
|
-
|
16
|
-
def params
|
17
|
-
@table
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def prepare_route(from, to)
|
22
|
-
Merb::Router.prepare {|r| r.match(from).to(to)}
|
23
|
-
end
|
24
|
-
|
25
|
-
def route_to(path, args = {}, protocol = "http://")
|
26
|
-
Merb::Router.match(SimpleRequest.new({:protocol => protocol, :path => path}.merge(args)))[1]
|
27
|
-
end
|
28
|
-
|
29
|
-
def match_for(path, args = {}, protocol = "http://")
|
30
|
-
Merb::Router.match(SimpleRequest.new({:protocol => protocol, :path => path}.merge(args)))
|
31
|
-
end
|
32
|
-
|
33
|
-
def matched_route_for(*args)
|
34
|
-
# get route index
|
35
|
-
idx = match_for(*args)[0]
|
36
|
-
|
37
|
-
Merb::Router.routes[idx]
|
38
|
-
end
|
39
|
-
|
40
|
-
def generate(*args)
|
41
|
-
Merb::Router.generate *args
|
42
|
-
end
|
43
|
-
|
44
|
-
module Merb
|
45
|
-
|
46
|
-
module Test
|
47
|
-
|
48
|
-
module RspecMatchers
|
49
|
-
|
50
|
-
class HaveRoute
|
51
|
-
|
52
|
-
def self.build(expected)
|
53
|
-
this = new
|
54
|
-
this.instance_variable_set("@expected", expected)
|
55
|
-
this
|
56
|
-
end
|
57
|
-
|
58
|
-
def matches?(target)
|
59
|
-
@target = target
|
60
|
-
@errors = []
|
61
|
-
@expected.all? { |param, value| @target[param] == value }
|
62
|
-
end
|
63
|
-
|
64
|
-
def failure_message
|
65
|
-
@target.each do |param, value|
|
66
|
-
@errors << "Expected :#{param} to be #{@expected[param].inspect}, but was #{value.inspect}" unless
|
67
|
-
@expected[param] == value
|
68
|
-
end
|
69
|
-
@errors << "Got #{@target.inspect}"
|
70
|
-
@errors.join("\n")
|
71
|
-
end
|
72
|
-
|
73
|
-
def negative_failure_message
|
74
|
-
"Expected #{@expected.inspect} not to be #{@target.inspect}, but it was."
|
75
|
-
end
|
76
|
-
|
77
|
-
def description() "have_route #{@target.inspect}" end
|
78
|
-
end
|
79
|
-
|
80
|
-
def have_route(expected)
|
81
|
-
HaveRoute.build(expected)
|
82
|
-
end
|
83
|
-
|
84
|
-
def have_nil_route
|
85
|
-
have_route({})
|
86
|
-
end
|
87
|
-
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|