rad_core 0.0.13 → 0.0.14

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 (330) hide show
  1. data/Rakefile +4 -3
  2. data/lib/components/config.rb +6 -0
  3. data/lib/components/controller.rb +5 -0
  4. data/lib/components/controller.yml +3 -0
  5. data/lib/components/conveyors.rb +7 -0
  6. data/lib/components/environment.rb +5 -0
  7. data/lib/components/environment.yml +3 -0
  8. data/lib/components/flash.rb +5 -0
  9. data/lib/components/html.rb +4 -0
  10. data/lib/components/html.yml +3 -0
  11. data/lib/components/http.rb +6 -0
  12. data/lib/components/http.yml +13 -0
  13. data/lib/components/logger.rb +5 -0
  14. data/lib/components/mailer.rb +9 -0
  15. data/lib/components/remote.rb +4 -0
  16. data/lib/components/router.rb +13 -0
  17. data/lib/components/router.yml +2 -0
  18. data/lib/components/template.rb +8 -0
  19. data/lib/components/template.yml +1 -0
  20. data/lib/components/web.rb +8 -0
  21. data/lib/components/workspace.rb +1 -0
  22. data/lib/rad/{support → _support}/active_support/locales/en/actionpack.yml +0 -0
  23. data/lib/rad/{support → _support}/active_support/locales/en/activesupport.yml +0 -0
  24. data/lib/rad/_support/active_support/locales/ru/actionview.yml +162 -0
  25. data/lib/rad/_support/active_support/locales/ru/activesupport.yml +16 -0
  26. data/lib/rad/_support/active_support/locales/ru/datetime.yml +49 -0
  27. data/lib/rad/{support → _support}/active_support/micelaneous.rb +0 -0
  28. data/lib/rad/{support → _support}/active_support/time.rb +0 -0
  29. data/lib/rad/{support → _support}/active_support.rb +14 -2
  30. data/lib/rad/{support → _support}/addressable.rb +0 -0
  31. data/lib/rad/_support/callbacks.rb +166 -0
  32. data/lib/rad/_support/class_loader.rb +9 -0
  33. data/lib/rad/_support/encoding.rb +3 -0
  34. data/lib/rad/_support/exception.rb +45 -0
  35. data/lib/rad/_support/extensions.rb +20 -0
  36. data/lib/rad/_support/filters.rb +32 -0
  37. data/lib/rad/{support → _support}/hacks_and_fixes.rb +0 -0
  38. data/lib/rad/{support → _support}/mime.rb +6 -0
  39. data/lib/rad/{support → _support}/module.rb +7 -9
  40. data/lib/rad/_support/require.rb +62 -0
  41. data/lib/rad/{support → _support}/rson.rb +0 -0
  42. data/lib/rad/{support → _support}/ruby_ext_with_active_support.rb +0 -0
  43. data/lib/rad/{support → _support}/string.rb +9 -1
  44. data/lib/rad/controller/_abstract/micelaneous.rb +27 -0
  45. data/lib/rad/controller/_abstract/render.rb +159 -0
  46. data/lib/rad/controller/_abstract/responder.rb +13 -0
  47. data/lib/rad/controller/_abstract.rb +37 -0
  48. data/lib/rad/controller/_context.rb +15 -0
  49. data/lib/rad/controller/_http.rb +50 -0
  50. data/lib/rad/controller/_require.rb +19 -0
  51. data/lib/rad/controller/abstract.rb +1 -0
  52. data/lib/rad/controller/context.rb +1 -0
  53. data/lib/rad/controller/http.rb +1 -0
  54. data/lib/rad/controller/processors/controller_caller.rb +22 -24
  55. data/lib/rad/controller/processors/controller_error_handling.rb +46 -48
  56. data/lib/rad/controller/processors/controller_logger.rb +7 -9
  57. data/lib/rad/controller.rb +1 -28
  58. data/lib/rad/conveyors/_conveyor.rb +73 -0
  59. data/lib/rad/conveyors/_conveyors.rb +19 -0
  60. data/lib/rad/conveyors/_params.rb +10 -0
  61. data/lib/rad/conveyors/_processor.rb +13 -0
  62. data/lib/rad/conveyors/_require.rb +10 -0
  63. data/lib/rad/conveyors/_workspace.rb +34 -0
  64. data/lib/rad/conveyors/params.rb +1 -0
  65. data/lib/rad/conveyors/processor.rb +1 -0
  66. data/lib/rad/conveyors/processors/conveyor_logger.rb +23 -0
  67. data/lib/rad/conveyors/workspace.rb +1 -0
  68. data/lib/rad/conveyors.rb +1 -0
  69. data/lib/rad/core_web/_controller_micelaneous_helper.rb +17 -0
  70. data/lib/rad/core_web/_require.rb +25 -0
  71. data/lib/rad/core_web/_router/abstract_routing_helper.rb +20 -0
  72. data/lib/rad/core_web/_router/controller_routing_helper.rb +56 -0
  73. data/lib/rad/core_web/_router/view_routing_helper.rb +57 -0
  74. data/lib/rad/environment/_config.rb +27 -0
  75. data/lib/rad/environment/_environment.rb +17 -0
  76. data/lib/rad/environment/_files_helper.rb +55 -0
  77. data/lib/rad/environment/_logger.rb +53 -0
  78. data/lib/rad/environment/_require.rb +24 -0
  79. data/lib/rad/environment/config.rb +1 -111
  80. data/lib/rad/environment.rb +1 -55
  81. data/lib/{rad_core → rad}/gems.rb +2 -3
  82. data/lib/rad/html/_flash.rb +40 -0
  83. data/lib/rad/html/_helpers/basic_html_helper.rb +72 -0
  84. data/lib/rad/html/_helpers/flash_helper.rb +3 -0
  85. data/lib/rad/html/_helpers/form_helper.rb +114 -0
  86. data/lib/rad/html/_helpers/html_helper.rb +3 -0
  87. data/lib/rad/html/_helpers/javascript_helper.rb +27 -0
  88. data/lib/rad/html/_helpers/model_helper.rb +143 -0
  89. data/lib/rad/html/_require.rb +15 -0
  90. data/lib/rad/html/processors/prepare_flash.rb +22 -23
  91. data/lib/rad/html/processors/scoped_params.rb +18 -21
  92. data/lib/rad/html.rb +1 -26
  93. data/lib/rad/http/_http.rb +11 -0
  94. data/lib/rad/http/_http_adapter.rb +44 -0
  95. data/lib/rad/http/_request.rb +50 -0
  96. data/lib/rad/http/_require.rb +33 -0
  97. data/lib/rad/http/_response.rb +84 -0
  98. data/lib/rad/http/{support → _support}/rack/fixes.rb +0 -0
  99. data/lib/rad/http/_support/rack/rack_adapter.rb +57 -0
  100. data/lib/rad/http/processors/evaluate_format.rb +16 -19
  101. data/lib/rad/http/processors/http_logger.rb +10 -12
  102. data/lib/rad/http/processors/http_writer.rb +24 -26
  103. data/lib/rad/http/processors/prepare_params.rb +19 -18
  104. data/lib/rad/http/request.rb +1 -0
  105. data/lib/rad/http/response.rb +1 -0
  106. data/lib/rad/http.rb +1 -48
  107. data/lib/rad/mailer/_letter.rb +28 -0
  108. data/lib/rad/mailer/_mailer.rb +13 -0
  109. data/lib/rad/mailer/_mailer_controller.rb +38 -0
  110. data/lib/rad/mailer/_require.rb +7 -0
  111. data/lib/rad/mailer/mailer_controller.rb +1 -0
  112. data/lib/rad/mailer/processors/letter_builder.rb +34 -0
  113. data/lib/rad/mailer.rb +1 -0
  114. data/lib/rad/profiles/mailer.rb +5 -0
  115. data/lib/rad/profiles/web.rb +29 -52
  116. data/lib/rad/remote/_remote_controller.rb +9 -0
  117. data/lib/rad/remote/_require.rb +6 -0
  118. data/lib/rad/remote/processors/remote_caller.rb +44 -46
  119. data/lib/rad/remote/processors/remote_logger.rb +8 -10
  120. data/lib/rad/remote/remote_controller.rb +1 -0
  121. data/lib/rad/remote.rb +1 -9
  122. data/lib/rad/router/_abstract_router.rb +50 -0
  123. data/lib/rad/router/_alias_router.rb +124 -0
  124. data/lib/rad/router/_basic_router.rb +72 -0
  125. data/lib/rad/router/_configurator.rb +19 -0
  126. data/lib/rad/router/_core_routing_helper.rb +39 -0
  127. data/lib/rad/router/_default_format_processor.rb +10 -0
  128. data/lib/rad/router/_object_router.rb +184 -0
  129. data/lib/rad/router/_require.rb +31 -0
  130. data/lib/rad/router/_restful_router.rb +124 -0
  131. data/lib/rad/router/_router.rb +294 -0
  132. data/lib/rad/router/_simple_router.rb +21 -0
  133. data/lib/rad/router/abstract_router.rb +1 -0
  134. data/lib/rad/router/alias_router.rb +1 -0
  135. data/lib/rad/router/configurator.rb +1 -0
  136. data/lib/rad/router/micelaneous_router.rb +1 -0
  137. data/lib/rad/router/object_router.rb +1 -0
  138. data/lib/rad/router/processors/router.rb +23 -0
  139. data/lib/rad/router/restful_router.rb +1 -0
  140. data/lib/rad/{html/include_into_controller.rb → router/simple_router.rb} +0 -0
  141. data/lib/rad/router.rb +1 -29
  142. data/lib/rad/spec/controller.rb +20 -11
  143. data/lib/rad/spec/environment.rb +22 -38
  144. data/lib/rad/spec/http.rb +13 -86
  145. data/lib/rad/spec/http_controller.rb +105 -0
  146. data/lib/rad/spec/mailer.rb +27 -0
  147. data/lib/rad/spec/remote.rb +2 -2
  148. data/lib/rad/spec/router.rb +9 -11
  149. data/lib/rad/spec/template.rb +8 -2
  150. data/lib/rad/spec/xhtml.rb +0 -2
  151. data/lib/rad/spec.rb +4 -2
  152. data/lib/rad/template/_context.rb +92 -0
  153. data/lib/rad/template/_relative_path_resolver.rb +8 -0
  154. data/lib/rad/template/_require.rb +15 -0
  155. data/lib/rad/template/{support → _support}/tilt.rb +0 -0
  156. data/lib/rad/template/{support → _support}/tilt_fixes.rb +0 -0
  157. data/lib/rad/template/_template.rb +175 -0
  158. data/lib/rad/template/template_context.rb +1 -62
  159. data/lib/rad/template.rb +1 -25
  160. data/lib/rad.rb +8 -0
  161. data/readme.md +40 -12
  162. data/spec/controller/{abstract_controller_spec → abstract_spec}/views/OperationsOrderSpec/action.erb +0 -0
  163. data/spec/controller/{abstract_controller_spec → abstract_spec}/views/ViewVariablesSpec/action.erb +0 -0
  164. data/spec/controller/abstract_spec.rb +126 -0
  165. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/NamespaceSpec/ClassSpec}/show.erb +0 -0
  166. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/item_spec}/actions.erb +0 -0
  167. data/spec/controller/{controller_context_spec/views/NamespaceSpec/ClassSpec → context_spec/views/item_spec}/show.erb +0 -0
  168. data/spec/controller/{controller_context_spec/views/ItemSpec → context_spec/views/item_spec}/update.erb +0 -0
  169. data/spec/controller/{controller_context_spec → context_spec}/views/namespace_spec/class_spec/update.erb +0 -0
  170. data/spec/controller/{controller_context_spec/views/PageSpec → context_spec/views/page_spec}/actions.erb +0 -0
  171. data/spec/controller/{controller_context_spec/views/PageSpec → context_spec/views/page_spec}/show.erb +0 -0
  172. data/spec/controller/context_spec.rb +123 -0
  173. data/spec/controller/error_handling_spec.rb +21 -27
  174. data/spec/controller/{controller_helper_spec → helper_spec}/views/HelperMethodSpec/action.erb +0 -0
  175. data/spec/controller/{controller_helper_spec → helper_spec}/views/HelperSpec/action.erb +0 -0
  176. data/spec/controller/{controller_helper_spec.rb → helper_spec.rb} +7 -13
  177. data/spec/controller/{http_controller_spec.rb → http_spec.rb} +17 -23
  178. data/spec/controller/{controller_render_spec/views/AlreadyRenderedSpec → render_spec/views/already_rendered_spec}/action.erb +0 -0
  179. data/spec/controller/{controller_render_spec/views/AlreadyRenderedSpec → render_spec/views/already_rendered_spec}/custom_template.erb +0 -0
  180. data/spec/controller/{controller_render_spec/views/AnotherActionSpec → render_spec/views/another_action_spec}/another_action.erb +0 -0
  181. data/spec/controller/{controller_render_spec/views/AnotherLayout → render_spec/views/another_layout}/action.erb +0 -0
  182. data/spec/controller/{controller_render_spec/views/ForbidPartialAsActionSpec → render_spec/views/forbid_partial_as_action_spec}/_action.erb +0 -0
  183. data/spec/controller/{controller_render_spec/views/FormatSpec → render_spec/views/format_spec}/action.html.erb +0 -0
  184. data/spec/controller/{controller_render_spec/views/FormatSpec → render_spec/views/format_spec}/action.js.erb +0 -0
  185. data/spec/controller/{controller_render_spec/views/LayoutFiltersSpec → render_spec/views/layout_filters_spec}/action_with_layout.erb +0 -0
  186. data/spec/controller/{controller_render_spec/views/LayoutFiltersSpec → render_spec/views/layout_filters_spec}/action_without_layout.erb +0 -0
  187. data/spec/controller/{controller_render_spec/views/LayoutSpec → render_spec/views/layout_spec}/action.erb +0 -0
  188. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/admin.erb +0 -0
  189. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/app.html.erb +0 -0
  190. data/spec/controller/{controller_render_spec → render_spec}/views/layouts/app.js.erb +0 -0
  191. data/spec/controller/{controller_render_spec/views/MultipleActions → render_spec/views/multiple_actions}/actions.haml +0 -0
  192. data/spec/controller/render_spec/views/relative_spec/a/form.erb +1 -0
  193. data/spec/controller/render_spec/views/relative_spec/a/show.erb +1 -0
  194. data/spec/controller/render_spec/views/relative_spec/b/form.erb +1 -0
  195. data/spec/controller/{controller_render_spec → render_spec}/views/some_template.erb +0 -0
  196. data/spec/controller/{controller_render_spec → render_spec}/views/standalone.html.erb +0 -0
  197. data/spec/controller/{controller_render_spec.rb → render_spec.rb} +37 -27
  198. data/spec/{conveyor/conveyor_spec.rb → conveyors/conveyors_spec.rb} +36 -14
  199. data/spec/environment/config_spec.rb +13 -21
  200. data/spec/environment/environment_spec.rb +14 -41
  201. data/spec/environment/logger_spec.rb +4 -13
  202. data/spec/environment/minimal_app_spec/app.rb +1 -1
  203. data/spec/environment/minimal_app_spec.rb +12 -14
  204. data/spec/environment/standard_app_spec/app/lib/app/init.rb +1 -1
  205. data/spec/environment/standard_app_spec/plugin_a/lib/plugin_a/init.rb +1 -1
  206. data/spec/environment/standard_app_spec.rb +17 -25
  207. data/spec/html/basic_html_helper_spec.rb +7 -4
  208. data/spec/html/form_helper_spec.rb +5 -5
  209. data/spec/html/javascript_helper_spec.rb +9 -5
  210. data/spec/html/model_helper_spec.rb +9 -6
  211. data/spec/html/scoped_params_spec.rb +2 -2
  212. data/spec/html/spec_helper.rb +16 -24
  213. data/spec/http/http_spec.rb +14 -35
  214. data/spec/http/micelaneous_spec.rb +3 -3
  215. data/spec/{mail → mailer}/mail_controller_spec/views/body_template_spec/signup.erb +0 -0
  216. data/spec/{mail → mailer}/mail_controller_spec.rb +36 -12
  217. data/spec/mailer/spec_helper.rb +5 -0
  218. data/spec/remote/remote_spec.rb +23 -8
  219. data/spec/router/alias_router_spec.rb +29 -30
  220. data/spec/router/basic_router_spec.rb +44 -0
  221. data/spec/router/configurator_spec.rb +9 -6
  222. data/spec/router/integration_spec.rb +10 -7
  223. data/spec/router/object_router_spec.rb +186 -0
  224. data/spec/router/persistent_params_spec.rb +4 -4
  225. data/spec/router/restful_router_spec.rb +61 -53
  226. data/spec/router/{basic_spec.rb → router_spec.rb} +26 -23
  227. data/spec/router/routing_helper_spec.rb +5 -6
  228. data/spec/spec_helper.rb +4 -0
  229. data/spec/support/callbacks_spec.rb +1 -1
  230. data/spec/support/filters_spec.rb +2 -2
  231. data/spec/support/spec_helper.rb +1 -1
  232. data/spec/template/template_spec/views/format_for_partials/dialog.js.erb +1 -1
  233. data/spec/template/template_spec/views/nested/format/a.erb +1 -1
  234. data/spec/template/template_spec/views/nested/format/b.js.erb +1 -0
  235. data/spec/template/template_spec/views/nesting_format/dialog.js.erb +1 -1
  236. data/spec/template/template_spec.rb +62 -48
  237. data/spec/template/tilt_spec/views/concat_and_capture.erb +1 -1
  238. data/spec/template/tilt_spec/views/concat_and_capture.haml +1 -1
  239. data/spec/template/tilt_spec.rb +17 -19
  240. data/spec/{integration → web}/basic_spec/views/smoke_test_spec/action.erb +0 -0
  241. data/spec/{integration → web}/basic_spec.rb +31 -12
  242. data/spec/{integration → web}/controller_routing_helper_spec.rb +13 -11
  243. data/spec/{integration → web}/flash_spec.rb +57 -42
  244. data/spec/{integration → web}/spec_helper_spec.rb +11 -10
  245. data/spec/{integration → web}/view_routing_helper_spec.rb +44 -36
  246. metadata +338 -318
  247. data/lib/rad/controller/abstract_controller/micelaneous.rb +0 -31
  248. data/lib/rad/controller/abstract_controller/render.rb +0 -160
  249. data/lib/rad/controller/abstract_controller/responder.rb +0 -17
  250. data/lib/rad/controller/abstract_controller.rb +0 -64
  251. data/lib/rad/controller/controller_context.rb +0 -15
  252. data/lib/rad/controller/http_controller.rb +0 -48
  253. data/lib/rad/conveyor/conveyor.rb +0 -74
  254. data/lib/rad/conveyor/conveyors.rb +0 -20
  255. data/lib/rad/conveyor/params.rb +0 -14
  256. data/lib/rad/conveyor/processor.rb +0 -68
  257. data/lib/rad/conveyor/processors/conveyor_logger.rb +0 -25
  258. data/lib/rad/conveyor/workspace.rb +0 -36
  259. data/lib/rad/conveyor.rb +0 -29
  260. data/lib/rad/environment/dependency_resolver.rb +0 -107
  261. data/lib/rad/environment/environment.rb +0 -29
  262. data/lib/rad/environment/files_helper.rb +0 -55
  263. data/lib/rad/environment/logger.rb +0 -21
  264. data/lib/rad/html/flash.rb +0 -42
  265. data/lib/rad/html/helpers/basic_html_helper.rb +0 -83
  266. data/lib/rad/html/helpers/flash_helper.rb +0 -5
  267. data/lib/rad/html/helpers/form_helper.rb +0 -115
  268. data/lib/rad/html/helpers/html_helper.rb +0 -5
  269. data/lib/rad/html/helpers/javascript_helper.rb +0 -18
  270. data/lib/rad/html/helpers/model_helper.rb +0 -135
  271. data/lib/rad/http/http.rb +0 -21
  272. data/lib/rad/http/http_adapter.rb +0 -36
  273. data/lib/rad/http/middleware/static_files.rb +0 -21
  274. data/lib/rad/http/support/rack/rack_adapter.rb +0 -67
  275. data/lib/rad/http/support/rack/request.rb +0 -42
  276. data/lib/rad/http/support/rack/response.rb +0 -86
  277. data/lib/rad/integration/controller_micelaneous_helper.rb +0 -19
  278. data/lib/rad/integration/router/abstract_routing_helper.rb +0 -22
  279. data/lib/rad/integration/router/controller_routing_helper.rb +0 -58
  280. data/lib/rad/integration/router/view_routing_helper.rb +0 -104
  281. data/lib/rad/integration.rb +0 -30
  282. data/lib/rad/mail/letter.rb +0 -30
  283. data/lib/rad/mail/mail_controller.rb +0 -31
  284. data/lib/rad/mail/mailer.rb +0 -23
  285. data/lib/rad/mail/processors/letter_builder.rb +0 -36
  286. data/lib/rad/mail.rb +0 -15
  287. data/lib/rad/profiles/mail.rb +0 -16
  288. data/lib/rad/profiles/web_require.rb +0 -5
  289. data/lib/rad/remote/remote.rb +0 -15
  290. data/lib/rad/router/core/configurator.rb +0 -25
  291. data/lib/rad/router/core/core_routing_helper.rb +0 -41
  292. data/lib/rad/router/core/default_format_processor.rb +0 -12
  293. data/lib/rad/router/core/processors/router.rb +0 -29
  294. data/lib/rad/router/core/router.rb +0 -271
  295. data/lib/rad/router/core/simple_router.rb +0 -23
  296. data/lib/rad/router/routers/abstract_router.rb +0 -62
  297. data/lib/rad/router/routers/alias_router.rb +0 -113
  298. data/lib/rad/router/routers/restful_router.rb +0 -113
  299. data/lib/rad/spec/mail.rb +0 -31
  300. data/lib/rad/spec/view.rb +0 -10
  301. data/lib/rad/support/buffered_logger.rb +0 -44
  302. data/lib/rad/support/callbacks.rb +0 -168
  303. data/lib/rad/support/exception.rb +0 -31
  304. data/lib/rad/support/filters.rb +0 -34
  305. data/lib/rad/support/format.rb +0 -17
  306. data/lib/rad/support/micon.rb +0 -13
  307. data/lib/rad/support.rb +0 -63
  308. data/lib/rad/template/template.rb +0 -250
  309. data/spec/controller/abstract_controller_spec.rb +0 -132
  310. data/spec/controller/controller_context_spec.rb +0 -123
  311. data/spec/controller/controller_render_spec/views/rem ExplicitRenderSpec/action.erb +0 -1
  312. data/spec/controller/controller_render_spec/views/rem ExplicitRenderSpec/another_action.erb +0 -1
  313. data/spec/controller/spec_helper.rb +0 -19
  314. data/spec/conveyor/spec_helper.rb +0 -3
  315. data/spec/environment/config_spec/config.default.yml +0 -3
  316. data/spec/environment/config_spec/config.development.yml +0 -3
  317. data/spec/environment/config_spec/config.yml +0 -5
  318. data/spec/environment/spec_helper.rb +0 -1
  319. data/spec/http/http_spec/app/lib/app/init.rb +0 -10
  320. data/spec/http/http_spec/app/runtime/public/emptygit +0 -0
  321. data/spec/http/http_spec/plugin_a/lib/plugin_a/init.rb +0 -0
  322. data/spec/http/http_spec/plugin_b/lib/plugin_b/init.rb +0 -5
  323. data/spec/http/http_spec/plugin_b/static/emptygit +0 -0
  324. data/spec/http/spec_helper.rb +0 -5
  325. data/spec/integration/spec_helper.rb +0 -5
  326. data/spec/mail/spec_helper.rb +0 -7
  327. data/spec/remote/spec_helper.rb +0 -17
  328. data/spec/router/spec_helper.rb +0 -20
  329. data/spec/template/spec_helper.rb +0 -6
  330. data/spec/template/template_spec/views/nested/format/b.erb +0 -1
