thorero 0.9.4.4 → 0.9.4.5

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.
Files changed (298) hide show
  1. data/LICENSE +1 -1
  2. data/README +21 -0
  3. data/Rakefile +275 -108
  4. data/TODO +0 -0
  5. data/bin/merb +12 -0
  6. data/bin/merb-specs +5 -0
  7. data/docs/bootloading.dox +58 -0
  8. data/docs/documentation_standards +40 -0
  9. data/docs/merb-core-call-stack-diagram.mmap +0 -0
  10. data/docs/merb-core-call-stack-diagram.pdf +0 -0
  11. data/docs/merb-core-call-stack-diagram.png +0 -0
  12. data/docs/new_render_api +51 -0
  13. data/lib/merb-core.rb +603 -0
  14. data/lib/merb-core/autoload.rb +32 -0
  15. data/lib/merb-core/bootloader.rb +708 -0
  16. data/lib/merb-core/config.rb +303 -0
  17. data/lib/merb-core/constants.rb +43 -0
  18. data/lib/merb-core/controller/abstract_controller.rb +578 -0
  19. data/lib/merb-core/controller/exceptions.rb +302 -0
  20. data/lib/merb-core/controller/merb_controller.rb +256 -0
  21. data/lib/merb-core/controller/mime.rb +106 -0
  22. data/lib/merb-core/controller/mixins/authentication.rb +87 -0
  23. data/lib/merb-core/controller/mixins/controller.rb +290 -0
  24. data/lib/merb-core/controller/mixins/render.rb +481 -0
  25. data/lib/merb-core/controller/mixins/responder.rb +472 -0
  26. data/lib/merb-core/controller/template.rb +254 -0
  27. data/lib/merb-core/core_ext.rb +8 -0
  28. data/lib/merb-core/core_ext/kernel.rb +319 -0
  29. data/lib/merb-core/dispatch/cookies.rb +91 -0
  30. data/lib/merb-core/dispatch/dispatcher.rb +278 -0
  31. data/lib/merb-core/dispatch/exceptions.html.erb +303 -0
  32. data/lib/merb-core/dispatch/request.rb +603 -0
  33. data/lib/merb-core/dispatch/router.rb +179 -0
  34. data/lib/merb-core/dispatch/router/behavior.rb +867 -0
  35. data/lib/merb-core/dispatch/router/cached_proc.rb +52 -0
  36. data/lib/merb-core/dispatch/router/route.rb +321 -0
  37. data/lib/merb-core/dispatch/session.rb +78 -0
  38. data/lib/merb-core/dispatch/session/cookie.rb +168 -0
  39. data/lib/merb-core/dispatch/session/memcached.rb +184 -0
  40. data/lib/merb-core/dispatch/session/memory.rb +241 -0
  41. data/lib/merb-core/dispatch/worker.rb +28 -0
  42. data/lib/merb-core/gem_ext/erubis.rb +77 -0
  43. data/lib/{extlib → merb-core}/logger.rb +2 -2
  44. data/lib/merb-core/plugins.rb +59 -0
  45. data/lib/merb-core/rack.rb +21 -0
  46. data/lib/merb-core/rack/adapter.rb +44 -0
  47. data/lib/merb-core/rack/adapter/ebb.rb +25 -0
  48. data/lib/merb-core/rack/adapter/evented_mongrel.rb +26 -0
  49. data/lib/merb-core/rack/adapter/fcgi.rb +17 -0
  50. data/lib/merb-core/rack/adapter/irb.rb +118 -0
  51. data/lib/merb-core/rack/adapter/mongrel.rb +26 -0
  52. data/lib/merb-core/rack/adapter/runner.rb +28 -0
  53. data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +26 -0
  54. data/lib/merb-core/rack/adapter/thin.rb +39 -0
  55. data/lib/merb-core/rack/adapter/thin_turbo.rb +24 -0
  56. data/lib/merb-core/rack/adapter/webrick.rb +36 -0
  57. data/lib/merb-core/rack/application.rb +18 -0
  58. data/lib/merb-core/rack/handler/mongrel.rb +97 -0
  59. data/lib/merb-core/rack/middleware.rb +26 -0
  60. data/lib/merb-core/rack/middleware/path_prefix.rb +31 -0
  61. data/lib/merb-core/rack/middleware/profiler.rb +19 -0
  62. data/lib/merb-core/rack/middleware/static.rb +45 -0
  63. data/lib/merb-core/server.rb +252 -0
  64. data/lib/merb-core/tasks/audit.rake +68 -0
  65. data/lib/merb-core/tasks/merb.rb +1 -0
  66. data/lib/merb-core/tasks/merb_rake_helper.rb +12 -0
  67. data/lib/merb-core/test.rb +11 -0
  68. data/lib/merb-core/test/helpers.rb +9 -0
  69. data/lib/merb-core/test/helpers/controller_helper.rb +8 -0
  70. data/lib/merb-core/test/helpers/multipart_request_helper.rb +175 -0
  71. data/lib/merb-core/test/helpers/request_helper.rb +344 -0
  72. data/lib/merb-core/test/helpers/route_helper.rb +33 -0
  73. data/lib/merb-core/test/helpers/view_helper.rb +121 -0
  74. data/lib/merb-core/test/matchers.rb +9 -0
  75. data/lib/merb-core/test/matchers/controller_matchers.rb +319 -0
  76. data/lib/merb-core/test/matchers/route_matchers.rb +136 -0
  77. data/lib/merb-core/test/matchers/view_matchers.rb +335 -0
  78. data/lib/merb-core/test/run_specs.rb +47 -0
  79. data/lib/merb-core/test/tasks/spectasks.rb +68 -0
  80. data/lib/merb-core/test/test_ext/hpricot.rb +32 -0
  81. data/lib/merb-core/test/test_ext/object.rb +14 -0
  82. data/lib/merb-core/test/test_ext/string.rb +14 -0
  83. data/lib/merb-core/vendor/facets.rb +2 -0
  84. data/lib/merb-core/vendor/facets/dictionary.rb +433 -0
  85. data/lib/merb-core/vendor/facets/inflect.rb +345 -0
  86. data/lib/merb-core/version.rb +11 -0
  87. data/spec/private/config/adapter_spec.rb +32 -0
  88. data/spec/private/config/config_spec.rb +202 -0
  89. data/spec/private/config/environment_spec.rb +13 -0
  90. data/spec/private/config/spec_helper.rb +1 -0
  91. data/spec/private/core_ext/kernel_spec.rb +169 -0
  92. data/spec/private/dispatch/bootloader_spec.rb +24 -0
  93. data/spec/private/dispatch/cookies_spec.rb +107 -0
  94. data/spec/private/dispatch/dispatch_spec.rb +35 -0
  95. data/spec/private/dispatch/fixture/app/controllers/application.rb +4 -0
  96. data/spec/private/dispatch/fixture/app/controllers/exceptions.rb +27 -0
  97. data/spec/private/dispatch/fixture/app/controllers/foo.rb +21 -0
  98. data/spec/private/dispatch/fixture/app/helpers/global_helpers.rb +8 -0
  99. data/spec/private/dispatch/fixture/app/views/exeptions/client_error.html.erb +37 -0
  100. data/spec/private/dispatch/fixture/app/views/exeptions/internal_server_error.html.erb +216 -0
  101. data/spec/private/dispatch/fixture/app/views/exeptions/not_acceptable.html.erb +38 -0
  102. data/spec/private/dispatch/fixture/app/views/exeptions/not_found.html.erb +40 -0
  103. data/spec/private/dispatch/fixture/app/views/foo/bar.html.erb +0 -0
  104. data/spec/private/dispatch/fixture/app/views/layout/application.html.erb +11 -0
  105. data/spec/private/dispatch/fixture/config/black_hole.rb +12 -0
  106. data/spec/private/dispatch/fixture/config/environments/development.rb +6 -0
  107. data/spec/private/dispatch/fixture/config/environments/production.rb +5 -0
  108. data/spec/private/dispatch/fixture/config/environments/test.rb +6 -0
  109. data/spec/private/dispatch/fixture/config/init.rb +45 -0
  110. data/spec/private/dispatch/fixture/config/rack.rb +11 -0
  111. data/spec/private/dispatch/fixture/config/router.rb +35 -0
  112. data/spec/private/dispatch/fixture/log/merb_test.log +1874 -0
  113. data/spec/private/dispatch/fixture/public/images/merb.jpg +0 -0
  114. data/spec/private/dispatch/fixture/public/merb.fcgi +4 -0
  115. data/spec/private/dispatch/fixture/public/stylesheets/master.css +119 -0
  116. data/spec/private/dispatch/route_params_spec.rb +24 -0
  117. data/spec/private/dispatch/session_mixin_spec.rb +47 -0
  118. data/spec/private/dispatch/spec_helper.rb +1 -0
  119. data/spec/private/plugins/plugin_spec.rb +166 -0
  120. data/spec/private/rack/application_spec.rb +49 -0
  121. data/spec/private/router/behavior_spec.rb +60 -0
  122. data/spec/private/router/fixture/log/merb_test.log +139 -0
  123. data/spec/private/router/route_spec.rb +414 -0
  124. data/spec/private/router/router_spec.rb +175 -0
  125. data/spec/private/vendor/facets/plural_spec.rb +564 -0
  126. data/spec/private/vendor/facets/singular_spec.rb +489 -0
  127. data/spec/public/DEFINITIONS +11 -0
  128. data/spec/public/abstract_controller/controllers/alt_views/layout/application.erb +1 -0
  129. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_string_controller_layout.erb +1 -0
  130. data/spec/public/abstract_controller/controllers/alt_views/layout/merb/test/fixtures/abstract/render_template_controller_layout.erb +1 -0
  131. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/index.erb +1 -0
  132. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/display_object_with_multiple_roots/show.erb +1 -0
  133. data/spec/public/abstract_controller/controllers/alt_views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  134. data/spec/public/abstract_controller/controllers/alt_views/partial/basic_partial_with_multiple_roots/_partial.erb +1 -0
  135. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_and_custom_location/index.erb +1 -0
  136. data/spec/public/abstract_controller/controllers/alt_views/render_template_multiple_roots_inherited/index.erb +1 -0
  137. data/spec/public/abstract_controller/controllers/cousins.rb +41 -0
  138. data/spec/public/abstract_controller/controllers/display.rb +54 -0
  139. data/spec/public/abstract_controller/controllers/filters.rb +193 -0
  140. data/spec/public/abstract_controller/controllers/helpers.rb +41 -0
  141. data/spec/public/abstract_controller/controllers/partial.rb +121 -0
  142. data/spec/public/abstract_controller/controllers/render.rb +113 -0
  143. data/spec/public/abstract_controller/controllers/views/helpers/capture/index.erb +1 -0
  144. data/spec/public/abstract_controller/controllers/views/helpers/capture_eq/index.erb +1 -0
  145. data/spec/public/abstract_controller/controllers/views/helpers/capture_with_args/index.erb +1 -0
  146. data/spec/public/abstract_controller/controllers/views/helpers/concat/index.erb +1 -0
  147. data/spec/public/abstract_controller/controllers/views/layout/alt.erb +1 -0
  148. data/spec/public/abstract_controller/controllers/views/layout/custom.erb +1 -0
  149. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object/index.erb +1 -0
  150. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/display_object_with_action/new.erb +1 -0
  151. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template/index.erb +1 -0
  152. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_app_layout/index.erb +0 -0
  153. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_custom_layout/index.erb +1 -0
  154. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/index.erb +1 -0
  155. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_template_multiple_roots/show.erb +1 -0
  156. data/spec/public/abstract_controller/controllers/views/merb/test/fixtures/abstract/render_two_throw_contents/index.erb +1 -0
  157. data/spec/public/abstract_controller/controllers/views/partial/another_directory/_partial.erb +1 -0
  158. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/_partial.erb +1 -0
  159. data/spec/public/abstract_controller/controllers/views/partial/basic_partial/index.erb +1 -0
  160. data/spec/public/abstract_controller/controllers/views/partial/basic_partial_with_multiple_roots/index.erb +1 -0
  161. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_first.erb +1 -0
  162. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/_second.erb +1 -0
  163. data/spec/public/abstract_controller/controllers/views/partial/nested_partial/index.erb +1 -0
  164. data/spec/public/abstract_controller/controllers/views/partial/partial_in_another_directory/index.erb +1 -0
  165. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/_collection.erb +1 -0
  166. data/spec/public/abstract_controller/controllers/views/partial/partial_with_both/index.erb +1 -0
  167. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/_collection.erb +1 -0
  168. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections/index.erb +1 -0
  169. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/_collection.erb +1 -0
  170. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_as/index.erb +1 -0
  171. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/_collection.erb +1 -0
  172. data/spec/public/abstract_controller/controllers/views/partial/partial_with_collections_and_counter/index.erb +1 -0
  173. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/_variables.erb +1 -0
  174. data/spec/public/abstract_controller/controllers/views/partial/partial_with_locals/index.erb +1 -0
  175. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/_both.erb +1 -0
  176. data/spec/public/abstract_controller/controllers/views/partial/partial_with_with_and_locals/index.erb +1 -0
  177. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/_partial.erb +1 -0
  178. data/spec/public/abstract_controller/controllers/views/partial/with_absolute_partial/index.erb +1 -0
  179. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/_with_partial.erb +1 -0
  180. data/spec/public/abstract_controller/controllers/views/partial/with_as_partial/index.erb +1 -0
  181. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/_with_partial.erb +1 -0
  182. data/spec/public/abstract_controller/controllers/views/partial/with_nil_partial/index.erb +1 -0
  183. data/spec/public/abstract_controller/controllers/views/partial/with_partial/_with_partial.erb +1 -0
  184. data/spec/public/abstract_controller/controllers/views/partial/with_partial/index.erb +1 -0
  185. data/spec/public/abstract_controller/controllers/views/test_display/foo.html.erb +1 -0
  186. data/spec/public/abstract_controller/controllers/views/test_render/foo.html.erb +0 -0
  187. data/spec/public/abstract_controller/controllers/views/wonderful/index.erb +1 -0
  188. data/spec/public/abstract_controller/display_spec.rb +33 -0
  189. data/spec/public/abstract_controller/filter_spec.rb +106 -0
  190. data/spec/public/abstract_controller/helper_spec.rb +21 -0
  191. data/spec/public/abstract_controller/partial_spec.rb +61 -0
  192. data/spec/public/abstract_controller/render_spec.rb +90 -0
  193. data/spec/public/abstract_controller/spec_helper.rb +31 -0
  194. data/spec/public/boot_loader/boot_loader_spec.rb +33 -0
  195. data/spec/public/boot_loader/spec_helper.rb +1 -0
  196. data/spec/public/controller/authentication_spec.rb +103 -0
  197. data/spec/public/controller/base_spec.rb +36 -0
  198. data/spec/public/controller/controllers/authentication.rb +45 -0
  199. data/spec/public/controller/controllers/base.rb +36 -0
  200. data/spec/public/controller/controllers/display.rb +118 -0
  201. data/spec/public/controller/controllers/redirect.rb +30 -0
  202. data/spec/public/controller/controllers/responder.rb +93 -0
  203. data/spec/public/controller/controllers/url.rb +7 -0
  204. data/spec/public/controller/controllers/views/layout/custom.html.erb +1 -0
  205. data/spec/public/controller/controllers/views/layout/custom_arg.html.erb +1 -0
  206. data/spec/public/controller/controllers/views/layout/custom_arg.json.erb +1 -0
  207. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.html.erb +1 -0
  208. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_and_local_provides/index.xml.erb +1 -0
  209. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.html.erb +1 -0
  210. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/class_provides/index.xml.erb +1 -0
  211. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/index.html.erb +1 -0
  212. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template/no_layout.html.erb +1 -0
  213. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/display_with_template_argument/index.html.erb +1 -0
  214. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/html_default/index.html.erb +1 -0
  215. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/layout/custom.html.erb +1 -0
  216. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.html.erb +1 -0
  217. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/local_provides/index.xml.erb +1 -0
  218. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.html.erb +1 -0
  219. data/spec/public/controller/controllers/views/merb/test/fixtures/controllers/multi_provides/index.js.erb +1 -0
  220. data/spec/public/controller/display_spec.rb +84 -0
  221. data/spec/public/controller/redirect_spec.rb +27 -0
  222. data/spec/public/controller/responder_spec.rb +163 -0
  223. data/spec/public/controller/spec_helper.rb +11 -0
  224. data/spec/public/controller/url_spec.rb +180 -0
  225. data/spec/public/core/merb_core_spec.rb +45 -0
  226. data/spec/public/core_ext/class_spec.rb +91 -0
  227. data/spec/public/core_ext/fixtures/core_ext_dependency.rb +2 -0
  228. data/spec/public/core_ext/kernel_spec.rb +9 -0
  229. data/spec/public/core_ext/spec_helper.rb +1 -0
  230. data/spec/public/directory_structure/directory/app/controllers/application.rb +3 -0
  231. data/spec/public/directory_structure/directory/app/controllers/base.rb +13 -0
  232. data/spec/public/directory_structure/directory/app/controllers/custom.rb +19 -0
  233. data/spec/public/directory_structure/directory/app/views/base/template.html.erb +1 -0
  234. data/spec/public/directory_structure/directory/app/views/wonderful/template.erb +1 -0
  235. data/spec/public/directory_structure/directory/config/router.rb +3 -0
  236. data/spec/public/directory_structure/directory/log/merb_test.log +562 -0
  237. data/spec/public/directory_structure/directory_spec.rb +44 -0
  238. data/spec/public/logger/logger_spec.rb +181 -0
  239. data/spec/public/logger/spec_helper.rb +1 -0
  240. data/spec/public/reloading/directory/app/controllers/application.rb +3 -0
  241. data/spec/public/reloading/directory/app/controllers/reload.rb +6 -0
  242. data/spec/public/reloading/directory/config/init.rb +2 -0
  243. data/spec/public/reloading/directory/log/merb_test.log +138 -0
  244. data/spec/public/reloading/reload_spec.rb +103 -0
  245. data/spec/public/request/multipart_spec.rb +41 -0
  246. data/spec/public/request/request_spec.rb +228 -0
  247. data/spec/public/router/default_spec.rb +21 -0
  248. data/spec/public/router/deferred_spec.rb +22 -0
  249. data/spec/public/router/fixation_spec.rb +27 -0
  250. data/spec/public/router/fixture/log/merb_test.log +1556 -0
  251. data/spec/public/router/namespace_spec.rb +113 -0
  252. data/spec/public/router/nested_matches_spec.rb +97 -0
  253. data/spec/public/router/nested_resources_spec.rb +41 -0
  254. data/spec/public/router/resource_spec.rb +37 -0
  255. data/spec/public/router/resources_spec.rb +82 -0
  256. data/spec/public/router/spec_helper.rb +90 -0
  257. data/spec/public/router/special_spec.rb +61 -0
  258. data/spec/public/router/string_spec.rb +61 -0
  259. data/spec/public/template/template_spec.rb +104 -0
  260. data/spec/public/template/templates/error.html.erb +2 -0
  261. data/spec/public/template/templates/template.html.erb +1 -0
  262. data/spec/public/template/templates/template.html.myt +1 -0
  263. data/spec/public/test/controller_matchers_spec.rb +402 -0
  264. data/spec/public/test/controllers/controller_assertion_mock.rb +7 -0
  265. data/spec/public/test/controllers/dispatch_controller.rb +11 -0
  266. data/spec/public/test/controllers/spec_helper_controller.rb +38 -0
  267. data/spec/public/test/multipart_request_helper_spec.rb +159 -0
  268. data/spec/public/test/multipart_upload_text_file.txt +1 -0
  269. data/spec/public/test/request_helper_spec.rb +221 -0
  270. data/spec/public/test/route_helper_spec.rb +71 -0
  271. data/spec/public/test/route_matchers_spec.rb +162 -0
  272. data/spec/public/test/view_helper_spec.rb +96 -0
  273. data/spec/public/test/view_matchers_spec.rb +183 -0
  274. data/spec/spec_helper.rb +68 -0
  275. metadata +493 -41
  276. data/README.txt +0 -3
  277. data/lib/extlib.rb +0 -32
  278. data/lib/extlib/assertions.rb +0 -8
  279. data/lib/extlib/blank.rb +0 -42
  280. data/lib/extlib/class.rb +0 -175
  281. data/lib/extlib/hash.rb +0 -410
  282. data/lib/extlib/hook.rb +0 -366
  283. data/lib/extlib/inflection.rb +0 -141
  284. data/lib/extlib/lazy_array.rb +0 -106
  285. data/lib/extlib/mash.rb +0 -143
  286. data/lib/extlib/module.rb +0 -37
  287. data/lib/extlib/object.rb +0 -165
  288. data/lib/extlib/object_space.rb +0 -13
  289. data/lib/extlib/pathname.rb +0 -5
  290. data/lib/extlib/pooling.rb +0 -233
  291. data/lib/extlib/rubygems.rb +0 -38
  292. data/lib/extlib/simple_set.rb +0 -39
  293. data/lib/extlib/string.rb +0 -132
  294. data/lib/extlib/struct.rb +0 -8
  295. data/lib/extlib/tasks/release.rb +0 -9
  296. data/lib/extlib/time.rb +0 -12
  297. data/lib/extlib/version.rb +0 -3
  298. data/lib/extlib/virtual_file.rb +0 -10
