merb-core 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +20 -0
- data/README +21 -0
- data/Rakefile +285 -0
- data/TODO +0 -0
- data/bin/merb +8 -0
- data/bin/merb-specs +5 -0
- data/docs/bootloading.dox +57 -0
- data/docs/documentation_standards +40 -0
- data/docs/new_render_api +51 -0
- data/lib/merb-core.rb +304 -0
- data/lib/merb-core/autoload.rb +29 -0
- data/lib/merb-core/bootloader.rb +601 -0
- data/lib/merb-core/config.rb +284 -0
- data/lib/merb-core/constants.rb +43 -0
- data/lib/merb-core/controller/abstract_controller.rb +531 -0
- data/lib/merb-core/controller/exceptions.rb +257 -0
- data/lib/merb-core/controller/merb_controller.rb +214 -0
- data/lib/merb-core/controller/mime.rb +88 -0
- data/lib/merb-core/controller/mixins/controller.rb +262 -0
- data/lib/merb-core/controller/mixins/render.rb +324 -0
- data/lib/merb-core/controller/mixins/responder.rb +464 -0
- data/lib/merb-core/controller/template.rb +205 -0
- data/lib/merb-core/core_ext.rb +12 -0
- data/lib/merb-core/core_ext/class.rb +192 -0
- data/lib/merb-core/core_ext/hash.rb +422 -0
- data/lib/merb-core/core_ext/kernel.rb +304 -0
- data/lib/merb-core/core_ext/mash.rb +154 -0
- data/lib/merb-core/core_ext/object.rb +136 -0
- data/lib/merb-core/core_ext/object_space.rb +14 -0
- data/lib/merb-core/core_ext/rubygems.rb +28 -0
- data/lib/merb-core/core_ext/set.rb +41 -0
- data/lib/merb-core/core_ext/string.rb +69 -0
- data/lib/merb-core/dispatch/cookies.rb +92 -0
- data/lib/merb-core/dispatch/dispatcher.rb +233 -0
- data/lib/merb-core/dispatch/exceptions.html.erb +297 -0
- data/lib/merb-core/dispatch/request.rb +560 -0
- data/lib/merb-core/dispatch/router.rb +141 -0
- data/lib/merb-core/dispatch/router/behavior.rb +777 -0
- data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
- data/lib/merb-core/dispatch/router/route.rb +212 -0
- data/lib/merb-core/dispatch/session.rb +28 -0
- data/lib/merb-core/dispatch/session/cookie.rb +166 -0
- data/lib/merb-core/dispatch/session/memcached.rb +161 -0
- data/lib/merb-core/dispatch/session/memory.rb +234 -0
- data/lib/merb-core/gem_ext/erubis.rb +19 -0
- data/lib/merb-core/logger.rb +230 -0
- data/lib/merb-core/plugins.rb +25 -0
- data/lib/merb-core/rack.rb +15 -0
- data/lib/merb-core/rack/adapter.rb +42 -0
- data/lib/merb-core/rack/adapter/ebb.rb +22 -0
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +24 -0
- data/lib/merb-core/rack/adapter/fcgi.rb +16 -0
- data/lib/merb-core/rack/adapter/irb.rb +108 -0
- data/lib/merb-core/rack/adapter/mongrel.rb +25 -0
- data/lib/merb-core/rack/adapter/runner.rb +27 -0
- data/lib/merb-core/rack/adapter/thin.rb +27 -0
- data/lib/merb-core/rack/adapter/webrick.rb +35 -0
- data/lib/merb-core/rack/application.rb +77 -0
- data/lib/merb-core/rack/handler/mongrel.rb +97 -0
- data/lib/merb-core/server.rb +184 -0
- data/lib/merb-core/test.rb +10 -0
- data/lib/merb-core/test/helpers.rb +9 -0
- data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
- data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
- data/lib/merb-core/test/helpers/request_helper.rb +257 -0
- data/lib/merb-core/test/helpers/route_helper.rb +33 -0
- data/lib/merb-core/test/helpers/view_helper.rb +121 -0
- data/lib/merb-core/test/matchers.rb +9 -0
- data/lib/merb-core/test/matchers/controller_matchers.rb +269 -0
- data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
- data/lib/merb-core/test/matchers/view_matchers.rb +293 -0
- data/lib/merb-core/test/run_specs.rb +38 -0
- data/lib/merb-core/test/tasks/spectasks.rb +39 -0
- data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
- data/lib/merb-core/test/test_ext/object.rb +14 -0
- data/lib/merb-core/vendor/facets.rb +2 -0
- data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
- data/lib/merb-core/vendor/facets/inflect.rb +211 -0
- data/lib/merb-core/version.rb +11 -0
- data/spec/private/config/adapter_spec.rb +32 -0
- data/spec/private/config/config_spec.rb +139 -0
- data/spec/private/config/environment_spec.rb +13 -0
- data/spec/private/config/spec_helper.rb +1 -0
- data/spec/private/core_ext/hash_spec.rb +506 -0
- data/spec/private/core_ext/kernel_spec.rb +46 -0
- data/spec/private/core_ext/object_spec.rb +39 -0
- data/spec/private/core_ext/set_spec.rb +26 -0
- data/spec/private/core_ext/string_spec.rb +9 -0
- data/spec/private/dispatch/cookies_spec.rb +107 -0
- data/spec/private/dispatch/dispatch_spec.rb +26 -0
- data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
- data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
- data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
- data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
- data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
- data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
- data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
- data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
- data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
- data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
- data/spec/private/dispatch/fixture/config/init.rb +45 -0
- data/spec/private/dispatch/fixture/config/rack.rb +1 -0
- data/spec/private/dispatch/fixture/config/router.rb +35 -0
- data/spec/private/dispatch/fixture/log/development.log +1 -0
- data/spec/private/dispatch/fixture/log/merb.4000.pid +1 -0
- data/spec/private/dispatch/fixture/log/merb_test.log +2040 -0
- data/spec/private/dispatch/fixture/log/production.log +1 -0
- data/spec/private/dispatch/fixture/merb.4000.pid +1 -0
- data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
- data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
- data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
- data/spec/private/dispatch/route_params_spec.rb +24 -0
- data/spec/private/dispatch/spec_helper.rb +1 -0
- data/spec/private/plugins/plugin_spec.rb +81 -0
- data/spec/private/rack/application_spec.rb +43 -0
- data/spec/public/DEFINITIONS +11 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/display.rb +54 -0
- data/spec/public/abstract_controller/controllers/filters.rb +167 -0
- data/spec/public/abstract_controller/controllers/helpers.rb +31 -0
- data/spec/public/abstract_controller/controllers/partial.rb +106 -0
- data/spec/public/abstract_controller/controllers/render.rb +86 -0
- data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
- 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 +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
- data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
- data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
- data/spec/public/abstract_controller/display_spec.rb +33 -0
- data/spec/public/abstract_controller/filter_spec.rb +80 -0
- data/spec/public/abstract_controller/helper_spec.rb +13 -0
- data/spec/public/abstract_controller/partial_spec.rb +53 -0
- data/spec/public/abstract_controller/render_spec.rb +70 -0
- data/spec/public/abstract_controller/spec_helper.rb +27 -0
- data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
- data/spec/public/boot_loader/spec_helper.rb +1 -0
- data/spec/public/controller/base_spec.rb +31 -0
- data/spec/public/controller/controllers/base.rb +41 -0
- data/spec/public/controller/controllers/display.rb +40 -0
- data/spec/public/controller/controllers/responder.rb +67 -0
- data/spec/public/controller/controllers/url.rb +7 -0
- data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
- data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
- data/spec/public/controller/display_spec.rb +34 -0
- data/spec/public/controller/log/merb.4000.pid +1 -0
- data/spec/public/controller/responder_spec.rb +95 -0
- data/spec/public/controller/spec_helper.rb +9 -0
- data/spec/public/controller/url_spec.rb +152 -0
- data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
- data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
- data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
- data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
- data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
- data/spec/public/directory_structure/directory/config/router.rb +3 -0
- data/spec/public/directory_structure/directory/log/merb.4000.pid +1 -0
- data/spec/public/directory_structure/directory/log/merb_test.log +265 -0
- data/spec/public/directory_structure/directory/merb.4000.pid +1 -0
- data/spec/public/directory_structure/directory_spec.rb +44 -0
- data/spec/public/logger/logger_spec.rb +175 -0
- data/spec/public/logger/spec_helper.rb +1 -0
- data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
- data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
- data/spec/public/reloading/directory/config/init.rb +2 -0
- data/spec/public/reloading/directory/log/merb.4000.pid +1 -0
- data/spec/public/reloading/directory/log/merb_test.log +59 -0
- data/spec/public/reloading/directory/merb.4000.pid +1 -0
- data/spec/public/reloading/reload_spec.rb +80 -0
- data/spec/public/request/multipart_spec.rb +15 -0
- data/spec/public/request/request_spec.rb +207 -0
- data/spec/public/router/default_spec.rb +21 -0
- data/spec/public/router/deferred_spec.rb +22 -0
- data/spec/public/router/namespace_spec.rb +113 -0
- data/spec/public/router/nested_resources_spec.rb +34 -0
- data/spec/public/router/resource_spec.rb +45 -0
- data/spec/public/router/resources_spec.rb +57 -0
- data/spec/public/router/spec_helper.rb +72 -0
- data/spec/public/router/special_spec.rb +44 -0
- data/spec/public/router/string_spec.rb +61 -0
- data/spec/public/template/template_spec.rb +92 -0
- data/spec/public/template/templates/error.html.erb +2 -0
- data/spec/public/template/templates/template.html.erb +1 -0
- data/spec/public/template/templates/template.html.myt +1 -0
- data/spec/public/test/controller_matchers_spec.rb +378 -0
- data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
- data/spec/public/test/controllers/dispatch_controller.rb +11 -0
- data/spec/public/test/controllers/spec_helper_controller.rb +30 -0
- data/spec/public/test/multipart_request_helper_spec.rb +159 -0
- data/spec/public/test/multipart_upload_text_file.txt +1 -0
- data/spec/public/test/request_helper_spec.rb +153 -0
- data/spec/public/test/route_helper_spec.rb +54 -0
- data/spec/public/test/route_matchers_spec.rb +133 -0
- data/spec/public/test/view_helper_spec.rb +96 -0
- data/spec/public/test/view_matchers_spec.rb +107 -0
- data/spec/spec_helper.rb +71 -0
- metadata +488 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Merb::AbstractController, " with capture and concat" do
|
|
4
|
+
|
|
5
|
+
it "should support capture" do
|
|
6
|
+
dispatch_should_make_body("Capture", "Capture")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should support concat" do
|
|
10
|
+
dispatch_should_make_body("Concat", "Concat")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Merb::AbstractController, " Partials" do
|
|
4
|
+
|
|
5
|
+
it "should work with no options" do
|
|
6
|
+
dispatch_should_make_body("BasicPartial", "Index Partial")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should work with :with" do
|
|
10
|
+
dispatch_should_make_body("WithPartial", "Partial with With")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should work with nil :with" do
|
|
14
|
+
dispatch_should_make_body("WithNilPartial", "Partial with nil local")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should work with :with and :as" do
|
|
18
|
+
dispatch_should_make_body("WithAsPartial", "Partial with With and As")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should work with collections" do
|
|
22
|
+
dispatch_should_make_body("PartialWithCollections", "Partial with collection")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should work with collections and :as" do
|
|
26
|
+
dispatch_should_make_body("PartialWithCollectionsAndAs", "Partial with collection")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should work with key/value pairs of locals" do
|
|
30
|
+
dispatch_should_make_body("PartialWithLocals", "Partial with local variables")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should work with both collections and locals" do
|
|
34
|
+
dispatch_should_make_body("PartialWithBoth", "Partial with c-o-l-l-e-c-t-i-o-n-")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "should work with both :with/:as and regular locals" do
|
|
38
|
+
dispatch_should_make_body("PartialWithWithAndLocals", "Partial with with and locals")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should work with a partial in another directory" do
|
|
42
|
+
dispatch_should_make_body("PartialInAnotherDirectory", "Index Partial in another directory")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should work with nested partials with locals" do
|
|
46
|
+
dispatch_should_make_body("NestedPartial", "first second first")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should work with multiple template roots" do
|
|
50
|
+
dispatch_should_make_body("BasicPartialWithMultipleRoots", "Base Index: Alt Partial")
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Merb::AbstractController, " rendering plain strings" do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
Merb.push_path(:layout, File.dirname(__FILE__) / "controllers" / "views" / "layouts")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should support rendering plain strings with no layout" do
|
|
10
|
+
dispatch_should_make_body("RenderString", "the index")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should support rendering plain strings with custom layouts" do
|
|
14
|
+
dispatch_should_make_body("RenderStringCustomLayout", "Custom: the index")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should support rendering plain strings with the application layout" do
|
|
18
|
+
dispatch_should_make_body("RenderStringAppLayout", "App: the index")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should support rendering plain strings with the controller layout" do
|
|
22
|
+
dispatch_should_make_body("RenderStringControllerLayout", "Controller: the index")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should support rendering plain strings with dynamic layouts" do
|
|
26
|
+
dispatch_should_make_body("RenderStringDynamicLayout", "Custom: the index", :index)
|
|
27
|
+
dispatch_should_make_body("RenderStringDynamicLayout", "Alt: the alt index", :alt_index)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe Merb::AbstractController, " rendering templates" do
|
|
33
|
+
|
|
34
|
+
it "should support rendering templates with no layout" do
|
|
35
|
+
dispatch_should_make_body("RenderTemplate", "the index")
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "should support rendering templates with custom layouts" do
|
|
39
|
+
dispatch_should_make_body("RenderStringCustomLayout", "Custom: the index")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "should support rendering templates with the application layout" do
|
|
43
|
+
dispatch_should_make_body("RenderTemplateAppLayout", "App: the index")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should support rendering plain strings with the controller layout" do
|
|
47
|
+
dispatch_should_make_body("RenderTemplateControllerLayout", "Controller: the index")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "should support rendering templates with a custom location" do
|
|
51
|
+
dispatch_should_make_body("RenderTemplateCustomLocation", "Wonderful")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "should support rendering templates with multiple roots" do
|
|
55
|
+
dispatch_should_make_body("RenderTemplateMultipleRoots", "App: Multiple")
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should support rendering templates with multiple roots, first root" do
|
|
59
|
+
dispatch_should_make_body("RenderTemplateMultipleRoots", "default show", "show")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should support rendering templates with multiple roots and custom location" do
|
|
63
|
+
dispatch_should_make_body("RenderTemplateMultipleRootsAndCustomLocation", "Woot.")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should support rendering templates with multiple roots and custom location from an inherited controller" do
|
|
67
|
+
dispatch_should_make_body("RenderTemplateMultipleRootsInherited", "Good.")
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
__DIR__ = File.dirname(__FILE__)
|
|
2
|
+
require File.join(__DIR__, "..", "..", "spec_helper")
|
|
3
|
+
|
|
4
|
+
require File.join(__DIR__, "controllers", "filters")
|
|
5
|
+
require File.join(__DIR__, "controllers", "render")
|
|
6
|
+
require File.join(__DIR__, "controllers", "partial")
|
|
7
|
+
require File.join(__DIR__, "controllers", "display")
|
|
8
|
+
require File.join(__DIR__, "controllers", "helpers")
|
|
9
|
+
|
|
10
|
+
Merb.start :environment => 'test'
|
|
11
|
+
|
|
12
|
+
module Merb::Test::Behaviors
|
|
13
|
+
include Merb::Test::RequestHelper
|
|
14
|
+
|
|
15
|
+
def dispatch_should_make_body(klass, body, action = :index, opts = {})
|
|
16
|
+
controller = Merb::Test::Fixtures::Abstract.const_get(klass).new
|
|
17
|
+
if opts.key?(:presets)
|
|
18
|
+
opts[:presets].each { |attr, value| controller.send(attr, value)}
|
|
19
|
+
end
|
|
20
|
+
controller._dispatch(action.to_s)
|
|
21
|
+
controller.body.should == body
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
Spec::Runner.configure do |config|
|
|
26
|
+
config.include Merb::Test::Behaviors
|
|
27
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# The before/after filters in BootLoaders are considered public API.
|
|
2
|
+
#
|
|
3
|
+
# However, Merb::BootLoader.subclasses is not considered public API and should not be used in plugins.
|
|
4
|
+
|
|
5
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
6
|
+
|
|
7
|
+
class Merb::BootLoader::AfterTest < Merb::BootLoader
|
|
8
|
+
after Merb::BootLoader::BeforeAppRuns
|
|
9
|
+
|
|
10
|
+
def self.run
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Merb::BootLoader::BeforeTest < Merb::BootLoader
|
|
15
|
+
before Merb::BootLoader::Templates
|
|
16
|
+
|
|
17
|
+
def self.run
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "The BootLoader" do
|
|
22
|
+
|
|
23
|
+
it "should support adding a BootLoader after another" do
|
|
24
|
+
idx = Merb::BootLoader.subclasses.index("Merb::BootLoader::BeforeAppRuns")
|
|
25
|
+
Merb::BootLoader.subclasses.index("Merb::BootLoader::AfterTest").should == idx + 1
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should support adding a BootLoader before another" do
|
|
29
|
+
idx = Merb::BootLoader.subclasses.index("Merb::BootLoader::Templates")
|
|
30
|
+
Merb::BootLoader.subclasses.index("Merb::BootLoader::BeforeTest").should == idx - 1
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Merb::Controller, " callable actions" do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
Merb.push_path(:layout, File.dirname(__FILE__) / "controllers" / "views" / "layouts")
|
|
7
|
+
Merb::Router.prepare do |r|
|
|
8
|
+
r.default_routes
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should dispatch to callable actions" do
|
|
13
|
+
dispatch_to(Merb::Test::Fixtures::Controllers::Base, :index).body.should == "index"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should not dispatch to hidden actions" do
|
|
17
|
+
calling { dispatch_to(Merb::Test::Fixtures::Controllers::Base, :hidden) }.
|
|
18
|
+
should raise_error(Merb::ControllerExceptions::ActionNotFound)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should dispatch to included methods with show_action called" do
|
|
22
|
+
dispatch_to(Merb::Test::Fixtures::Controllers::Base, :baz).body.should == "baz"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should not dispatch to included methods with show_action not called" do
|
|
26
|
+
calling { dispatch_to(Merb::Test::Fixtures::Controllers::Base, :bat) }.
|
|
27
|
+
should raise_error(Merb::ControllerExceptions::ActionNotFound)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Merb::Test::Fixtures
|
|
4
|
+
|
|
5
|
+
module Controllers
|
|
6
|
+
|
|
7
|
+
class Testing < Merb::Controller
|
|
8
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
module Inclusion
|
|
12
|
+
|
|
13
|
+
def self.included(base)
|
|
14
|
+
base.show_action(:baz)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def baz
|
|
18
|
+
"baz"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def bat
|
|
22
|
+
"bat"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Base < Testing
|
|
28
|
+
include Inclusion
|
|
29
|
+
|
|
30
|
+
def index
|
|
31
|
+
"index"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def hidden
|
|
35
|
+
"Bar"
|
|
36
|
+
end
|
|
37
|
+
hide_action :hidden
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Merb::Test::Fixtures::Controllers
|
|
4
|
+
|
|
5
|
+
class SomeModel
|
|
6
|
+
def to_xml; "<XML:Model />" end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Testing < Merb::Controller
|
|
10
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class Display < Testing
|
|
14
|
+
|
|
15
|
+
def index
|
|
16
|
+
@obj = SomeModel.new
|
|
17
|
+
display @obj
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class DisplayHtmlDefault < Display; end
|
|
22
|
+
|
|
23
|
+
class DisplayClassProvides < Display
|
|
24
|
+
provides :xml
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class DisplayLocalProvides < Display
|
|
28
|
+
|
|
29
|
+
def index
|
|
30
|
+
@obj = SomeModel.new
|
|
31
|
+
provides :xml
|
|
32
|
+
display @obj
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class DisplayWithTemplate < Display
|
|
37
|
+
layout :custom
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Merb::Test::Fixtures::Controllers
|
|
4
|
+
|
|
5
|
+
class Testing < Merb::Controller
|
|
6
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Responder < Testing
|
|
10
|
+
|
|
11
|
+
def index
|
|
12
|
+
render
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
class HtmlDefault < Responder; end
|
|
17
|
+
|
|
18
|
+
class ClassProvides < Responder
|
|
19
|
+
provides :xml
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class LocalProvides < Responder
|
|
23
|
+
def index
|
|
24
|
+
provides :xml
|
|
25
|
+
render
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
class MultiProvides < Responder
|
|
30
|
+
def index
|
|
31
|
+
provides :html, :js
|
|
32
|
+
render
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
class ClassOnlyProvides < Responder
|
|
37
|
+
only_provides :text, :xml
|
|
38
|
+
|
|
39
|
+
def index
|
|
40
|
+
"nothing"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
class OnlyProvides < Responder
|
|
45
|
+
def index
|
|
46
|
+
only_provides :text, :xml
|
|
47
|
+
"nothing"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class ClassDoesntProvides < Responder
|
|
52
|
+
provides :xml
|
|
53
|
+
does_not_provide :html
|
|
54
|
+
|
|
55
|
+
def index
|
|
56
|
+
"nothing"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class DoesntProvide < Responder
|
|
61
|
+
def index
|
|
62
|
+
provides :xml
|
|
63
|
+
does_not_provide :html
|
|
64
|
+
"nothing"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Custom: <%= catch_content(:for_layout) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This should not be rendered
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<XML:Class provides='true' />
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Template
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
HTML: Default
|
data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Custom: <%= catch_content(:for_layout) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This should not render
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<XML:Local provides='true' />
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
HTML: Multi
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
JS: Multi
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
|
|
3
|
+
describe Merb::Controller, " displaying objects based on mime type" do
|
|
4
|
+
|
|
5
|
+
before do
|
|
6
|
+
Merb::Router.prepare do |r|
|
|
7
|
+
r.default_routes
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should default the mime-type to HTML (and raise since there's no to_html)" do
|
|
12
|
+
running { dispatch_to(Merb::Test::Fixtures::Controllers::DisplayHtmlDefault, :index) }.should raise_error(Merb::ControllerExceptions::NotAcceptable)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should use a template if specified" do
|
|
16
|
+
dispatch_to(Merb::Test::Fixtures::Controllers::DisplayWithTemplate, :index).body.should == "Custom: Template"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should use other mime-types if they are provided on the class level" do
|
|
20
|
+
controller = dispatch_to(Merb::Test::Fixtures::Controllers::DisplayClassProvides, :index, {}, :http_accept => "application/xml")
|
|
21
|
+
controller.body.should == "<XML:Model />"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should fail if none of the acceptable mime-types are available" do
|
|
25
|
+
calling { dispatch_to(Merb::Test::Fixtures::Controllers::DisplayClassProvides, :index, {}, :http_accept => "application/json") }.
|
|
26
|
+
should raise_error(Merb::ControllerExceptions::NotAcceptable)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should use mime-types that are provided at the local level" do
|
|
30
|
+
controller = dispatch_to(Merb::Test::Fixtures::Controllers::DisplayLocalProvides, :index, {}, :http_accept => "application/xml")
|
|
31
|
+
controller.body.should == "<XML:Model />"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|