@@ -1,6 +1,6 @@
1
- require 'router/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
- describe "AliasRouter" do
3
+ describe "AliasRouter" do
4
4
  before :all do
5
5
  class SomeController
6
6
  end
@@ -10,21 +10,21 @@ describe "AliasRouter" do
10
10
  remove_constants %w(SomeController)
11
11
  end
12
12
 
13
- before :each do
14
- @router = Rad::AliasRouter.new
13
+ before do
14
+ @router = Rad::Router::AliasRouter.new
15
15
  end
16
16
 
17
17
  it "encode / decode" do
18
- @router.add '/login', class: SomeController, method: :login
18
+ @router.add '/login', class_name: 'SomeController', method: :login
19
19
 
20
20
  @router.encode(SomeController, :login, {}).should == ["/login", {}]
21
- @router.encode_method('login_path').should == [SomeController, :login]
21
+ @router.encode_method('login_path', false).should == [SomeController, :login]
22
22
  @router.decode("/login", {}).should == [SomeController, :login, {}]
23
23
  end
24
24
 
25
25
  it "should differentiate aliases with similar path elements" do
26
- @router.add '/login', class: SomeController, method: :login
27
- @router.add '/login/twitter', class: SomeController, method: :twitter
26
+ @router.add '/login', class_name: 'SomeController', method: :login
27
+ @router.add '/login/twitter', class_name: 'SomeController', method: :twitter
28
28
 
