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 @@
|
|
|
1
|
+
Fri, 29 Feb 2008 08:16:44 GMT ~ info ~ Logfile created
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7291
|
|
Binary file
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
body {
|
|
2
|
+
font-family: Arial, Verdana, sans-serif;
|
|
3
|
+
font-size: 12px;
|
|
4
|
+
background-color: #fff;
|
|
5
|
+
}
|
|
6
|
+
* {
|
|
7
|
+
margin: 0px;
|
|
8
|
+
padding: 0px;
|
|
9
|
+
text-decoration: none;
|
|
10
|
+
}
|
|
11
|
+
html {
|
|
12
|
+
height: 100%;
|
|
13
|
+
margin-bottom: 1px;
|
|
14
|
+
}
|
|
15
|
+
#container {
|
|
16
|
+
width: 80%;
|
|
17
|
+
text-align: left;
|
|
18
|
+
background-color: #fff;
|
|
19
|
+
margin-right: auto;
|
|
20
|
+
margin-left: auto;
|
|
21
|
+
}
|
|
22
|
+
#header-container {
|
|
23
|
+
width: 100%;
|
|
24
|
+
padding-top: 15px;
|
|
25
|
+
}
|
|
26
|
+
#header-container h1, #header-container h2 {
|
|
27
|
+
margin-left: 6px;
|
|
28
|
+
margin-bottom: 6px;
|
|
29
|
+
}
|
|
30
|
+
.spacer {
|
|
31
|
+
width: 100%;
|
|
32
|
+
height: 15px;
|
|
33
|
+
}
|
|
34
|
+
hr {
|
|
35
|
+
border: 0px;
|
|
36
|
+
color: #ccc;
|
|
37
|
+
background-color: #cdcdcd;
|
|
38
|
+
height: 1px;
|
|
39
|
+
width: 100%;
|
|
40
|
+
text-align: left;
|
|
41
|
+
}
|
|
42
|
+
h1 {
|
|
43
|
+
font-size: 28px;
|
|
44
|
+
color: #c55;
|
|
45
|
+
background-color: #fff;
|
|
46
|
+
font-family: Arial, Verdana, sans-serif;
|
|
47
|
+
font-weight: 300;
|
|
48
|
+
}
|
|
49
|
+
h2 {
|
|
50
|
+
font-size: 15px;
|
|
51
|
+
color: #999;
|
|
52
|
+
font-family: Arial, Verdana, sans-serif;
|
|
53
|
+
font-weight: 300;
|
|
54
|
+
background-color: #fff;
|
|
55
|
+
}
|
|
56
|
+
h3 {
|
|
57
|
+
color: #4d9b12;
|
|
58
|
+
font-size: 15px;
|
|
59
|
+
text-align: left;
|
|
60
|
+
font-weight: 300;
|
|
61
|
+
padding: 5px;
|
|
62
|
+
margin-top: 5px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
#left-container {
|
|
66
|
+
float: left;
|
|
67
|
+
width: 250px;
|
|
68
|
+
background-color: #FFFFFF;
|
|
69
|
+
color: black;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
#left-container h3 {
|
|
73
|
+
color: #c55;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#main-container {
|
|
77
|
+
margin: 5px 5px 5px 260px;
|
|
78
|
+
padding: 15px;
|
|
79
|
+
border-left: 1px solid silver;
|
|
80
|
+
min-height: 400px;
|
|
81
|
+
}
|
|
82
|
+
p {
|
|
83
|
+
color: #000;
|
|
84
|
+
background-color: #fff;
|
|
85
|
+
line-height: 20px;
|
|
86
|
+
padding: 5px;
|
|
87
|
+
}
|
|
88
|
+
a {
|
|
89
|
+
color: #4d9b12;
|
|
90
|
+
background-color: #fff;
|
|
91
|
+
text-decoration: none;
|
|
92
|
+
}
|
|
93
|
+
a:hover {
|
|
94
|
+
color: #4d9b12;
|
|
95
|
+
background-color: #fff;
|
|
96
|
+
text-decoration: underline;
|
|
97
|
+
}
|
|
98
|
+
#footer-container {
|
|
99
|
+
clear: both;
|
|
100
|
+
font-size: 12px;
|
|
101
|
+
font-family: Verdana, Arial, sans-serif;
|
|
102
|
+
}
|
|
103
|
+
.right {
|
|
104
|
+
float: right;
|
|
105
|
+
font-size: 100%;
|
|
106
|
+
margin-top: 5px;
|
|
107
|
+
color: #999;
|
|
108
|
+
background-color: #fff;
|
|
109
|
+
}
|
|
110
|
+
.left {
|
|
111
|
+
float: left;
|
|
112
|
+
font-size: 100%;
|
|
113
|
+
margin-top: 5px;
|
|
114
|
+
color: #999;
|
|
115
|
+
background-color: #fff;
|
|
116
|
+
}
|
|
117
|
+
#main-container ul {
|
|
118
|
+
margin-left: 3.0em;
|
|
119
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "spec_helper")
|
|
2
|
+
require 'rack/mock'
|
|
3
|
+
require 'stringio'
|
|
4
|
+
Merb.start :environment => 'test',
|
|
5
|
+
:merb_root => File.dirname(__FILE__) / 'fixture'
|
|
6
|
+
|
|
7
|
+
describe Merb::Dispatcher, "route params" do
|
|
8
|
+
before(:each) do
|
|
9
|
+
env = Rack::MockRequest.env_for("/foo/bar/54")
|
|
10
|
+
env['REQUEST_URI'] = "/foo/bar/54" # MockRequest doesn't set this
|
|
11
|
+
@controller = Merb::Dispatcher.handle(env)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should properly set the route params" do
|
|
15
|
+
@controller.request.route_params[:id].should == '54'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should properly add route_params to params" do
|
|
19
|
+
@controller.request.route_params.each { |k,v|
|
|
20
|
+
@controller.request.params[k].should == v
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
2
|
+
|
|
3
|
+
Merb.environment = 'test'
|
|
4
|
+
|
|
5
|
+
describe "Plugins", "default GENERATOR_SCOPE" do
|
|
6
|
+
it "should have :merb_default first" do
|
|
7
|
+
Merb.generator_scope.first.should == :merb_default
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should have :merb" do
|
|
11
|
+
Merb.generator_scope.should include(:merb)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should have :rspec last" do
|
|
15
|
+
Merb.generator_scope.last.should == :rspec
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "Plugins","use_orm" do
|
|
20
|
+
before(:each) do
|
|
21
|
+
Merb.generator_scope.replace [:merb_default, :merb, :rspec]
|
|
22
|
+
Kernel.stub!(:dependency)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "should raise an error if use_orm is called twice" do
|
|
26
|
+
use_orm(:activerecord)
|
|
27
|
+
lambda { use_orm(:datamapper) }.should raise_error
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "should not have :merb_default in GENERATOR_SCOPE with use_orm(:activerecord)" do
|
|
31
|
+
use_orm(:activerecord)
|
|
32
|
+
Merb.generator_scope.should_not include(:merb_default)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should have :activerecord in GENERATOR_SCOPE with use_orm(:activerecord)" do
|
|
36
|
+
use_orm(:activerecord)
|
|
37
|
+
Merb.generator_scope.should include(:activerecord)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "should have :activerecord first in GENERATOR_SCOPE with use_orm(:activerecord)" do
|
|
41
|
+
use_orm(:activerecord)
|
|
42
|
+
Merb.generator_scope.first.should == :activerecord
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "should call dependency :merb_activerecord with use_orm(:activerecord)" do
|
|
46
|
+
Kernel.should_receive(:dependency).with("merb_activerecord").once.
|
|
47
|
+
and_return(true)
|
|
48
|
+
use_orm(:activerecord)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "Plugins","use_test" do
|
|
54
|
+
before(:each) do
|
|
55
|
+
Merb.generator_scope.replace [:merb_default, :merb, :rspec]
|
|
56
|
+
Kernel.stub!(:dependency)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "should have :rspec in GENERATOR_SCOPE by default" do
|
|
60
|
+
Merb.generator_scope.should include(:rspec)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should not have :rspec in GENERATOR_SCOPE with use_test(:test_unit)" do
|
|
64
|
+
use_test(:test_unit)
|
|
65
|
+
Merb.generator_scope.should_not include(:rspec)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it "should have :test_unit in GENERATOR_SCOPE with use_test(:test_unit)" do
|
|
69
|
+
use_test(:test_unit)
|
|
70
|
+
Merb.generator_scope.should include(:test_unit)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should have :test_unit last in GENERATOR_SCOPE with use_test(:test_unit)" do
|
|
74
|
+
use_test(:test_unit)
|
|
75
|
+
Merb.generator_scope.last.should == :test_unit
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should raise an error if called with an unsupported test framework" do
|
|
79
|
+
lambda { use_test(:fiddlefaddle) }.should raise_error
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
2
|
+
require 'rack/mock'
|
|
3
|
+
|
|
4
|
+
Merb.start :environment => 'test'
|
|
5
|
+
|
|
6
|
+
describe Merb::Rack::Application do
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
@app = Merb::Rack::Application.new
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should return a MockResponse" do
|
|
13
|
+
res = Rack::MockRequest.new(@app).get("")
|
|
14
|
+
res.should be_kind_of Rack::MockResponse
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe Merb::Rack::Application, "with :path_prefix set" do
|
|
20
|
+
|
|
21
|
+
before do
|
|
22
|
+
Merb::Config[:path_prefix] = "/quux"
|
|
23
|
+
@app = Merb::Rack::Application.new
|
|
24
|
+
@nullobj = mock('controller', :null_object => true)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "should strip the path_prefix from a request's REQUEST_URI and PATH_INFO" do
|
|
28
|
+
Merb::Dispatcher.should_receive(:handle).with(
|
|
29
|
+
{'REQUEST_URI' => "/foo/bar", 'PATH_INFO' => "/foo/bar"}
|
|
30
|
+
).and_return @nullobj
|
|
31
|
+
|
|
32
|
+
@app.call('REQUEST_URI' => "/quux/foo/bar", 'PATH_INFO' => "/quux/foo/bar")
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "should not leave REQUEST_URI or PATH_INFO empty" do
|
|
36
|
+
Merb::Dispatcher.should_receive(:handle).with(
|
|
37
|
+
{'REQUEST_URI' => "/", 'PATH_INFO' => "/"}
|
|
38
|
+
).and_return @nullobj
|
|
39
|
+
|
|
40
|
+
@app.call('REQUEST_URI' => "/quux", 'PATH_INFO' => "/quux")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
==== Public API
|
|
2
|
+
This is the API that is available in your app itself. Anything not in the public API is subject to change.
|
|
3
|
+
|
|
4
|
+
==== Semipublic API
|
|
5
|
+
This is the API that is guaranteed to be available between components of Merb. If something in the semipublic
|
|
6
|
+
API changes, this will likely require changes in other parts of Merb. Additionally, items in the semipublic
|
|
7
|
+
API can be relied upon for introspection, for testing purposes.
|
|
8
|
+
|
|
9
|
+
For instance, AbstractController#_body should not be used in Merb apps themselves, as it may change, but
|
|
10
|
+
it may be used in other components of Merb and in the Merb tests themselves. Including it in the semipublic
|
|
11
|
+
API is designed to alert Merb's maintainers that changing it will have framework-wide repercussions.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
App: <%= catch_content(:for_layout) %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Controller: <%= catch_content :for_layout %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Controller: <%= catch_content :for_layout %>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new index
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
new show
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Multiple
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Alt Partial
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Woot.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Good.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
module Merb::Test::Fixtures
|
|
4
|
+
|
|
5
|
+
module Abstract
|
|
6
|
+
|
|
7
|
+
class SomeModel; end
|
|
8
|
+
|
|
9
|
+
class Testing < Merb::AbstractController
|
|
10
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class DisplayObject < Testing
|
|
14
|
+
def index
|
|
15
|
+
@obj = SomeModel.new
|
|
16
|
+
display @obj
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class DisplayObjectWithAction < Testing
|
|
21
|
+
def create
|
|
22
|
+
@obj = SomeModel.new
|
|
23
|
+
display @obj, :new
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class DisplayObjectWithPath < Testing
|
|
28
|
+
def index
|
|
29
|
+
@obj = SomeModel.new
|
|
30
|
+
display @obj, "test_display/foo.html"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class DisplayObjectWithMultipleRoots < DisplayObject
|
|
36
|
+
self._template_roots << [File.dirname(__FILE__) / "alt_views", :_template_location]
|
|
37
|
+
|
|
38
|
+
def show
|
|
39
|
+
@obj = SomeModel.new
|
|
40
|
+
display @obj, nil, :layout=>"alt"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def another
|
|
44
|
+
@obj = SomeModel.new
|
|
45
|
+
display @obj, "test_display/foo.html", :layout=>false
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def wonderful
|
|
49
|
+
true
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# ==== Methodology
|
|
2
|
+
# Each of the controllers tested here tests a discrete, single case. This
|
|
3
|
+
# is to ensure that each test is actually testing exactly what we want,
|
|
4
|
+
# and that other features (or lack thereof), are not causing tests to fail
|
|
5
|
+
# that would otherwise pass.
|
|
6
|
+
module Merb::Test::Fixtures
|
|
7
|
+
|
|
8
|
+
module Abstract
|
|
9
|
+
|
|
10
|
+
class Testing < Merb::AbstractController
|
|
11
|
+
self._template_root = File.dirname(__FILE__) / "views"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class TestBeforeFilter < Testing
|
|
15
|
+
before :foo
|
|
16
|
+
|
|
17
|
+
def index
|
|
18
|
+
"#{@x}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def foo
|
|
24
|
+
@x = "foo filter"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class TestAfterFilter < Testing
|
|
29
|
+
after :foo
|
|
30
|
+
|
|
31
|
+
def index
|
|
32
|
+
"index action"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def foo
|
|
38
|
+
@body = "foo filter"
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class TestSkipFilter < TestBeforeFilter
|
|
43
|
+
skip_before :foo
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class TestBeforeFilterOrder < TestBeforeFilter
|
|
47
|
+
before :bar
|
|
48
|
+
|
|
49
|
+
def index
|
|
50
|
+
"#{@x}"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def bar
|
|
56
|
+
@x = "bar filter"
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
class TestAfterFilterOrder < TestAfterFilter
|
|
61
|
+
after :bar
|
|
62
|
+
|
|
63
|
+
def index
|
|
64
|
+
"index action"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def bar
|
|
70
|
+
@body = "bar filter"
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
class TestProcFilter < Testing
|
|
75
|
+
before { @x = "proc filter1" }
|
|
76
|
+
before Proc.new { @y = "proc filter2" }
|
|
77
|
+
|
|
78
|
+
def index
|
|
79
|
+
"#{@x} #{@y}"
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
class TestExcludeFilter < Testing
|
|
84
|
+
before :foo, :exclude => :index
|
|
85
|
+
before :bar, :exclude => [:index]
|
|
86
|
+
|
|
87
|
+
def index
|
|
88
|
+
"#{@x} #{@y}"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def show
|
|
92
|
+
"#{@x} #{@y}"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
private
|
|
96
|
+
|
|
97
|
+
def foo
|
|
98
|
+
@x = "foo filter"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def bar
|
|
102
|
+
@y = "bar filter"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
class TestOnlyFilter < Testing
|
|
107
|
+
before :foo, :only => :index
|
|
108
|
+
before :bar, :only => [:index]
|
|
109
|
+
|
|
110
|
+
def index
|
|
111
|
+
"#{@x} #{@y}"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def show
|
|
115
|
+
"#{@x} #{@y}"
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
private
|
|
119
|
+
|
|
120
|
+
def foo
|
|
121
|
+
@x = "foo filter"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def bar
|
|
125
|
+
@y = "bar filter"
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
class TestConditionalFilterWithMethod < Testing
|
|
130
|
+
before :foo, :if => :bar
|
|
131
|
+
|
|
132
|
+
attr_accessor :bar
|
|
133
|
+
|
|
134
|
+
def index
|
|
135
|
+
"#{@x}"
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
private
|
|
139
|
+
def foo
|
|
140
|
+
@x = "foo filter"
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
class TestConditionalFilterWithProc < Testing
|
|
145
|
+
after :foo, :unless => lambda { |x| x.bar == "bar" }
|
|
146
|
+
|
|
147
|
+
attr_accessor :bar
|
|
148
|
+
|
|
149
|
+
def index
|
|
150
|
+
"index action"
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
private
|
|
154
|
+
def foo
|
|
155
|
+
@body = "foo filter"
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
class TestConditionalFilterWithNoProcOrSymbol < Testing
|
|
160
|
+
after :foo, :unless => true
|
|
161
|
+
|
|
162
|
+
def index
|
|
163
|
+
"index action"
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
end
|