@@ -0,0 +1,139 @@
1
+ Thu, 15 May 2008 23:38:57 GMT ~ info ~ Logfile created
2
+ ~ Not Using Sessions
3
+ ~ Not Using Sessions
4
+ ~ Not Using Sessions
5
+ ~ Not Using Sessions
6
+ ~ Not Using Sessions
7
+ ~ Not Using Sessions
8
+ ~ Not Using Sessions
9
+ ~ Not Using Sessions
10
+ ~ Not Using Sessions
11
+ ~ Not Using Sessions
12
+ ~ Not Using Sessions
13
+ ~ Not Using Sessions
14
+ ~ Not Using Sessions
15
+ ~ Not Using Sessions
16
+ ~ Not Using Sessions
17
+ ~ Not Using Sessions
18
+ ~ Not Using Sessions
19
+ ~ Not Using Sessions
20
+ ~ Not Using Sessions
21
+ ~ Not Using Sessions
22
+ ~ Not Using Sessions
23
+ ~ Not Using Sessions
24
+ ~ Not Using Sessions
25
+ ~ Not Using Sessions
26
+ ~ Not Using Sessions
27
+ ~ Not Using Sessions
28
+ ~ Not Using Sessions
29
+ ~ Not Using Sessions
30
+ ~ Not Using Sessions
31
+ ~ Not Using Sessions
32
+ ~ Not Using Sessions
33
+ ~ Not Using Sessions
34
+ ~ Not Using Sessions
35
+ ~ Not Using Sessions
36
+ ~ Not Using Sessions
37
+ ~ Not Using Sessions
38
+ ~ Not Using Sessions
39
+ ~ Not Using Sessions
40
+ ~ Not Using Sessions
41
+ ~ Not Using Sessions
42
+ ~ Not Using Sessions
43
+ ~ Not Using Sessions
44
+ ~ Not Using Sessions
45
+ ~ Not Using Sessions
46
+ ~ Not Using Sessions
47
+ ~ Not Using Sessions
48
+ ~ Not Using Sessions
49
+ ~ Not Using Sessions
50
+ ~ Not Using Sessions
51
+ ~ Not Using Sessions
52
+ ~ Not Using Sessions
53
+ ~ Not Using Sessions
54
+ ~ Not Using Sessions
55
+ ~ Not Using Sessions
56
+ ~ Not Using Sessions
57
+ ~ Not Using Sessions
58
+ ~ Not Using Sessions
59
+ ~ Not Using Sessions
60
+ ~ Not Using Sessions
61
+ ~ Not Using Sessions
62
+ ~ Not Using Sessions
63
+ ~ Not Using Sessions
64
+ ~ Not Using Sessions
65
+ ~ Not Using Sessions
66
+ ~ Not Using Sessions
67
+ ~ Not Using Sessions
68
+ ~ Not Using Sessions
69
+ ~ Not Using Sessions
70
+ ~ Not Using Sessions
71
+ ~ Not Using Sessions
72
+ ~ Not Using Sessions
73
+ ~ Not Using Sessions
74
+ ~ Not Using Sessions
75
+ ~ Not Using Sessions
76
+ ~ Not Using Sessions
77
+ ~ Not Using Sessions
78
+ ~ Not Using Sessions
79
+ ~ Not Using Sessions
80
+ ~ Not Using Sessions
81
+ ~ Not Using Sessions
82
+ ~ Not Using Sessions
83
+ ~ Not Using Sessions
84
+ ~ Not Using Sessions
85
+ ~ Not Using Sessions
86
+ ~ Not Using Sessions
87
+ ~ Not Using Sessions
88
+ ~ Not Using Sessions
89
+ ~ Not Using Sessions
90
+ ~ Not Using Sessions
91
+ ~ Not Using Sessions
92
+ ~ Not Using Sessions
93
+ ~ Not Using Sessions
94
+ ~ Not Using Sessions
95
+ ~ Not Using Sessions
96
+ ~ Not Using Sessions
97
+ ~ Not Using Sessions
98
+ ~ Not Using Sessions
99
+ ~ Not Using Sessions
100
+ ~ Not Using Sessions
101
+ ~ Not Using Sessions
102
+ ~ Not Using Sessions
103
+ ~ Not Using Sessions
104
+ ~ Not Using Sessions
105
+ ~ Not Using Sessions
106
+ ~ Not Using Sessions
107
+ ~ Not Using Sessions
108
+ ~ Not Using Sessions
109
+ ~ Not Using Sessions
110
+ ~ Not Using Sessions
111
+ ~ Not Using Sessions
112
+ ~ Not Using Sessions
113
+ ~ Not Using Sessions
114
+ ~ Not Using Sessions
115
+ ~ Not Using Sessions
116
+ ~ Not Using Sessions
117
+ ~ Not Using Sessions
118
+ ~ Not Using Sessions
119
+ ~ Not Using Sessions
120
+ ~ Not Using Sessions
121
+ ~ Not Using Sessions
122
+ ~ Not Using Sessions
123
+ ~ Not Using Sessions
124
+ ~ Not Using Sessions
125
+ ~ Not Using Sessions
126
+ ~ Not Using Sessions
127
+ ~ Not Using Sessions
128
+ ~ Not Using Sessions
129
+ ~ Not Using Sessions
130
+ ~ Not Using Sessions
131
+ ~ Not Using Sessions
132
+ ~ Not Using Sessions
133
+ ~ Not Using Sessions
134
+ ~ Not Using Sessions
135
+ ~ Not Using Sessions
136
+ ~ Not Using Sessions
137
+ ~ Not Using Sessions
138
+ ~ Not Using Sessions
139
+ ~ Not Using Sessions
@@ -0,0 +1,414 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Merb::Router::Route, "initially" do
4
+ predicate_matchers[:allow_fixation] = :allow_fixation?
5
+
6
+ before :each do
7
+ Merb::Router.prepare do |r|
8
+ r.resources :continents do |c|
9
+ c.resources :countries
10
+ end
11
+ end
12
+
13
+ @r1 = Merb::Router.routes.first
14
+ @r5 = Merb::Router.routes[4]
15
+ end
16
+
17
+ after :each do
18
+ Merb::Router.reset!
19
+ end
20
+
21
+ it "has reader for conditions" do
22
+ @r1.conditions
23
+ end
24
+
25
+ it "has reader for params" do
26
+ @r1.params
27
+ end
28
+
29
+ it "has reader for behavior" do
30
+ @r5.behavior
31
+ end
32
+
33
+ it "has reader for conditional block" do
34
+ @r5.conditional_block
35
+ end
36
+
37
+ it "has reader for segments" do
38
+ @r5.segments
39
+ end
40
+
41
+ it "has reader for index" do
42
+ @r1.index.should == 0
43
+ end
44
+
45
+ it "has reader for symbol" do
46
+ @r1.symbol
47
+ end
48
+
49
+ it "does not allow fixation" do
50
+ @r1.should_not allow_fixation
51
+ end
52
+ end
53
+
54
+ describe Merb::Router::Route, "#fixatable" do
55
+ predicate_matchers[:allow_fixation] = :allow_fixation?
56
+
57
+ before :each do
58
+ Merb::Router.prepare do |r|
59
+ r.resources :continents do |c|
60
+ c.resources :countries
61
+ end
62
+ end
63
+
64
+ @route = Merb::Router.routes[4]
65
+ end
66
+
67
+ after :each do
68
+ Merb::Router.reset!
69
+ end
70
+
71
+ it "allows fixation when called with true" do
72
+ @route.fixatable(true)
73
+
74
+ @route.should allow_fixation
75
+ end
76
+
77
+ it "allows fixation when called with true" do
78
+ @route.fixatable(true)
79
+ @route.should allow_fixation
80
+
81
+ @route.fixatable(false)
82
+ @route.should_not allow_fixation
83
+ end
84
+
85
+ it "allows fixation when called with default argument" do
86
+ @route.fixatable
87
+
88
+ @route.should allow_fixation
89
+ end
90
+ end
91
+
92
+
93
+
94
+ describe Merb::Router::Route, "#to_s" do
95
+ before :each do
96
+ Merb::Router.prepare do |r|
97
+ r.resources :continents do |c|
98
+ c.resources :countries
99
+ end
100
+ end
101
+
102
+ @route = Merb::Router.routes[4]
103
+ end
104
+
105
+ after :each do
106
+ Merb::Router.reset!
107
+ end
108
+
109
+ it "concatenates route segments" do
110
+ @route.stub!(:segments).and_return(["continents/", "new"])
111
+ @route.to_s.should == "continents/new"
112
+ end
113
+
114
+ it "prefixes symbol segments with colon" do
115
+ @route.stub!(:segments).and_return(["continents/", :id])
116
+ @route.to_s.should == "continents/:id"
117
+ end
118
+ end
119
+
120
+
121
+
122
+ describe Merb::Router::Route, "#register" do
123
+ before :each do
124
+ Merb::Router.prepare do |r|
125
+ r.resources :continents do |c|
126
+ c.resources :countries
127
+ end
128
+ end
129
+
130
+ @route = Merb::Router.routes[4]
131
+ end
132
+
133
+ after :each do
134
+ Merb::Router.reset!
135
+ end
136
+
137
+ it "adds route to Merb routes set" do
138
+ Merb::Router.routes = []
139
+ @route.register
140
+
141
+ Merb::Router.routes.should include(@route)
142
+ end
143
+
144
+ it "sets index on route" do
145
+ Merb::Router.routes = []
146
+ @route.register
147
+
148
+ @route.index.should == 0
149
+ end
150
+
151
+ it "returns route itself" do
152
+ Merb::Router.routes = []
153
+ @route.register.should == @route
154
+ end
155
+ end
156
+
157
+
158
+
159
+ describe Merb::Router::Route, "#symbol_segments" do
160
+ before :each do
161
+ Merb::Router.prepare do |r|
162
+ r.resources :continents do |c|
163
+ c.resources :countries
164
+ end
165
+ end
166
+
167
+ @route = Merb::Router.routes[4]
168
+ end
169
+
170
+ after :each do
171
+ Merb::Router.reset!
172
+ end
173
+
174
+ it "cherrypicks segments that are Symbols" do
175
+ @route.stub!(:segments).and_return(["prefix/", :controller, "ping"])
176
+ @route.symbol_segments.should == [:controller]
177
+ end
178
+ end
179
+
180
+
181
+
182
+ describe Merb::Router::Route, "#segments_from_path" do
183
+ before :each do
184
+ Merb::Router.prepare do |r|
185
+ r.resources :continents do |c|
186
+ c.resources :countries
187
+ end
188
+ end
189
+
190
+ @route = Merb::Router.routes[4]
191
+ end
192
+
193
+ after :each do
194
+ Merb::Router.reset!
195
+ end
196
+
197
+ it "turns path into string and symbol segments" do
198
+ @route.segments_from_path("prefix/:controller/:action/:id").should == ["prefix/", :controller, "/", :action, "/", :id]
199
+ end
200
+
201
+ it "handles slash edge case just fine" do
202
+ @route.segments_from_path("/").should == ["/"]
203
+ end
204
+ end
205
+
206
+
207
+
208
+ describe Merb::Router::Route, "#name" do
209
+ before :each do
210
+ Merb::Router.prepare do |r|
211
+ r.match("/").to(:controller => "home")
212
+ end
213
+
214
+ @route = Merb::Router.routes.first
215
+ end
216
+
217
+ after :each do
218
+ Merb::Router.reset!
219
+ end
220
+
221
+ it "places the route into named routes collection" do
222
+ @route.name(:home)
223
+
224
+ Merb::Router.named_routes[:home].should == @route
225
+ end
226
+
227
+ it "only accepts Symbols" do
228
+ lambda { @route.name("home") }.should raise_error(ArgumentError)
229
+ end
230
+
231
+ end
232
+
233
+
234
+ describe Merb::Router::Route, "#regexp?" do
235
+ before :each do
236
+ Merb::Router.prepare do |r|
237
+ r.match(/api\/(.*)/).to(:controller => "api", :token => "[1]").name(:regexpy)
238
+
239
+ r.match("/what-is-regexps-dude").to(:controller => "plain_strings").name(:non_regexpy)
240
+ end
241
+
242
+ @regexp_route = Merb::Router.named_routes[:regexpy]
243
+ @non_regexp_route = Merb::Router.named_routes[:non_regexpy]
244
+ end
245
+
246
+ it "is true for routes that use regular expressions" do
247
+ @regexp_route.should be_regexp
248
+ end
249
+
250
+ it "is false for routes that do not explicitly use regular expressions" do
251
+ @non_regexp_route.should_not be_regexp
252
+ end
253
+
254
+ it "is true if behavior returns true when sent regexp?" do
255
+ @non_regexp_route.stub!(:behavior).and_return(stub("regexp_behavior", :regexp? => true))
256
+ @non_regexp_route.should be_regexp
257
+ end
258
+
259
+ it "is true if any of behavior's anscestors return true when sent regexp?" do
260
+ @regexp_ancestor = stub("regexp_ancestor", :regexp? => true)
261
+ @not_regexp_ancestor = stub("not_regexp_ancestor", :regexp? => false)
262
+ @behavior_with_ancestors = stub("regexp_behavior", :regexp? => false, :ancestors => [@regexp_ancestor, @not_regexp_ancestor])
263
+
264
+ @non_regexp_route.stub!(:behavior).and_return(@behavior_with_ancestors)
265
+ @non_regexp_route.should be_regexp
266
+ end
267
+
268
+ after :each do
269
+ Merb::Router.reset!
270
+ end
271
+ end
272
+
273
+
274
+
275
+ describe Merb::Router::Route, "#generate" do
276
+ before :each do
277
+ Merb::Router.prepare do |r|
278
+ r.match(/api\/(.*)/).to(:controller => "api", :token => "[1]").name(:regexpy)
279
+ r.match("/world/countries/:name").to(:controller => "countries").name(:non_regexpy)
280
+ end
281
+
282
+ @regexp_route = Merb::Router.named_routes[:regexpy]
283
+ @non_regexp_route = Merb::Router.named_routes[:non_regexpy]
284
+ end
285
+
286
+ after :each do
287
+ Merb::Router.reset!
288
+ end
289
+
290
+ it "does not work for regexp routes" do
291
+ lambda { @regexp_route.generate({ :token => "apitoken" }) }.should raise_error(RuntimeError, /regexp/)
292
+ end
293
+
294
+ it "replaces symbol segments in the URL with values from given Hash parameters" do
295
+ @non_regexp_route.generate({ :name => "Italy" }).should == "/world/countries/Italy"
296
+ @non_regexp_route.generate({ :name => "Brazil" }).should == "/world/countries/Brazil"
297
+ end
298
+
299
+ it "replaces symbol segments with Fixnum values just fine" do
300
+ @non_regexp_route.generate({ :name => 101 }).should == "/world/countries/101"
301
+ end
302
+
303
+ it "appends unknown symbol segments after ?" do
304
+ @non_regexp_route.generate({ :name => 101, :area => 10101 }).should == "/world/countries/101?area=10101"
305
+ end
306
+
307
+ it "calls #to_param on segments that respond to it" do
308
+ @non_regexp_route.generate({ :name => stub('US', :to_param => 'USA') }).should == "/world/countries/USA"
309
+ end
310
+ end
311
+
312
+
313
+
314
+ describe Merb::Router::Route, "#if_conditions" do
315
+ before :each do
316
+ Merb::Router.prepare do |r|
317
+ r.match(/api\/(.*)/).to(:controller => "api", :token => "[1]").name(:regexpy)
318
+ r.match("/world/countries/:name").to(:controller => "countries").name(:non_regexpy)
319
+ r.match("/world/continents/:continent/countries/:country").to(:controller => "world_map").name(:two_symbol_segments)
320
+ end
321
+
322
+ @regexp_route = Merb::Router.named_routes[:regexpy]
323
+ @non_regexp_route = Merb::Router.named_routes[:non_regexpy]
324
+ @two_symbol_route = Merb::Router.named_routes[:two_symbol_segments]
325
+ end
326
+
327
+ after :each do
328
+ Merb::Router.reset!
329
+ end
330
+
331
+ it "returns array with =~ statements" do
332
+ # just to show you what it looks like
333
+ @non_regexp_route.if_conditions({}).should == [" (/^\\/world\\/countries\\/([^\\/.,;?]+)$/ =~ cached_path) && (path1 = $1)"]
334
+ end
335
+
336
+ it "returns array of syntactically valid Ruby code statements that can be evaluated" do
337
+ cached_path = "/world/countries/Italy"
338
+ eval(@non_regexp_route.if_conditions({}).first)
339
+ # raises nothing and passes
340
+ end
341
+
342
+ it "works with regexp routes" do
343
+ cached_path = "/api/signin"
344
+ eval(@regexp_route.if_conditions({}).first)
345
+ # raises nothing and passes
346
+ end
347
+
348
+ it "adds conditions and match group for each symbol segment of route" do
349
+ # again, just to show you what it looks like
350
+ @two_symbol_route.if_conditions({}).should == [" (/^\\/world\\/continents\\/([^\\/.,;?]+)\\/countries\\/([^\\/.,;?]+)$/ =~ cached_path) && (path1, path2 = $1, $2)"]
351
+ end
352
+ end
353
+
354
+ describe Merb::Router::Route, "#if_conditions" do
355
+ before :each do
356
+ Merb::Router.prepare do |r|
357
+ r.match(/api\/(.*)/).to(:controller => "api", :token => "[1]").name(:regexpy)
358
+ r.match("/world/countries/:name").to(:controller => "countries").name(:non_regexpy)
359
+ r.match("/world/continents/:continent/countries/:country").to(:controller => "world_map").name(:two_symbol_segments)
360
+ end
361
+
362
+ @regexp_route = Merb::Router.named_routes[:regexpy]
363
+ @non_regexp_route = Merb::Router.named_routes[:non_regexpy]
364
+ @two_symbol_route = Merb::Router.named_routes[:two_symbol_segments]
365
+ end
366
+
367
+ after :each do
368
+ Merb::Router.reset!
369
+ end
370
+
371
+ it "uses if in compiled statement when argument is false" do
372
+ @regexp_route.compile(false).should =~ /\s*elsif/
373
+ end
374
+
375
+ it "uses elsif in compiled statement when argument is true" do
376
+ @non_regexp_route.compile(true).should =~ /^if/
377
+ end
378
+
379
+ it "uses if in compiled statement by default" do
380
+ @regexp_route.compile.should =~ /\s*elsif/
381
+ end
382
+ end
383
+
384
+ describe "Merb::Router::Route.capture" do
385
+
386
+ after :each do
387
+ Merb::Router.reset!
388
+ end
389
+
390
+ it "should capture routes that have been added in the block context" do
391
+ routes, named, route = [], {}, nil
392
+ Merb::Router.prepare do |r|
393
+ routes, named = Merb::Router.capture do
394
+ route = r.match("/overview").to(:controller => "home", :action => 'overview')
395
+ end
396
+ r.match("/").to(:controller => "home").name(:home)
397
+ end
398
+ routes.should include(route)
399
+ named.should_not include(route)
400
+ end
401
+
402
+ it "should capture named routes that have been added in the block context" do
403
+ routes, named, route = [], {}, nil
404
+ Merb::Router.prepare do |r|
405
+ r.match("/overview").to(:controller => "home", :action => 'overview')
406
+ routes, named = Merb::Router.capture do
407
+ route = r.match("/").to(:controller => "home").name(:home)
408
+ end
409
+ end
410
+ routes.should include(route)
411
+ named[:home].should == route
412
+ end
413
+
414
+ end