29
29
  @router.encode(SomeController, :login, {}).should == ["/login", {}]
30
30
  @router.decode("/login", {}).should == [SomeController, :login, {}]
@@ -34,65 +34,64 @@ describe "AliasRouter" do
34
34
  end
35
35
 
36
36
  it "input validation" do
37
- lambda{@router.add :login, class: SomeController, method: :login}.should raise_error(/\//)
38
- lambda{@router.add '/login', class: SomeController}.should raise_error(/method/)
37
+ lambda{@router.add :login, class_name: 'SomeController', method: :login}.should raise_error(/\//)
38
+ lambda{@router.add '/login', class_name: 'SomeController'}.should raise_error(/method/)
39
39
  lambda{@router.add '/login', method: :login}.should raise_error(/class/)
40
- lambda{@router.add '/login', class: SomeController, method: :login, invalid: 'value'}.should raise_error(/unknown/)
41
- lambda{@router.add '/login', class: SomeController, method: :login, url_root: 'users'}.should raise_error(/\//)
42
- lambda{@router.add '/login', class: SomeController, method: :login, prefix: []}.should raise_error(/empty/)
40
+ lambda{@router.add '/login', class_name: 'SomeController', method: :login, invalid: 'value'}.should raise_error(/unknown/)
41
+ lambda{@router.add '/login', class_name: 'SomeController', method: :login, url_root: 'users'}.should raise_error(/\//)
43
42
  end
44
43
 
45
44
  it "should use :url_root" do
46
- @router.add '/login', class: SomeController, method: :login, url_root: '/space'
45
+ @router.add '/login', class_name: 'SomeController', method: :login, url_root: '/space'
47
46
 
48
- @router.encode(SomeController, :login, {}).should == ["/space/login", {}]
47
+ @router.encode(SomeController, :login, {}).should == ["/login", {url_root: '/space'}]
49
48
  @router.decode("/space/login", {}).should == [SomeController, :login, {}]
50
49
  end
51
50
 
52
51
  it "should return nil if route unknown" do
53
52
  @router.encode(SomeController, :unknown, {}).should be_nil
54
- @router.encode_method(:unknown_path).should be_nil
53
+ @router.encode_method(:unknown_path, false).should be_nil
55
54
  @router.decode("/login", {}).should be_nil
56
55
  end
57
56
 
58
57
  it 'root alias' do
59
- @router.add '/', class: SomeController, method: :home
58
+ @router.add '/', class_name: 'SomeController', method: :home
60
59
 
61
60
  @router.encode(SomeController, :home, {}).should == ["/", {}]
62
61
  @router.decode("/", {}).should == [SomeController, :home, {}]
63
62
 
64
63
  # should not support url_root
65
- -> {@router.add '/', class: SomeController, method: :home, url_root: '/space'}.should raise_error(/url_root/)
64
+ -> {@router.add '/', class_name: 'SomeController', method: :home, url_root: '/space'}.should raise_error(/url_root/)
66
65
  end
67
66
 
68
67
  describe "prefixes" do
69
68
  it "basics" do
70
- @router.add '/statistics', class: SomeController, method: :statistics, prefix: [:l, :space]
69
+ @router.add '/statistics', class_name: 'SomeController', method: :statistics, prefix: [:l, :space]
71
70
 
72
- @router.encode(SomeController, :statistics, l: 'en', space: 'personal').should == ["/l/en/space/personal/statistics", {}]
73
- @router.encode_method("statistics_path").should == [SomeController, :statistics]
74
- @router.decode("/l/en/space/personal/statistics", {}).should == [SomeController, :statistics, {l: 'en', space: 'personal'}]
71
+ @router.encode(SomeController, :statistics, l: 'en', space: 'personal').should == ["/en/personal/statistics", {}]
72
+ @router.encode_method("statistics_path", false).should == [SomeController, :statistics]
73
+ @router.decode("/en/personal/statistics", {}).should == [SomeController, :statistics, {l: 'en', space: 'personal'}]
75
74
  end
76
75
 
77
76
  it "should also works with path with slashes" do
78
- @router.add '/blogs/show', class: SomeController, method: :show, prefix: [:l, :space]
77
+ @router.add '/blogs/show', class_name: 'SomeController', method: :show, prefix: [:l, :space]
79
78
 
80
- @router.encode(SomeController, :show, l: 'en', space: 'personal').should == ["/l/en/space/personal/blogs/show", {}]
81
- @router.decode("/l/en/space/personal/blogs/show", {}).should == [SomeController, :show, {l: 'en', space: 'personal'}]
79
+ @router.encode(SomeController, :show, l: 'en', space: 'personal').should == ["/en/personal/blogs/show", {}]
80
+ @router.decode("/en/personal/blogs/show", {}).should == [SomeController, :show, {l: 'en', space: 'personal'}]
82
81
  end
83
82
 
84
83
  it "should raise error if prefixes not provided" do
85
- @router.add '/login', class: SomeController, method: :login, prefix: [:l]
86
-
84
+ @router.add '/login', class_name: 'SomeController', method: :login, prefix: :l
85
+
87
86
  lambda{@router.encode(SomeController, :login, {})}.should raise_error(/prefix/)
88
87
  lambda{@router.decode('/login', {})}.should raise_error(/prefix/)
89
88
  end
90
89
 
91
90
  it "should works with :url_root" do
92
- @router.add '/blogs/show', class: SomeController, method: :show, prefix: [:l], url_root: '/users'
91
+ @router.add '/blogs/show', class_name: 'SomeController', method: :show, prefix: :l, url_root: '/users'
93
92
 
94
- @router.encode(SomeController, :show, l: 'en').should == ["/users/l/en/blogs/show", {}]
95
- @router.decode("/users/l/en/blogs/show", {}).should == [SomeController, :show, {l: 'en'}]
93
+ @router.encode(SomeController, :show, l: 'en').should == ["/en/blogs/show", {url_root: '/users'}]
94
+ @router.decode("/users/en/blogs/show", {}).should == [SomeController, :show, {l: 'en'}]
96
95
  end
97
96
  end
98
97
  end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe "RedirectRouter" do
4
+ before do
5
+ @router = Rad::Router::BasicRouter.new
6
+ end
7
+
8
+ it "skip" do
9
+ @router.skip(/\/fs/)
10
+
11
+ halt = catch :halt do
12
+ @router.decode("/users/all", {})
13
+ nil
14
+ end
15
+ halt.should be_nil
16
+
17
+ halt = catch :halt do
18
+ @router.decode("/fs/user/avatar", {})
19
+ nil
20
+ end
21
+ halt.should_not be_nil
22
+ end
23
+
24
+ it "redirect" do
25
+ workspace = Rad::Conveyors::Workspace.new
26
+ workspace.response = Rad::Http::Response.new
27
+ @router.stub!(:workspace).and_return(workspace)
28
+
29
+ @router.redirect(/^\/([^\/]+)$/, "/\\1/Items")
30
+
31
+ halt = catch :halt do
32
+ @router.decode("/default/Items", {})
33
+ nil
34
+ end
35
+ halt.should be_nil
36
+
37
+ halt = catch :halt do
38
+ @router.decode("/default", {})
39
+ nil
40
+ end
41
+ halt.should_not be_nil
42
+ workspace.response.headers['Location'].should == '/default/Items'
43
+ end
44
+ end
@@ -1,18 +1,21 @@
1
- require 'router/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Configurator" do
4
- before :each do
5
- @router = Rad::Router.new :class
6
- Rad::Routes::Configurator.stub(:router).and_return(@router)
4
+ before do
5
+ @basic_router = Rad::Router::BasicRouter.new
6
+ @router = Rad::Router.new(:class, [
7
+ [:basic_router, @basic_router]
8
+ ])
9
+ Rad::Router::Configurator.stub(:router).and_return(@router)
7
10
  end
8
11
 
9
12
  it "named routes" do
10
- rad.routes do |config|
13
+ rad.router.configure do |config|
11
14
  config.stub(:router).and_return(@router)
12
15
 
13
16
  config.skip(/^\/favicon/)
14
17
  end
15
18
 
16
- @router.skip.size.should > 0
19
+ @basic_router.skip_routes.size.should > 0
17
20
  end
18
21
  end
@@ -1,21 +1,24 @@
1
- require 'router/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Remote Basic" do
4
- with_environment
5
- with_router_spec
6
-
7
- before :all do
4
+ before :all do
8
5
  class ::AnRemote
9
6
  def call; end
10
7
  end
11
- end
8
+ end
9
+
10
+ isolate :conveyors
12
11
 
13
12
  after :all do
14
13
  remove_constants %w(AnRemote)
15
14
  end
16
15
 
16
+ before do
17
+ rad.conveyors.web.use Rad::Router::Processors::Router, :class_variable, :method_variable
18
+ end
19
+
17
20
  def call_router path, params
18
- rad.conveyors.web.call path: path, params: Rad::Params.new(params)
21
+ rad.conveyors.web.call path: path, params: Rad::Conveyors::Params.new(params)
19
22
  end
20
23
 
21
24
  it "basic" do
@@ -0,0 +1,186 @@
1
+ require 'spec_helper'
2
+
3
+ describe "ObjectRouter" do
4
+ before :all do
5
+ class ::Blogs
6
+ # Object methods
7
+ def show; end
8
+ def update; end
9
+
10
+ # Singleton methods
11
+ def all; end
12
+ def some; end
13
+ end
14
+ end
15
+
16
+ after :all do
17
+ remove_constants %w(Blogs)
18
+ end
19
+
20
+ before do
21
+ @router = Rad::Router::ObjectRouter.new
22
+ end
23
+
24
+ describe 'Singleton Resource' do
25
+ before do
26
+ @router.configure(
27
+ default_class_name: 'Blogs',
28
+ class_to_resource: -> klass {klass.name},
29
+ resource_to_class: -> resource {resource.constantize;},
30
+ id_to_class: -> id, params {nil}
31
+ )
32
+ end
33
+
34
+ it "basic" do
35
+ @router.encode(Blogs, :some, {}).should == ["/Blogs/some", {}]
36
+ @router.encode_method('some_blog_path', false).should == [Blogs, :some]
37
+ @router.encode_method('some_blogs_path', false).should == [Blogs, :some]
38
+ @router.decode("/Blogs/some", {}).should == [Blogs, :some, {}]
39
+ end
40
+
41
+ it "by default should use :all method if the method not explicitly specified" do
42
+ @router.encode(Blogs, :all, {}).should == ["/Blogs", {}]
43
+ @router.encode(Blogs, nil, {}).should == ["/Blogs", {}]
44
+ @router.encode_method('blog_path', false).should == [Blogs, :all]
45
+ @router.encode_method('blogs_path', false).should == [Blogs, :all]
46
+ @router.decode("/Blogs", {}).should == [Blogs, :all, {}]
47
+ end
48
+ end
49
+
50
+ describe "Object Resource" do
51
+ before do
52
+ @router.configure(
53
+ default_class_name: 'Blogs',
54
+ id_to_class: -> id, params {id == 'about' ? Blogs : nil},
55
+ resource_to_class: -> resource {resource.constantize}
56
+ )
57
+ end
58
+
59
+ # TODO3 remove also class from :encode, use:
60
+ #
61
+ # @router.encode('about', :update, view: 'full').should == ["/about/update", {view: 'full'}]
62
+ # @router.encode_method('update_path').should == [:update]
63
+ #
64
+ it "basic" do
65
+ @router.encode(Blogs, :update, id: 'about', view: 'full').should == ["/about/update", {view: 'full'}]
66
+ @router.encode_method('update_path', true).should == [Blogs, :update]
67
+ @router.decode("/about/update", {view: 'full'}).should == [Blogs, :update, {id: 'about', view: 'full'}]
68
+ end
69
+
70
+ it "by default should use :show method if the method not explicitly specified" do
71
+ @router.encode(Blogs, :show, id: 'about', view: 'full').should == ["/about", {view: 'full'}]
72
+ @router.encode(Blogs, nil, id: 'about', view: 'full').should == ["/about", {view: 'full'}]
73
+ @router.encode_method('path', true).should == [Blogs, :show]
74
+ @router.decode("/about", {view: 'full'}).should == [Blogs, :show, {id: 'about', view: 'full'}]
75
+ end
76
+
77
+ it "should raise error if :class for :id is not resolved" do
78
+ lambda{@router.decode("/non-existing-id", {view: 'full'})}.should raise_error(/no class for .* id/)
79
+ end
80
+ end
81
+
82
+ describe "prefixes" do
83
+ before do
84
+ @common_options = {
85
+ default_class_name: 'Blogs',
86
+ class_to_resource: -> klass {klass.name},
87
+ resource_to_class: -> resource {resource.constantize},
88
+ id_to_class: -> id, params {id == 'about' ? Blogs : nil}
89
+ }
90
+ end
91
+
92
+ it "class resource" do
93
+ @router.configure @common_options.merge(prefix: [:l, :space])
94
+
95
+ @router.encode(Blogs, :some, l: 'en', space: 'personal').should == ["/en/personal/Blogs/some", {}]
96
+ @router.encode(Blogs, :all, l: 'en', space: 'personal').should == ["/en/personal/Blogs", {}]
97
+ @router.decode("/en/personal/Blogs/some", {}).should == [Blogs, :some, {l: 'en', space: 'personal'}]
98
+ @router.decode("/en/personal/Blogs", {}).should == [Blogs, :all, {l: 'en', space: 'personal'}]
99
+ end
100
+
101
+ it "object resource" do
102
+ @router.configure @common_options.merge(prefix: [:l, :space])
103
+
104
+ @router.encode(Blogs, :update, id: 'about', l: 'en', space: 'personal').should == ["/en/personal/about/update", {}]
105
+ @router.encode(Blogs, nil, id: 'about', l: 'en', space: 'personal').should == ["/en/personal/about", {}]
106
+ @router.decode("/en/personal/about/update", {}).should == [Blogs, :update, {id: 'about', l: 'en', space: 'personal'}]
107
+ @router.decode("/en/personal/about", {}).should == [Blogs, :show, {id: 'about', l: 'en', space: 'personal'}]
108
+ end
109
+
110
+ it "should raise error if prefixes not provided" do
111
+ @router.configure @common_options.merge(prefix: :l)
112
+
113
+ lambda{@router.encode(Blogs, :some, {})}.should raise_error(/prefix/)
114
+ lambda{@router.encode(Blogs, :all, {})}.should raise_error(/prefix/)
115
+ lambda{@router.decode('/Blogs/some', {})}.should raise_error(/no class for .* id/)
116
+ lambda{@router.decode('/Blogs', {})}.should raise_error(/invalid 'size' of path/)
117
+
118
+
119
+ lambda{@router.encode(Blogs, :update, id: 'about')}.should raise_error(/prefix/)
120
+ lambda{@router.encode(Blogs, :show, id: 'about')}.should raise_error(/prefix/)
121
+ lambda{@router.decode('/about/update', {})}.should raise_error(/no class for .* id/)
122
+ lambda{@router.decode('/about', {})}.should raise_error(/invalid 'size' of path/)
123
+ end
124
+
125
+ it "should works with :url_root" do
126
+ @router.configure @common_options.merge(prefix: [:l], url_root: '/users')
127
+
128
+ @router.encode(Blogs, :some, l: 'en').should == ["/en/Blogs/some", {url_root: '/users'}]
129
+ @router.decode("/users/en/Blogs/some", {}).should == [Blogs, :some, {l: 'en'}]
130
+
131
+ @router.encode(Blogs, :update, id: 'about', l: 'en').should == ["/en/about/update", {url_root: '/users'}]
132
+ @router.decode("/users/en/about/update", {}).should == [Blogs, :update, {id: 'about', l: 'en'}]
133
+ end
134
+ end
135
+
136
+ describe "micelaneous check" do
137
+ before{@common_options = {default_class_name: 'Blogs'}}
138
+
139
+ # it "should raise if :id and not default class " do
140
+ # @router.configure @common_options
141
+ # lambda{@router.encode(Blogs, :some, id: 'about')}.should raise_error(/:id can't be used with :class/)
142
+ # end
143
+
144
+ it "should return nil if resource name is not in plural form" do
145
+ @router.configure @common_options
146
+ lambda{@router.decode('/Blog/some', {})}.should raise_error(/resource must be in plural form/)
147
+ end
148
+
149
+ it "object id should not start with capital letter" do
150
+ @router.configure @common_options
151
+ lambda{@router.encode(Blogs, :some, {id: 'About'})}.should raise_error(/capital/)
152
+ end
153
+
154
+ it "resource name should be uppercased" do
155
+ @router.configure @common_options.merge(class_to_resource: -> klass {'blogs'})
156
+ lambda{@router.encode(Blogs, :some, {})}.should raise_error(/capital/)
157
+ end
158
+
159
+ it "should not be allowed to called twice" do
160
+ @router.configure @common_options
161
+ lambda{@router.configure @common_options}.should raise_error(/twice/)
162
+ end
163
+
164
+ it "should allow only plural form in resource names" do
165
+ @router.configure @common_options.merge(class_to_resource: -> klass {'Blog'})
166
+ lambda{@router.encode(Blogs, :some, {})}.should raise_error(/plural/)
167
+ end
168
+
169
+ it "shouldn't allow slashes in resource name" do
170
+ @router.configure @common_options.merge(class_to_resource: -> klass {'Site/Blog'})
171
+ lambda{@router.encode(Blogs, :some, {})}.should raise_error(/\//)
172
+ end
173
+
174
+ # it "should correctly works with unknown routes" do
175
+ # @router.encode(Blogs, :show, {}).should be_nil
176
+ # @router.encode_method('show_blog_path').should be_nil
177
+ # @router.encode_method('show_blogs_path').should be_nil
178
+ # @router.decode("/Blogs/show", {}).should be_nil
179
+ #
180
+ # @router.encode(Blogs, :show, id: 'about', view: 'full').should be_nil
181
+ # @router.encode_method('show_blog_path').should be_nil
182
+ # @router.encode_method('show_blogs_path').should be_nil
183
+ # @router.decode("/Blogs/about/show", view: 'full').should be_nil
184
+ # end
185
+ end
186
+ end
@@ -1,14 +1,14 @@
1
- require 'router/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Persistent Params" do
4
4
  after :all do
5
5
  remove_constants %w(PathParamsRouter)
6
6
  end
7
7
 
8
- before :each do
8
+ before do
9
9
  @router = Rad::Router.new :class
10
10
 
11
- @params = Rad::Params.new
11
+ @params = Rad::Conveyors::Params.new
12
12
  @router.stub(:safe_workspace).and_return({params: @params}.to_openobject)
13
13
 
14
14
  @router.persistent_params << :l
@@ -56,7 +56,7 @@ describe "Persistent Params" do
56
56
 
57
57
  router = Rad::Router.new :class, [[:prefix_router, PathParamsRouter.new]]
58
58
  router.persistent_params << :l
59
- params = Rad::Params.new
59
+ params = Rad::Conveyors::Params.new
60
60
  params.l = 'en'
61
61
  router.stub(:safe_workspace).and_return({params: params}.to_openobject)
62
62
 
@@ -1,120 +1,128 @@
1
- require 'router/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "RestfulRouter" do
4
4
  before :all do
5
- class ::BlogControllerSpec
5
+ class ::BlogController
6
6
  def show; end
7
7
  end
8
8
  end
9
9
 
10
10
  after :all do
11
- remove_constants %w(BlogControllerSpec)
11
+ remove_constants %w(BlogController)
12
12
  end
13
13
 
14
- before :each do
15
- @router = Rad::RestfulRouter.new
14
+ before do
15
+ @router = Rad::Router::RestfulRouter.new
16
16
  end
17
17
 
18
18
  describe 'core API' do
19
- it "singleton resource" do
20
- @router.add :blogs, class: BlogControllerSpec
19
+ it "class resource" do
20
+ @router.add :blogs, class_name: 'BlogController'
21
21
 
22
- @router.encode(BlogControllerSpec, :show, {}).should == ["/blogs/show", {}]
23
- @router.encode_method('show_blog_path').should == [BlogControllerSpec, :show]
24
- @router.encode_method('show_blogs_path').should == [BlogControllerSpec, :show]
25
- @router.decode("/blogs/show", {}).should == [BlogControllerSpec, :show, {}]
22
+ @router.encode(BlogController, :show, {}).should == ["/blogs/show", {}]
23
+ @router.encode_method('show_blog_path', false).should == [BlogController, :show]
24
+ @router.encode_method('show_blogs_path', false).should == [BlogController, :show]
25
+ @router.decode("/blogs/show", {}).should == [BlogController, :show, {}]
26
26
  end
27
27
 
28
28
  it "object resource" do
29
- @router.add :blogs, class: BlogControllerSpec
29
+ @router.add :blogs, class_name: 'BlogController'
30
30
 
31
- @router.encode(BlogControllerSpec, :show, id: '10', view: 'full').should == ["/blogs/10/show", {view: 'full'}]
32
- @router.encode_method('show_blog_path').should == [BlogControllerSpec, :show]
33
- @router.encode_method('show_blogs_path').should == [BlogControllerSpec, :show]
34
- @router.decode("/blogs/10/show", {view: 'full'}).should == [BlogControllerSpec, :show, {id: '10', view: 'full'}]
31
+ @router.encode(BlogController, :show, id: '10', view: 'full').should == ["/blogs/10/show", {view: 'full'}]
32
+ @router.encode_method('show_blog_path', true).should == [BlogController, :show]
33
+ @router.encode_method('show_blogs_path', true).should == [BlogController, :show]
34
+ @router.decode("/blogs/10/show", {view: 'full'}).should == [BlogController, :show, {id: '10', view: 'full'}]
35
35
  end
36
36
  end
37
37
 
38
38
  describe "prefixes" do
39
- it "singleton resource" do
40
- @router.add :blogs, class: BlogControllerSpec, prefix: [:l, :space]
39
+ it "class resource" do
40
+ @router.add :blogs, class_name: 'BlogController', prefix: [:l, :space]
41
41
 
42
- @router.encode(BlogControllerSpec, :show, l: 'en', space: 'personal').should == ["/l/en/space/personal/blogs/show", {}]
43
- @router.decode("/l/en/space/personal/blogs/show", {}).should == [BlogControllerSpec, :show, {l: 'en', space: 'personal'}]
42
+ @router.encode(BlogController, :show, l: 'en', space: 'personal').should == ["/en/personal/blogs/show", {}]
43
+ @router.decode("/en/personal/blogs/show", {}).should == [BlogController, :show, {l: 'en', space: 'personal'}]
44
44
  end
45
45
 
46
46
  it "object resource" do
47
- @router.add :blogs, class: BlogControllerSpec, prefix: [:l, :space]
47
+ @router.add :blogs, class_name: 'BlogController', prefix: [:l, :space]
48
48
 
49
- @router.encode(BlogControllerSpec, :show, id: '10', l: 'en', space: 'personal').should == ["/l/en/space/personal/blogs/10/show", {}]
50
- @router.decode("/l/en/space/personal/blogs/10/show", {}).should == [BlogControllerSpec, :show, {id: '10', l: 'en', space: 'personal'}]
49
+ @router.encode(BlogController, :show, id: '10', l: 'en', space: 'personal').should == ["/en/personal/blogs/10/show", {}]
50
+ @router.decode("/en/personal/blogs/10/show", {}).should == [BlogController, :show, {id: '10', l: 'en', space: 'personal'}]
51
51
  end
52
52
 
53
53
  it "should raise error or return nil if prefixes not provided" do
54
- @router.add :blogs, class: BlogControllerSpec, prefix: [:l]
54
+ @router.add :blogs, class_name: 'BlogController', prefix: :l
55
55
 
56
- lambda{@router.encode(BlogControllerSpec, :show, {})}.should raise_error(/prefix/)
56
+ lambda{@router.encode(BlogController, :show, {})}.should raise_error(/prefix/)
57
57
  @router.decode('/blogs/show', {}).should be_nil
58
58
 
59
- lambda{@router.encode(BlogControllerSpec, :show, id: '10')}.should raise_error(/prefix/)
59
+ lambda{@router.encode(BlogController, :show, id: '10')}.should raise_error(/prefix/)
60
60
  @router.decode('/blogs/10/show', {}).should be_nil
61
61
  end
62
62
 
63
63
  it "should works with :url_root" do
64
- @router.add :blogs, class: BlogControllerSpec, prefix: [:l], url_root: '/users'
64
+ @router.add :blogs, class_name: 'BlogController', prefix: :l, url_root: '/users'
65
65
 
66
- @router.encode(BlogControllerSpec, :show, l: 'en').should == ["/users/l/en/blogs/show", {}]
67
- @router.decode("/users/l/en/blogs/show", {}).should == [BlogControllerSpec, :show, {l: 'en'}]
66
+ @router.encode(BlogController, :show, l: 'en').should == ["/en/blogs/show", {url_root: '/users'}]
67
+ @router.decode("/users/en/blogs/show", {}).should == [BlogController, :show, {l: 'en'}]
68
68
 
69
- @router.encode(BlogControllerSpec, :show, id: '10', l: 'en').should == ["/users/l/en/blogs/10/show", {}]
70
- @router.decode("/users/l/en/blogs/10/show", {}).should == [BlogControllerSpec, :show, {id: '10', l: 'en'}]
69
+ @router.encode(BlogController, :show, id: '10', l: 'en').should == ["/en/blogs/10/show", {url_root: '/users'}]
70
+ @router.decode("/users/en/blogs/10/show", {}).should == [BlogController, :show, {id: '10', l: 'en'}]
71
71
  end
72
72
 
73
73
  it "should be able to use alias for prefix parameter" do
74
- @router.add :blogs, class: BlogControllerSpec, prefix: [:l, [:space_id, 'space']]
74
+ @router.add :blogs, class_name: 'BlogController', prefix: [:l, :space_id]
75
75
 
76
- @router.encode(BlogControllerSpec, :show, l: 'en', space_id: 'personal').should == ["/l/en/space/personal/blogs/show", {}]
77
- @router.decode("/l/en/space/personal/blogs/show", {}).should == [BlogControllerSpec, :show, {l: 'en', space_id: 'personal'}]
76
+ @router.encode(BlogController, :show, l: 'en', space_id: 'personal').should == ["/en/personal/blogs/show", {}]
77
+ @router.decode("/en/personal/blogs/show", {}).should == [BlogController, :show, {l: 'en', space_id: 'personal'}]
78
78
  end
79
79
  end
80
80
 
81
81
  describe "micelaneous check" do
82
82
  it "should allow only plural form in resource definition" do
83
- lambda{@router.add :blog, class: BlogControllerSpec}.should raise_error(/plural/)
84
- @router.add :blogs, class: BlogControllerSpec
83
+ lambda{@router.add :blog, class_name: 'BlogController'}.should raise_error(/plural/)
84
+ @router.add :blogs, class_name: 'BlogController'
85
85
  end
86
86
 
87
87
  it "shouldn't allow slashes in resource name" do
88
- lambda{@router.add '/admin/blogs', class: BlogControllerSpec}.should raise_error(/\//)
88
+ lambda{@router.add '/admin/blogs', class_name: 'BlogController'}.should raise_error(/\//)
89
89
  end
90
90
 
91
91
  it "should correctly works with unknown routes" do
92
- @router.encode(BlogControllerSpec, :show, {}).should be_nil
93
- @router.encode_method('show_blog_path').should be_nil
94
- @router.encode_method('show_blogs_path').should be_nil
92
+ @router.encode(BlogController, :show, {}).should be_nil
93
+ @router.encode_method('show_blog_path', false).should be_nil
94
+ @router.encode_method('show_blogs_path', false).should be_nil
95
95
  @router.decode("/blogs/show", {}).should be_nil
96
96
 
97
- @router.encode(BlogControllerSpec, :show, id: '10', view: 'full').should be_nil
98
- @router.encode_method('show_blog_path').should be_nil
99
- @router.encode_method('show_blogs_path').should be_nil
97
+ @router.encode(BlogController, :show, id: '10', view: 'full').should be_nil
98
+ @router.encode_method('show_blog_path', true).should be_nil
99
+ @router.encode_method('show_blogs_path', true).should be_nil
100
100
  @router.decode("/blogs/10/show", view: 'full').should be_nil
101
101
  end
102
102
  end
103
103
 
104
- it "should use :url_root" do
105
- @router.add :blogs, class: BlogControllerSpec, url_root: '/users'
104
+ describe ":url_root" do
105
+ it "should use :url_root" do
106
+ @router.add :blogs, class_name: 'BlogController', url_root: '/users'
106
107
 
107
- @router.encode(BlogControllerSpec, :show, {}).should == ["/users/blogs/show", {}]
108
- @router.decode("/users/blogs/show", {}).should == [BlogControllerSpec, :show, {}]
108
+ @router.encode(BlogController, :show, {}).should == ["/blogs/show", {url_root: '/users'}]
109
+ @router.decode("/users/blogs/show", {}).should == [BlogController, :show, {}]
109
110
 
110
- @router.encode(BlogControllerSpec, :show, id: '10').should == ["/users/blogs/10/show", {}]
111
- @router.decode("/users/blogs/10/show", {}).should == [BlogControllerSpec, :show, {id: '10'}]
112
- end
111
+ @router.encode(BlogController, :show, id: '10').should == ["/blogs/10/show", {url_root: '/users'}]
112
+ @router.decode("/users/blogs/10/show", {}).should == [BlogController, :show, {id: '10'}]
113
+ end
114
+
115
+ it "should ignore slash" do
116
+ @router.add :blogs, class_name: 'BlogController', url_root: '/'
117
+
118
+ @router.encode(BlogController, :show, {}).should == ["/blogs/show", {}]
119
+ @router.decode("/blogs/show", {}).should == [BlogController, :show, {}]
120
+ end
121
+ end
113
122
 
114
123
  it "input validation" do
115
- lambda{@router.add :blogs, class: BlogControllerSpec, invalid: 'value'}.should raise_error(/unknown/)
124
+ lambda{@router.add :blogs, class_name: 'BlogController', invalid: 'value'}.should raise_error(/unknown/)
116
125
  lambda{@router.add :blogs}.should raise_error(/class/)
117
- lambda{@router.add :blogs, class: BlogControllerSpec, url_root: 'users'}.should raise_error(/\//)
118
- lambda{@router.add :blogs, class: BlogControllerSpec, prefix: []}.should raise_error(/empty/)
126
+ lambda{@router.add :blogs, class_name: 'BlogController', url_root: 'users'}.should raise_error(/\//)
119
127
  end
120
128
  end