rango 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1046) hide show
  1. data/CONTRIBUTORS +2 -0
  2. data/README.textile +9 -10
  3. data/benchmarks/ab.rb +6 -0
  4. data/benchmarks/bm/boot.rb +20 -0
  5. data/{lib/rango/helpers/spec/fixture/app/views/foo/bar.html.erb → benchmarks/bm/callbacks.rb} +0 -0
  6. data/benchmarks/bm/request.rb +4 -0
  7. data/benchmarks/bm/routers.rb +22 -0
  8. data/benchmarks/bm/stack.rb +19 -0
  9. data/{spec/rango/auth/core/authenticated_helper_spec.rb → benchmarks/bm/templates.rb} +0 -0
  10. data/benchmarks/helper.rb +7 -0
  11. data/benchmarks/stubs/merb-app/Rakefile +35 -0
  12. data/benchmarks/stubs/merb-app/app/controllers/application.rb +4 -0
  13. data/benchmarks/stubs/merb-app/app/controllers/exceptions.rb +15 -0
  14. data/benchmarks/stubs/merb-app/app/helpers/global_helpers.rb +7 -0
  15. data/benchmarks/stubs/merb-app/app/models/user.rb +19 -0
  16. data/benchmarks/stubs/merb-app/app/views/exceptions/not_acceptable.html.erb +63 -0
  17. data/benchmarks/stubs/merb-app/app/views/exceptions/not_found.html.erb +47 -0
  18. data/benchmarks/stubs/merb-app/app/views/layout/application.html.erb +12 -0
  19. data/benchmarks/stubs/merb-app/autotest/discover.rb +4 -0
  20. data/benchmarks/stubs/merb-app/autotest/merb.rb +154 -0
  21. data/benchmarks/stubs/merb-app/autotest/merb_rspec.rb +167 -0
  22. data/benchmarks/stubs/merb-app/config/database.yml +33 -0
  23. data/benchmarks/stubs/merb-app/config/dependencies.rb +36 -0
  24. data/benchmarks/stubs/merb-app/config/environments/development.rb +17 -0
  25. data/benchmarks/stubs/merb-app/config/environments/production.rb +12 -0
  26. data/benchmarks/stubs/merb-app/config/environments/rake.rb +13 -0
  27. data/benchmarks/stubs/merb-app/config/environments/staging.rb +12 -0
  28. data/benchmarks/stubs/merb-app/config/environments/test.rb +14 -0
  29. data/benchmarks/stubs/merb-app/config/init.rb +26 -0
  30. data/benchmarks/stubs/merb-app/config/rack.rb +13 -0
  31. data/benchmarks/stubs/merb-app/config/router.rb +46 -0
  32. data/benchmarks/stubs/merb-app/doc/rdoc/generators/merb_generator.rb +1364 -0
  33. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/api_grease.js +640 -0
  34. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/index.html.erb +37 -0
  35. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb.css +252 -0
  36. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb.rb +353 -0
  37. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/merb_doc_styles.css +492 -0
  38. data/benchmarks/stubs/merb-app/doc/rdoc/generators/template/merb/prototype.js +2515 -0
  39. data/benchmarks/stubs/merb-app/merb/merb-auth/setup.rb +46 -0
  40. data/benchmarks/stubs/merb-app/merb/merb-auth/strategies.rb +13 -0
  41. data/benchmarks/stubs/merb-app/merb/session/session.rb +11 -0
  42. data/benchmarks/stubs/merb-app/public/favicon.ico +0 -0
  43. data/benchmarks/stubs/merb-app/public/images/merb.jpg +0 -0
  44. data/benchmarks/stubs/merb-app/public/javascripts/application.js +1 -0
  45. data/benchmarks/stubs/merb-app/public/javascripts/jquery.js +19 -0
  46. data/benchmarks/stubs/merb-app/public/merb.fcgi +22 -0
  47. data/benchmarks/stubs/merb-app/public/robots.txt +5 -0
  48. data/benchmarks/stubs/merb-app/public/stylesheets/master.css +119 -0
  49. data/{spec/rango/auth/core/authentication_spec.rb → benchmarks/stubs/merb-app/spec/spec.opts} +0 -0
  50. data/benchmarks/stubs/merb-app/spec/spec_helper.rb +27 -0
  51. data/benchmarks/stubs/merb-app/tasks/doc.thor +151 -0
  52. data/benchmarks/stubs/merb-app/tasks/merb.thor/app_script.rb +33 -0
  53. data/benchmarks/stubs/merb-app/tasks/merb.thor/common.rb +70 -0
  54. data/benchmarks/stubs/merb-app/tasks/merb.thor/gem_ext.rb +127 -0
  55. data/benchmarks/stubs/merb-app/tasks/merb.thor/main.thor +152 -0
  56. data/benchmarks/stubs/merb-app/tasks/merb.thor/ops.rb +95 -0
  57. data/benchmarks/stubs/merb-app/tasks/merb.thor/utils.rb +42 -0
  58. data/benchmarks/stubs/merb-core/Rakefile +35 -0
  59. data/benchmarks/stubs/merb-core/app/controllers/application.rb +4 -0
  60. data/benchmarks/stubs/merb-core/app/controllers/exceptions.rb +15 -0
  61. data/benchmarks/stubs/merb-core/app/helpers/global_helpers.rb +7 -0
  62. data/benchmarks/stubs/merb-core/app/views/exceptions/not_acceptable.html.erb +63 -0
  63. data/benchmarks/stubs/merb-core/app/views/exceptions/not_found.html.erb +47 -0
  64. data/benchmarks/stubs/merb-core/app/views/layout/application.html.erb +12 -0
  65. data/benchmarks/stubs/merb-core/autotest/discover.rb +1 -0
  66. data/benchmarks/stubs/merb-core/autotest/merb.rb +151 -0
  67. data/benchmarks/stubs/merb-core/autotest/merb_rspec.rb +167 -0
  68. data/benchmarks/stubs/merb-core/config/environments/development.rb +17 -0
  69. data/benchmarks/stubs/merb-core/config/environments/production.rb +12 -0
  70. data/benchmarks/stubs/merb-core/config/environments/rake.rb +13 -0
  71. data/benchmarks/stubs/merb-core/config/environments/staging.rb +12 -0
  72. data/benchmarks/stubs/merb-core/config/environments/test.rb +14 -0
  73. data/benchmarks/stubs/merb-core/config/init.rb +27 -0
  74. data/benchmarks/stubs/merb-core/config/rack.rb +13 -0
  75. data/benchmarks/stubs/merb-core/config/router.rb +43 -0
  76. data/benchmarks/stubs/merb-core/doc/rdoc/generators/merb_generator.rb +1364 -0
  77. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/api_grease.js +640 -0
  78. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/index.html.erb +37 -0
  79. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb.css +252 -0
  80. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb.rb +353 -0
  81. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/merb_doc_styles.css +492 -0
  82. data/benchmarks/stubs/merb-core/doc/rdoc/generators/template/merb/prototype.js +2515 -0
  83. data/benchmarks/stubs/merb-core/public/favicon.ico +0 -0
  84. data/benchmarks/stubs/merb-core/public/images/merb.jpg +0 -0
  85. data/benchmarks/stubs/merb-core/public/javascripts/application.js +1 -0
  86. data/benchmarks/stubs/merb-core/public/merb.fcgi +22 -0
  87. data/benchmarks/stubs/merb-core/public/robots.txt +5 -0
  88. data/benchmarks/stubs/merb-core/public/stylesheets/master.css +119 -0
  89. data/{spec/rango/auth/core/callbacks_spec.rb → benchmarks/stubs/merb-core/spec/spec.opts} +0 -0
  90. data/benchmarks/stubs/merb-core/spec/spec_helper.rb +22 -0
  91. data/benchmarks/stubs/merb-core/tasks/merb.thor/app_script.rb +33 -0
  92. data/benchmarks/stubs/merb-core/tasks/merb.thor/common.rb +70 -0
  93. data/benchmarks/stubs/merb-core/tasks/merb.thor/gem_ext.rb +127 -0
  94. data/benchmarks/stubs/merb-core/tasks/merb.thor/main.thor +152 -0
  95. data/benchmarks/stubs/merb-core/tasks/merb.thor/ops.rb +95 -0
  96. data/benchmarks/stubs/merb-core/tasks/merb.thor/utils.rb +42 -0
  97. data/benchmarks/stubs/merb-flat/README.txt +10 -0
  98. data/benchmarks/stubs/merb-flat/Rakefile +35 -0
  99. data/benchmarks/stubs/merb-flat/application.rb +17 -0
  100. data/benchmarks/stubs/merb-flat/config/framework.rb +9 -0
  101. data/benchmarks/stubs/merb-flat/config/init.rb +42 -0
  102. data/benchmarks/stubs/merb-flat/spec/spec_helper.rb +26 -0
  103. data/benchmarks/stubs/merb-flat/tasks/merb.thor/app_script.rb +33 -0
  104. data/benchmarks/stubs/merb-flat/tasks/merb.thor/common.rb +70 -0
  105. data/benchmarks/stubs/merb-flat/tasks/merb.thor/gem_ext.rb +127 -0
  106. data/benchmarks/stubs/merb-flat/tasks/merb.thor/main.thor +152 -0
  107. data/benchmarks/stubs/merb-flat/tasks/merb.thor/ops.rb +95 -0
  108. data/benchmarks/stubs/merb-flat/tasks/merb.thor/utils.rb +42 -0
  109. data/benchmarks/stubs/merb-flat/views/foo.html.erb +3 -0
  110. data/benchmarks/stubs/merb-very-flat/Rakefile +35 -0
  111. data/benchmarks/stubs/merb-very-flat/merb-very-flat.rb +61 -0
  112. data/benchmarks/stubs/merb-very-flat/spec/spec_helper.rb +26 -0
  113. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/app_script.rb +33 -0
  114. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/common.rb +70 -0
  115. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/gem_ext.rb +127 -0
  116. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/main.thor +152 -0
  117. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/ops.rb +95 -0
  118. data/benchmarks/stubs/merb-very-flat/tasks/merb.thor/utils.rb +42 -0
  119. data/benchmarks/stubs/rails/README +243 -0
  120. data/benchmarks/stubs/rails/Rakefile +10 -0
  121. data/benchmarks/stubs/rails/app/controllers/application_controller.rb +12 -0
  122. data/benchmarks/stubs/rails/app/helpers/application_helper.rb +5 -0
  123. data/benchmarks/stubs/rails/config/boot.rb +112 -0
  124. data/benchmarks/stubs/rails/config/database.yml +22 -0
  125. data/benchmarks/stubs/rails/config/environment.rb +43 -0
  126. data/benchmarks/stubs/rails/config/environments/development.rb +19 -0
  127. data/benchmarks/stubs/rails/config/environments/production.rb +30 -0
  128. data/benchmarks/stubs/rails/config/environments/test.rb +30 -0
  129. data/benchmarks/stubs/rails/config/initializers/backtrace_silencers.rb +9 -0
  130. data/benchmarks/stubs/rails/config/initializers/inflections.rb +12 -0
  131. data/benchmarks/stubs/rails/config/initializers/mime_types.rb +7 -0
  132. data/benchmarks/stubs/rails/config/initializers/new_rails_defaults.rb +21 -0
  133. data/benchmarks/stubs/rails/config/initializers/session_store.rb +17 -0
  134. data/benchmarks/stubs/rails/config/locales/en.yml +5 -0
  135. data/benchmarks/stubs/rails/config/routes.rb +45 -0
  136. data/benchmarks/stubs/rails/doc/README_FOR_APP +2 -0
  137. data/{spec/rango/auth/core/errors_spec.rb → benchmarks/stubs/rails/log/development.log} +0 -0
  138. data/{spec/rango/auth/core/responses_spec.rb → benchmarks/stubs/rails/log/production.log} +0 -0
  139. data/{spec/rango/auth/core/session_mixin_spec.rb → benchmarks/stubs/rails/log/server.log} +0 -0
  140. data/{spec/rango/auth/core/spec/helpers/authentication_helper_spec_spec.rb → benchmarks/stubs/rails/log/test.log} +0 -0
  141. data/benchmarks/stubs/rails/public/404.html +30 -0
  142. data/benchmarks/stubs/rails/public/422.html +30 -0
  143. data/benchmarks/stubs/rails/public/500.html +30 -0
  144. data/{spec/rango/auth/core/spec/merb-auth-core/activation_fixture_spec.rb → benchmarks/stubs/rails/public/favicon.ico} +0 -0
  145. data/benchmarks/stubs/rails/public/images/rails.png +0 -0
  146. data/benchmarks/stubs/rails/public/index.html +275 -0
  147. data/benchmarks/stubs/rails/public/javascripts/application.js +2 -0
  148. data/benchmarks/stubs/rails/public/javascripts/controls.js +963 -0
  149. data/benchmarks/stubs/rails/public/javascripts/dragdrop.js +973 -0
  150. data/benchmarks/stubs/rails/public/javascripts/effects.js +1128 -0
  151. data/benchmarks/stubs/rails/public/javascripts/prototype.js +4320 -0
  152. data/benchmarks/stubs/rails/public/robots.txt +5 -0
  153. data/benchmarks/stubs/rails/script/about +4 -0
  154. data/benchmarks/stubs/rails/script/console +3 -0
  155. data/benchmarks/stubs/rails/script/dbconsole +3 -0
  156. data/benchmarks/stubs/rails/script/destroy +3 -0
  157. data/benchmarks/stubs/rails/script/generate +3 -0
  158. data/benchmarks/stubs/rails/script/performance/benchmarker +3 -0
  159. data/benchmarks/stubs/rails/script/performance/profiler +3 -0
  160. data/benchmarks/stubs/rails/script/plugin +3 -0
  161. data/benchmarks/stubs/rails/script/runner +3 -0
  162. data/benchmarks/stubs/rails/script/server +3 -0
  163. data/benchmarks/stubs/rails/test/performance/browsing_test.rb +11 -0
  164. data/benchmarks/stubs/rails/test/test_helper.rb +40 -0
  165. data/{spec/rango/auth/core/spec/merb-auth-core/authentication_spec_spec.rb → benchmarks/stubs/ramaze.rb} +0 -0
  166. data/benchmarks/stubs/sinatra.rb +11 -0
  167. data/bin/rango +10 -9
  168. data/cucumber.yml +1 -0
  169. data/doc/0.0.3/Array.html +354 -0
  170. data/doc/0.0.3/AttributeMixin.html +697 -0
  171. data/doc/0.0.3/Class.html +102 -0
  172. data/doc/0.0.3/ColoredString.html +476 -0
  173. data/doc/0.0.3/Enumerable.html +256 -0
  174. data/doc/0.0.3/File.html +909 -0
  175. data/doc/0.0.3/Hash.html +1586 -0
  176. data/doc/0.0.3/Kernel.html +956 -0
  177. data/doc/0.0.3/OS.html +740 -0
  178. data/doc/0.0.3/Object.html +466 -0
  179. data/doc/0.0.3/ObjectSpace.html +184 -0
  180. data/doc/0.0.3/Path.html +2499 -0
  181. data/doc/0.0.3/Range.html +190 -0
  182. data/doc/0.0.3/Rango.html +379 -0
  183. data/doc/0.0.3/Rango/ApplicationMixin.html +396 -0
  184. data/doc/0.0.3/Rango/Bundling.html +23 -0
  185. data/doc/0.0.3/Rango/Bundling/RequireStrategy.html +283 -0
  186. data/doc/0.0.3/Rango/Bundling/Strategy.html +703 -0
  187. data/doc/0.0.3/Rango/CLI.html +23 -0
  188. data/doc/0.0.3/Rango/CLI/Generator.html +762 -0
  189. data/doc/0.0.3/Rango/CLI/Templater.html +258 -0
  190. data/doc/0.0.3/Rango/CallableStrategy.html +300 -0
  191. data/doc/0.0.3/Rango/Chainable.html +181 -0
  192. data/doc/0.0.3/Rango/Configurable.html +199 -0
  193. data/doc/0.0.3/Rango/Controller.html +962 -0
  194. data/doc/0.0.3/Rango/ControllerMixin.html +860 -0
  195. data/doc/0.0.3/Rango/ControllerStrategy.html +264 -0
  196. data/doc/0.0.3/Rango/DependencyStrategy.html +116 -0
  197. data/doc/0.0.3/Rango/Dispatcher.html +305 -0
  198. data/doc/0.0.3/Rango/Form.html +162 -0
  199. data/doc/0.0.3/Rango/GemDependencyStrategy.html +210 -0
  200. data/doc/0.0.3/Rango/Generator.html +93 -0
  201. data/doc/0.0.3/Rango/GenericViews.html +128 -0
  202. data/doc/0.0.3/Rango/GitDependencyStrategy.html +224 -0
  203. data/doc/0.0.3/Rango/GithubDependencyStrategy.html +118 -0
  204. data/doc/0.0.3/Rango/Handler.html +474 -0
  205. data/doc/0.0.3/Rango/Helpers.html +1335 -0
  206. data/doc/0.0.3/Rango/Hookable.html +202 -0
  207. data/doc/0.0.3/Rango/ImportMixin.html +755 -0
  208. data/doc/0.0.3/Rango/Logger.html +920 -0
  209. data/doc/0.0.3/Rango/Mini.html +117 -0
  210. data/doc/0.0.3/Rango/ModelForm.html +42 -0
  211. data/doc/0.0.3/Rango/Project.html +516 -0
  212. data/doc/0.0.3/Rango/RenderMixin.html +23 -0
  213. data/doc/0.0.3/Rango/Request.html +1177 -0
  214. data/doc/0.0.3/Rango/Route.html +751 -0
  215. data/doc/0.0.3/Rango/Router.html +42 -0
  216. data/doc/0.0.3/Rango/Router/Dispatcher.html +311 -0
  217. data/doc/0.0.3/Rango/RouterStrategy.html +258 -0
  218. data/doc/0.0.3/Rango/Session.html +23 -0
  219. data/doc/0.0.3/Rango/Settings.html +23 -0
  220. data/doc/0.0.3/Rango/Settings/Erubis.html +23 -0
  221. data/doc/0.0.3/Rango/Settings/Framework.html +254 -0
  222. data/doc/0.0.3/Rango/Settings/Haml.html +23 -0
  223. data/doc/0.0.3/Rango/Settings/Template.html +23 -0
  224. data/doc/0.0.3/Rango/SimpleTemplate.html +187 -0
  225. data/doc/0.0.3/Rango/StrategyMixin.html +261 -0
  226. data/doc/0.0.3/Rango/Tasks.html +219 -0
  227. data/doc/0.0.3/Rango/Template.html +95 -0
  228. data/doc/0.0.3/Rango/Template/Adapter.html +90 -0
  229. data/doc/0.0.3/Rango/Templates.html +116 -0
  230. data/doc/0.0.3/Rango/Templates/Adapter.html +128 -0
  231. data/doc/0.0.3/Rango/Templates/Template.html +636 -0
  232. data/doc/0.0.3/Rango/Templates/TemplateHelpers.html +328 -0
  233. data/doc/0.0.3/RangoThor.html +205 -0
  234. data/doc/0.0.3/String.html +307 -0
  235. data/doc/0.0.3/Time.html +193 -0
  236. data/doc/0.0.3/TimeDSL.html +601 -0
  237. data/doc/0.0.3/all-methods.html +1908 -0
  238. data/doc/0.0.3/all-namespaces.html +114 -0
  239. data/doc/0.0.3/app.js +18 -0
  240. data/doc/0.0.3/head/Array.html +354 -0
  241. data/doc/0.0.3/head/AttributeMixin.html +697 -0
  242. data/doc/0.0.3/head/Class.html +102 -0
  243. data/doc/0.0.3/head/ColoredString.html +476 -0
  244. data/doc/0.0.3/head/Enumerable.html +256 -0
  245. data/doc/0.0.3/head/File.html +909 -0
  246. data/doc/0.0.3/head/Hash.html +1586 -0
  247. data/doc/0.0.3/head/Kernel.html +956 -0
  248. data/doc/0.0.3/head/OS.html +740 -0
  249. data/doc/0.0.3/head/Object.html +466 -0
  250. data/doc/0.0.3/head/ObjectSpace.html +184 -0
  251. data/doc/0.0.3/head/Path.html +2499 -0
  252. data/doc/0.0.3/head/Range.html +190 -0
  253. data/doc/0.0.3/head/Rango.html +379 -0
  254. data/doc/0.0.3/head/Rango/ApplicationMixin.html +396 -0
  255. data/doc/0.0.3/head/Rango/Bundling.html +23 -0
  256. data/doc/0.0.3/head/Rango/Bundling/RequireStrategy.html +283 -0
  257. data/doc/0.0.3/head/Rango/Bundling/Strategy.html +703 -0
  258. data/doc/0.0.3/head/Rango/CLI.html +23 -0
  259. data/doc/0.0.3/head/Rango/CLI/Generator.html +762 -0
  260. data/doc/0.0.3/head/Rango/CLI/Templater.html +258 -0
  261. data/doc/0.0.3/head/Rango/CallableStrategy.html +300 -0
  262. data/doc/0.0.3/head/Rango/Chainable.html +181 -0
  263. data/doc/0.0.3/head/Rango/Configurable.html +199 -0
  264. data/doc/0.0.3/head/Rango/Controller.html +962 -0
  265. data/doc/0.0.3/head/Rango/ControllerMixin.html +860 -0
  266. data/doc/0.0.3/head/Rango/ControllerStrategy.html +264 -0
  267. data/doc/0.0.3/head/Rango/DependencyStrategy.html +116 -0
  268. data/doc/0.0.3/head/Rango/Dispatcher.html +305 -0
  269. data/doc/0.0.3/head/Rango/Form.html +162 -0
  270. data/doc/0.0.3/head/Rango/GemDependencyStrategy.html +210 -0
  271. data/doc/0.0.3/head/Rango/Generator.html +93 -0
  272. data/doc/0.0.3/head/Rango/GenericViews.html +128 -0
  273. data/doc/0.0.3/head/Rango/GitDependencyStrategy.html +224 -0
  274. data/doc/0.0.3/head/Rango/GithubDependencyStrategy.html +118 -0
  275. data/doc/0.0.3/head/Rango/Handler.html +474 -0
  276. data/doc/0.0.3/head/Rango/Helpers.html +1335 -0
  277. data/doc/0.0.3/head/Rango/Hookable.html +202 -0
  278. data/doc/0.0.3/head/Rango/ImportMixin.html +755 -0
  279. data/doc/0.0.3/head/Rango/Logger.html +920 -0
  280. data/doc/0.0.3/head/Rango/Mini.html +117 -0
  281. data/doc/0.0.3/head/Rango/ModelForm.html +42 -0
  282. data/doc/0.0.3/head/Rango/Project.html +516 -0
  283. data/doc/0.0.3/head/Rango/RenderMixin.html +23 -0
  284. data/doc/0.0.3/head/Rango/Request.html +1177 -0
  285. data/doc/0.0.3/head/Rango/Route.html +751 -0
  286. data/doc/0.0.3/head/Rango/Router.html +42 -0
  287. data/doc/0.0.3/head/Rango/Router/Dispatcher.html +311 -0
  288. data/doc/0.0.3/head/Rango/RouterStrategy.html +258 -0
  289. data/doc/0.0.3/head/Rango/Session.html +23 -0
  290. data/doc/0.0.3/head/Rango/Settings.html +23 -0
  291. data/doc/0.0.3/head/Rango/Settings/Erubis.html +23 -0
  292. data/doc/0.0.3/head/Rango/Settings/Framework.html +254 -0
  293. data/doc/0.0.3/head/Rango/Settings/Haml.html +23 -0
  294. data/doc/0.0.3/head/Rango/Settings/Template.html +23 -0
  295. data/doc/0.0.3/head/Rango/SimpleTemplate.html +187 -0
  296. data/doc/0.0.3/head/Rango/StrategyMixin.html +261 -0
  297. data/doc/0.0.3/head/Rango/Tasks.html +219 -0
  298. data/doc/0.0.3/head/Rango/Template.html +95 -0
  299. data/doc/0.0.3/head/Rango/Template/Adapter.html +90 -0
  300. data/doc/0.0.3/head/Rango/Templates.html +116 -0
  301. data/doc/0.0.3/head/Rango/Templates/Adapter.html +128 -0
  302. data/doc/0.0.3/head/Rango/Templates/Template.html +636 -0
  303. data/doc/0.0.3/head/Rango/Templates/TemplateHelpers.html +328 -0
  304. data/doc/0.0.3/head/RangoThor.html +205 -0
  305. data/doc/0.0.3/head/String.html +307 -0
  306. data/doc/0.0.3/head/Time.html +193 -0
  307. data/doc/0.0.3/head/TimeDSL.html +601 -0
  308. data/doc/0.0.3/head/all-methods.html +1908 -0
  309. data/doc/0.0.3/head/all-namespaces.html +114 -0
  310. data/doc/0.0.3/head/app.js +18 -0
  311. data/doc/0.0.3/head/index.html +18 -0
  312. data/doc/0.0.3/head/jquery.js +11 -0
  313. data/doc/0.0.3/head/readme.html +36 -0
  314. data/doc/0.0.3/head/style.css +68 -0
  315. data/doc/0.0.3/head/syntax_highlight.css +21 -0
  316. data/doc/0.0.3/index.html +18 -0
  317. data/doc/0.0.3/jquery.js +11 -0
  318. data/doc/0.0.3/readme.html +36 -0
  319. data/doc/0.0.3/style.css +68 -0
  320. data/doc/0.0.3/syntax_highlight.css +21 -0
  321. data/doc/0.0.4/Array.html +354 -0
  322. data/doc/0.0.4/AttributeMixin.html +697 -0
  323. data/doc/0.0.4/Class.html +102 -0
  324. data/doc/0.0.4/ColoredString.html +476 -0
  325. data/doc/0.0.4/Enumerable.html +256 -0
  326. data/doc/0.0.4/File.html +909 -0
  327. data/doc/0.0.4/Hash.html +1586 -0
  328. data/doc/0.0.4/Kernel.html +956 -0
  329. data/doc/0.0.4/OS.html +740 -0
  330. data/doc/0.0.4/Object.html +466 -0
  331. data/doc/0.0.4/ObjectSpace.html +184 -0
  332. data/doc/0.0.4/Path.html +2499 -0
  333. data/doc/0.0.4/Range.html +190 -0
  334. data/doc/0.0.4/Rango.html +379 -0
  335. data/doc/0.0.4/Rango/ApplicationMixin.html +396 -0
  336. data/doc/0.0.4/Rango/Bundling.html +23 -0
  337. data/doc/0.0.4/Rango/Bundling/RequireStrategy.html +283 -0
  338. data/doc/0.0.4/Rango/Bundling/Strategy.html +703 -0
  339. data/doc/0.0.4/Rango/CLI.html +23 -0
  340. data/doc/0.0.4/Rango/CLI/Generator.html +762 -0
  341. data/doc/0.0.4/Rango/CLI/Templater.html +258 -0
  342. data/doc/0.0.4/Rango/CallableStrategy.html +300 -0
  343. data/doc/0.0.4/Rango/Chainable.html +181 -0
  344. data/doc/0.0.4/Rango/Configurable.html +199 -0
  345. data/doc/0.0.4/Rango/Controller.html +962 -0
  346. data/doc/0.0.4/Rango/ControllerMixin.html +860 -0
  347. data/doc/0.0.4/Rango/ControllerStrategy.html +264 -0
  348. data/doc/0.0.4/Rango/DependencyStrategy.html +116 -0
  349. data/doc/0.0.4/Rango/Dispatcher.html +305 -0
  350. data/doc/0.0.4/Rango/Form.html +162 -0
  351. data/doc/0.0.4/Rango/GemDependencyStrategy.html +210 -0
  352. data/doc/0.0.4/Rango/Generator.html +93 -0
  353. data/doc/0.0.4/Rango/GenericViews.html +128 -0
  354. data/doc/0.0.4/Rango/GitDependencyStrategy.html +224 -0
  355. data/doc/0.0.4/Rango/GithubDependencyStrategy.html +118 -0
  356. data/doc/0.0.4/Rango/Handler.html +474 -0
  357. data/doc/0.0.4/Rango/Helpers.html +1335 -0
  358. data/doc/0.0.4/Rango/Hookable.html +202 -0
  359. data/doc/0.0.4/Rango/ImportMixin.html +755 -0
  360. data/doc/0.0.4/Rango/Logger.html +920 -0
  361. data/doc/0.0.4/Rango/Mini.html +117 -0
  362. data/doc/0.0.4/Rango/ModelForm.html +42 -0
  363. data/doc/0.0.4/Rango/Project.html +516 -0
  364. data/doc/0.0.4/Rango/RenderMixin.html +23 -0
  365. data/doc/0.0.4/Rango/Request.html +1177 -0
  366. data/doc/0.0.4/Rango/Route.html +751 -0
  367. data/doc/0.0.4/Rango/Router.html +42 -0
  368. data/doc/0.0.4/Rango/Router/Dispatcher.html +311 -0
  369. data/doc/0.0.4/Rango/RouterStrategy.html +258 -0
  370. data/doc/0.0.4/Rango/Session.html +23 -0
  371. data/doc/0.0.4/Rango/Settings.html +23 -0
  372. data/doc/0.0.4/Rango/Settings/Erubis.html +23 -0
  373. data/doc/0.0.4/Rango/Settings/Framework.html +254 -0
  374. data/doc/0.0.4/Rango/Settings/Haml.html +23 -0
  375. data/doc/0.0.4/Rango/Settings/Template.html +23 -0
  376. data/doc/0.0.4/Rango/SimpleTemplate.html +187 -0
  377. data/doc/0.0.4/Rango/StrategyMixin.html +261 -0
  378. data/doc/0.0.4/Rango/Tasks.html +219 -0
  379. data/doc/0.0.4/Rango/Template.html +95 -0
  380. data/doc/0.0.4/Rango/Template/Adapter.html +90 -0
  381. data/doc/0.0.4/Rango/Templates.html +116 -0
  382. data/doc/0.0.4/Rango/Templates/Adapter.html +128 -0
  383. data/doc/0.0.4/Rango/Templates/Template.html +636 -0
  384. data/doc/0.0.4/Rango/Templates/TemplateHelpers.html +328 -0
  385. data/doc/0.0.4/RangoThor.html +205 -0
  386. data/doc/0.0.4/String.html +307 -0
  387. data/doc/0.0.4/Time.html +193 -0
  388. data/doc/0.0.4/TimeDSL.html +601 -0
  389. data/doc/0.0.4/all-methods.html +1908 -0
  390. data/doc/0.0.4/all-namespaces.html +114 -0
  391. data/doc/0.0.4/app.js +18 -0
  392. data/doc/0.0.4/head/Array.html +354 -0
  393. data/doc/0.0.4/head/AttributeMixin.html +697 -0
  394. data/doc/0.0.4/head/Class.html +102 -0
  395. data/doc/0.0.4/head/ColoredString.html +476 -0
  396. data/doc/0.0.4/head/Enumerable.html +256 -0
  397. data/doc/0.0.4/head/File.html +909 -0
  398. data/doc/0.0.4/head/Hash.html +1586 -0
  399. data/doc/0.0.4/head/Kernel.html +956 -0
  400. data/doc/0.0.4/head/OS.html +740 -0
  401. data/doc/0.0.4/head/Object.html +466 -0
  402. data/doc/0.0.4/head/ObjectSpace.html +184 -0
  403. data/doc/0.0.4/head/Path.html +2499 -0
  404. data/doc/0.0.4/head/Range.html +190 -0
  405. data/doc/0.0.4/head/Rango.html +379 -0
  406. data/doc/0.0.4/head/Rango/ApplicationMixin.html +396 -0
  407. data/doc/0.0.4/head/Rango/Bundling.html +23 -0
  408. data/doc/0.0.4/head/Rango/Bundling/RequireStrategy.html +283 -0
  409. data/doc/0.0.4/head/Rango/Bundling/Strategy.html +703 -0
  410. data/doc/0.0.4/head/Rango/CLI.html +23 -0
  411. data/doc/0.0.4/head/Rango/CLI/Generator.html +762 -0
  412. data/doc/0.0.4/head/Rango/CLI/Templater.html +258 -0
  413. data/doc/0.0.4/head/Rango/CallableStrategy.html +300 -0
  414. data/doc/0.0.4/head/Rango/Chainable.html +181 -0
  415. data/doc/0.0.4/head/Rango/Configurable.html +199 -0
  416. data/doc/0.0.4/head/Rango/Controller.html +962 -0
  417. data/doc/0.0.4/head/Rango/ControllerMixin.html +860 -0
  418. data/doc/0.0.4/head/Rango/ControllerStrategy.html +264 -0
  419. data/doc/0.0.4/head/Rango/DependencyStrategy.html +116 -0
  420. data/doc/0.0.4/head/Rango/Dispatcher.html +305 -0
  421. data/doc/0.0.4/head/Rango/Form.html +162 -0
  422. data/doc/0.0.4/head/Rango/GemDependencyStrategy.html +210 -0
  423. data/doc/0.0.4/head/Rango/Generator.html +93 -0
  424. data/doc/0.0.4/head/Rango/GenericViews.html +128 -0
  425. data/doc/0.0.4/head/Rango/GitDependencyStrategy.html +224 -0
  426. data/doc/0.0.4/head/Rango/GithubDependencyStrategy.html +118 -0
  427. data/doc/0.0.4/head/Rango/Handler.html +474 -0
  428. data/doc/0.0.4/head/Rango/Helpers.html +1335 -0
  429. data/doc/0.0.4/head/Rango/Hookable.html +202 -0
  430. data/doc/0.0.4/head/Rango/ImportMixin.html +755 -0
  431. data/doc/0.0.4/head/Rango/Logger.html +920 -0
  432. data/doc/0.0.4/head/Rango/Mini.html +117 -0
  433. data/doc/0.0.4/head/Rango/ModelForm.html +42 -0
  434. data/doc/0.0.4/head/Rango/Project.html +516 -0
  435. data/doc/0.0.4/head/Rango/RenderMixin.html +23 -0
  436. data/doc/0.0.4/head/Rango/Request.html +1177 -0
  437. data/doc/0.0.4/head/Rango/Route.html +751 -0
  438. data/doc/0.0.4/head/Rango/Router.html +42 -0
  439. data/doc/0.0.4/head/Rango/Router/Dispatcher.html +311 -0
  440. data/doc/0.0.4/head/Rango/RouterStrategy.html +258 -0
  441. data/doc/0.0.4/head/Rango/Session.html +23 -0
  442. data/doc/0.0.4/head/Rango/Settings.html +23 -0
  443. data/doc/0.0.4/head/Rango/Settings/Erubis.html +23 -0
  444. data/doc/0.0.4/head/Rango/Settings/Framework.html +254 -0
  445. data/doc/0.0.4/head/Rango/Settings/Haml.html +23 -0
  446. data/doc/0.0.4/head/Rango/Settings/Template.html +23 -0
  447. data/doc/0.0.4/head/Rango/SimpleTemplate.html +187 -0
  448. data/doc/0.0.4/head/Rango/StrategyMixin.html +261 -0
  449. data/doc/0.0.4/head/Rango/Tasks.html +219 -0
  450. data/doc/0.0.4/head/Rango/Template.html +95 -0
  451. data/doc/0.0.4/head/Rango/Template/Adapter.html +90 -0
  452. data/doc/0.0.4/head/Rango/Templates.html +116 -0
  453. data/doc/0.0.4/head/Rango/Templates/Adapter.html +128 -0
  454. data/doc/0.0.4/head/Rango/Templates/Template.html +636 -0
  455. data/doc/0.0.4/head/Rango/Templates/TemplateHelpers.html +328 -0
  456. data/doc/0.0.4/head/RangoThor.html +205 -0
  457. data/doc/0.0.4/head/String.html +307 -0
  458. data/doc/0.0.4/head/Time.html +193 -0
  459. data/doc/0.0.4/head/TimeDSL.html +601 -0
  460. data/doc/0.0.4/head/all-methods.html +1908 -0
  461. data/doc/0.0.4/head/all-namespaces.html +114 -0
  462. data/doc/0.0.4/head/app.js +18 -0
  463. data/doc/0.0.4/head/index.html +18 -0
  464. data/doc/0.0.4/head/jquery.js +11 -0
  465. data/doc/0.0.4/head/readme.html +36 -0
  466. data/doc/0.0.4/head/style.css +68 -0
  467. data/doc/0.0.4/head/syntax_highlight.css +21 -0
  468. data/doc/0.0.4/index.html +18 -0
  469. data/doc/0.0.4/jquery.js +11 -0
  470. data/doc/0.0.4/readme.html +36 -0
  471. data/doc/0.0.4/style.css +68 -0
  472. data/doc/0.0.4/syntax_highlight.css +21 -0
  473. data/doc/head/Array.html +247 -7
  474. data/doc/head/AttributeMixin.html +127 -43
  475. data/doc/head/ColoredString.html +1 -1
  476. data/doc/head/Enumerable.html +256 -0
  477. data/doc/head/File.html +909 -0
  478. data/doc/head/Hash.html +1043 -100
  479. data/doc/head/Kernel.html +378 -63
  480. data/doc/head/OS.html +740 -0
  481. data/doc/head/Object.html +363 -37
  482. data/doc/head/ObjectSpace.html +94 -13
  483. data/doc/head/Range.html +87 -6
  484. data/doc/head/Rango.html +21 -39
  485. data/doc/head/Rango/ApplicationMixin.html +4 -4
  486. data/doc/head/Rango/Bundling/RequireStrategy.html +1 -1
  487. data/doc/head/Rango/Bundling/Strategy.html +1 -1
  488. data/doc/head/Rango/CLI.html +23 -0
  489. data/doc/head/Rango/CLI/Generator.html +762 -0
  490. data/doc/head/Rango/CLI/Templater.html +258 -0
  491. data/doc/head/Rango/Chainable.html +14 -14
  492. data/doc/head/Rango/ControllerMixin.html +36 -36
  493. data/doc/head/Rango/Form.html +1 -1
  494. data/doc/head/Rango/Helpers.html +89 -25
  495. data/doc/head/Rango/Hookable.html +3 -3
  496. data/doc/head/Rango/Mini.html +117 -0
  497. data/doc/head/Rango/ModelForm.html +1 -1
  498. data/doc/head/Rango/Router.html +1 -1
  499. data/doc/head/Rango/Settings/Framework.html +64 -8
  500. data/doc/head/Rango/Settings/Template.html +23 -0
  501. data/doc/head/Rango/Tasks.html +10 -42
  502. data/doc/head/Rango/Templates/Adapter.html +1 -1
  503. data/doc/head/Rango/Templates/Template.html +21 -21
  504. data/doc/head/Rango/Templates/TemplateHelpers.html +12 -12
  505. data/doc/head/String.html +152 -8
  506. data/doc/head/Time.html +193 -0
  507. data/doc/head/TimeDSL.html +28 -39
  508. data/doc/head/all-methods.html +236 -340
  509. data/doc/head/all-namespaces.html +21 -21
  510. data/doc/head/readme.html +14 -12
  511. data/examples/README.textile +13 -0
  512. data/{spec/rango/auth/core/spec/merb-auth-core/callbacks_spec_spec.rb → examples/TODO} +0 -0
  513. data/examples/flat/basic.ru +31 -0
  514. data/examples/flat/generic_views.ru +16 -0
  515. data/examples/flat/info.ru +18 -0
  516. data/examples/flat/simple_controller.ru +1 -0
  517. data/examples/flat/templates/about/author.html.haml +1 -0
  518. data/{spec/rango/auth/core/spec/merb-auth-core/customizations_spec_spec.rb → examples/flat/templates/about/contact.html.haml} +0 -0
  519. data/{spec/rango/auth/core/spec/merb-auth-core/errors_spec_spec.rb → examples/flat/templates/base.html.haml} +0 -0
  520. data/examples/flat/templates/info.html.haml +25 -0
  521. data/examples/twitter/Thorfile +12 -0
  522. data/examples/twitter/config.ru +48 -0
  523. data/examples/twitter/development.db +0 -0
  524. data/examples/twitter/factories.rb +19 -0
  525. data/examples/twitter/init.rb +15 -0
  526. data/{spec/rango/auth/core/spec/merb-auth-core/failed_login_spec_spec.rb → examples/twitter/media/hello-static.txt} +0 -0
  527. data/examples/twitter/models.rb +13 -0
  528. data/examples/twitter/run.rb +8 -0
  529. data/examples/twitter/settings.rb +5 -0
  530. data/examples/twitter/settings_local.rb +6 -0
  531. data/examples/twitter/templates/base.html.haml +9 -0
  532. data/examples/twitter/templates/index.html.haml +4 -0
  533. data/examples/twitter/templates/show.html.haml +4 -0
  534. data/examples/twitter/templates/timeline.html.haml +10 -0
  535. data/examples/twitter/views.rb +40 -0
  536. data/features/TODO.txt +5 -0
  537. data/{spec/rango/auth/core/spec/merb-auth-core/merb-auth-core_spec_spec.rb → features/auth/warden.feature} +0 -0
  538. data/features/generators/app.feature +11 -0
  539. data/{spec/rango/auth/core/spec/merb-auth-core/router_helper_spec_spec.rb → features/generators/bigapp.feature} +0 -0
  540. data/{spec/rango/auth/core/spec/merb-auth-core/strategy_spec_spec.rb → features/generators/features.feature} +0 -0
  541. data/{spec/rango/auth/core/spec/spec_helper_spec.rb → features/generators/flat.feature} +0 -0
  542. data/{spec/rango/auth/core/strategy_spec.rb → features/generators/project.feature} +0 -0
  543. data/{spec/rango/auth/core_spec.rb → features/generators/pupu.feature} +0 -0
  544. data/{spec/rango/auth/more/mixins/redirect_back_spec.rb → features/generators/stub.feature} +0 -0
  545. data/features/generators_steps.rb +26 -0
  546. data/{spec/rango/auth/more/mixins/salted_user/ar_salted_user_spec.rb → features/routers/rack-router.feature} +0 -0
  547. data/{spec/rango/auth/more/mixins/salted_user/dm_salted_user_spec.rb → features/routers/rack.feature} +0 -0
  548. data/{spec/rango/auth/more/mixins/salted_user/relaxdb_salted_user_spec.rb → features/routers/urlmap.feature} +0 -0
  549. data/features/shared/given_steps.rb +1 -0
  550. data/features/shared/then_steps.rb +1 -0
  551. data/features/shared/when_steps.rb +1 -0
  552. data/features/support/env.rb +64 -0
  553. data/lib/rango.rb +15 -6
  554. data/lib/rango/boot.rb +36 -25
  555. data/lib/rango/bundling/dependency.rb +3 -7
  556. data/lib/rango/bundling/strategies/copy.rb +2 -2
  557. data/lib/rango/bundling/strategies/gem.rb +2 -2
  558. data/lib/rango/bundling/strategies/git.rb +2 -2
  559. data/lib/rango/bundling/strategies/hg.rb +2 -2
  560. data/lib/rango/bundling/strategy.rb +2 -2
  561. data/lib/rango/cli/generator.rb +119 -12
  562. data/lib/rango/cli/templater.rb +89 -0
  563. data/lib/rango/contrib/pagination.rb +5 -3
  564. data/lib/rango/contrib/pagination/adapters/datamapper.rb +2 -0
  565. data/lib/rango/contrib/pagination/helpers.rb +3 -1
  566. data/lib/rango/contrib/pagination/page.rb +2 -0
  567. data/lib/rango/contrib/pagination/strategies.rb +2 -2
  568. data/lib/rango/contrib/syndication.rb +1 -1
  569. data/lib/rango/controller.rb +151 -0
  570. data/lib/rango/exceptions.rb +90 -241
  571. data/lib/rango/ext.rb +85 -14
  572. data/lib/rango/ext/array.rb +20 -0
  573. data/lib/rango/ext/attribute.rb +14 -2
  574. data/lib/rango/ext/colored_string.rb +1 -1
  575. data/lib/rango/ext/enumerable.rb +30 -0
  576. data/lib/rango/ext/file.rb +84 -0
  577. data/lib/rango/ext/hash.rb +127 -1
  578. data/lib/rango/ext/kernel.rb +41 -24
  579. data/lib/rango/ext/object.rb +56 -0
  580. data/lib/rango/ext/object_space.rb +10 -5
  581. data/lib/rango/ext/os.rb +89 -0
  582. data/lib/rango/ext/platform.rb +27 -0
  583. data/lib/rango/ext/random.rb +11 -8
  584. data/lib/rango/ext/string.rb +17 -3
  585. data/lib/rango/ext/thor.rb +12 -12
  586. data/lib/rango/ext/time.rb +15 -0
  587. data/lib/rango/ext/time_dsl.rb +2 -3
  588. data/lib/rango/ext/unique_array.rb +16 -0
  589. data/lib/rango/forms/form.rb +2 -2
  590. data/lib/rango/generic_views.rb +18 -0
  591. data/lib/rango/helpers.rb +2 -2
  592. data/lib/rango/helpers/assets.rb +2 -2
  593. data/lib/rango/helpers/general.rb +13 -2
  594. data/lib/rango/helpers/merb-helpers.rb +2 -39
  595. data/lib/rango/helpers/merb-helpers/core_ext.rb +1 -1
  596. data/lib/rango/helpers/merb-helpers/core_ext/numeric.rb +2 -2
  597. data/lib/rango/helpers/merb-helpers/date_time_formatting.rb +1 -1
  598. data/lib/rango/helpers/merb-helpers/date_time_helpers.rb +2 -2
  599. data/lib/rango/helpers/merb-helpers/form/builder.rb +1 -1
  600. data/lib/rango/helpers/merb-helpers/form/helpers.rb +1 -1
  601. data/lib/rango/helpers/merb-helpers/form_helpers.rb +4 -4
  602. data/lib/rango/helpers/merb-helpers/tag_helpers.rb +2 -2
  603. data/lib/rango/helpers/merb-helpers/text_helpers.rb +1 -1
  604. data/lib/rango/helpers/syntax.rb +2 -2
  605. data/lib/rango/loggers/fireruby.rb +1 -1
  606. data/lib/rango/loggers/logger.rb +2 -2
  607. data/lib/rango/mixins/application.rb +2 -2
  608. data/lib/rango/mixins/chainable.rb +68 -0
  609. data/lib/rango/mixins/configurable.rb +2 -2
  610. data/lib/rango/mixins/controller.rb +4 -3
  611. data/lib/rango/mixins/hookable.rb +32 -0
  612. data/lib/rango/mixins/import.rb +2 -2
  613. data/lib/rango/mixins/mini.rb +29 -0
  614. data/lib/rango/mixins/strategy.rb +2 -2
  615. data/lib/rango/orm/adapters/datamapper/fields.rb +1 -1
  616. data/lib/rango/orm/adapters/datamapper/setup.rb +1 -1
  617. data/lib/rango/orm/adapters/datamapper/support.rb +3 -3
  618. data/lib/rango/orm/adapters/datamapper/tasks.thor +1 -1
  619. data/lib/rango/orm/adapters/datamapper/types/unicode_string.rb +1 -1
  620. data/{spec/rango/auth/more/mixins/salted_user/sq_salted_user_spec.rb → lib/rango/orm/adapters/sequel/tasks.thor} +0 -0
  621. data/lib/rango/project.rb +2 -2
  622. data/lib/rango/rack/middlewares/basic.rb +46 -0
  623. data/lib/rango/rack/middlewares/email_obfuscator.rb +25 -0
  624. data/lib/rango/rack/middlewares/encoding.rb +2 -2
  625. data/lib/rango/rack/middlewares/static.rb +41 -37
  626. data/lib/rango/rack/request.rb +2 -2
  627. data/lib/rango/rango.rb +34 -21
  628. data/lib/rango/router.rb +17 -0
  629. data/lib/rango/router/adapters/rack_router.rb +8 -0
  630. data/lib/rango/router/adapters/urlmap.rb +10 -0
  631. data/lib/rango/router/adapters/usher.rb +8 -0
  632. data/lib/rango/router/specification.txt +1 -6
  633. data/lib/rango/settings.rb +2 -2
  634. data/lib/rango/settings/erubis.rb +2 -2
  635. data/lib/rango/settings/framework.rb +7 -3
  636. data/lib/rango/settings/haml.rb +3 -3
  637. data/lib/rango/settings/template.rb +17 -0
  638. data/lib/rango/support/cucumber/steps/given_steps.rb +1 -1
  639. data/lib/rango/support/cucumber/steps/then_steps.rb +1 -1
  640. data/lib/rango/support/cucumber/steps/when_steps.rb +1 -1
  641. data/lib/rango/tasks/bundle.thor +1 -1
  642. data/lib/rango/tasks/stats.thor +1 -0
  643. data/lib/rango/templates/adapter.rb +3 -3
  644. data/lib/rango/templates/adapters/erb.rb +23 -5
  645. data/lib/rango/templates/adapters/erubis.rb +41 -36
  646. data/lib/rango/templates/adapters/haml.rb +13 -4
  647. data/lib/rango/templates/template.rb +3 -1
  648. data/rango.gemspec +32 -24
  649. data/rango.gemspec.erb +43 -0
  650. data/spec/factories.rb +3 -2
  651. data/spec/rango/boot_spec.rb +2 -6
  652. data/spec/rango/{auth/more/mixins/salted_user_spec.rb → bundling/strategies/copy_spec.rb} +0 -0
  653. data/spec/rango/{auth/more/spec/merb-auth-more_spec_spec.rb → bundling/strategies/gem_spec.rb} +0 -0
  654. data/spec/rango/{auth/more/spec/mixins/redirect_back_spec_spec.rb → bundling/strategies/git_spec.rb} +0 -0
  655. data/spec/rango/{auth/more/spec/mixins/salted_user_spec_spec.rb → bundling/strategies/hg_spec.rb} +0 -0
  656. data/spec/rango/{auth/more/spec/spec_helper_spec.rb → bundling/strategy_spec.rb} +0 -0
  657. data/spec/rango/{auth/more/strategies/abstract_password_spec.rb → cli/generator_spec.rb} +0 -0
  658. data/spec/rango/{auth/more/strategies/basic/basic_auth_spec.rb → cli/templater_spec.rb} +0 -0
  659. data/spec/rango/{auth/more/strategies/basic/openid_spec.rb → contrib/pagination/adapters/datamapper_spec.rb} +0 -0
  660. data/spec/rango/contrib/pagination/page_spec.rb +2 -2
  661. data/spec/rango/controller_spec.rb +24 -0
  662. data/spec/rango/exceptions_spec.rb +74 -0
  663. data/spec/rango/ext/array_spec.rb +19 -0
  664. data/spec/rango/ext/attribute_spec.rb +37 -0
  665. data/spec/rango/ext/colored_string_spec.rb +9 -0
  666. data/spec/rango/ext/enumerable_spec.rb +52 -0
  667. data/spec/rango/ext/file_spec.rb +78 -0
  668. data/spec/rango/ext/hash_spec.rb +91 -0
  669. data/spec/rango/ext/kernel_spec.rb +9 -0
  670. data/spec/rango/ext/object_space_spec.rb +17 -0
  671. data/spec/rango/ext/object_spec.rb +57 -0
  672. data/spec/rango/ext/os_spec.rb +121 -0
  673. data/spec/rango/ext/random_spec.rb +31 -0
  674. data/spec/rango/ext/string_spec.rb +23 -0
  675. data/spec/rango/ext/thor_spec.rb +26 -0
  676. data/spec/rango/ext/time_dsl_spec.rb +86 -0
  677. data/spec/rango/ext/time_spec.rb +11 -0
  678. data/spec/rango/ext_spec.rb +182 -0
  679. data/spec/rango/{auth/more/strategies/basic/password_form_spec.rb → generic_views_spec.rb} +0 -0
  680. data/spec/rango/helpers/merb-helpers/core_ext_spec.rb +21 -0
  681. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/application.rb +4 -0
  682. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_check_box.rb +4 -0
  683. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_file_field.rb +4 -0
  684. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_hidden_field.rb +4 -0
  685. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_option_tag.rb +4 -0
  686. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_password_field.rb +4 -0
  687. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_radio_button.rb +4 -0
  688. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_radio_group.rb +4 -0
  689. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_select.rb +4 -0
  690. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_text_area.rb +4 -0
  691. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/bound_text_field.rb +4 -0
  692. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/button.rb +4 -0
  693. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/check_box.rb +4 -0
  694. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/custom_builder.rb +4 -0
  695. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/delete_button.rb +4 -0
  696. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/exceptions.rb +25 -0
  697. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/field_set.rb +4 -0
  698. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/fields_for.rb +3 -0
  699. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/file_field.rb +4 -0
  700. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/foo.rb +23 -0
  701. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/form.rb +4 -0
  702. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/form_for.rb +4 -0
  703. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/hacker.rb +4 -0
  704. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/hidden_field.rb +4 -0
  705. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/label.rb +4 -0
  706. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/numeric_ext.rb +4 -0
  707. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/option_tag.rb +4 -0
  708. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/password_field.rb +4 -0
  709. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/radio_button.rb +4 -0
  710. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/radio_group.rb +4 -0
  711. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/relative_date.rb +4 -0
  712. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/relative_date_span.rb +4 -0
  713. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/select.rb +4 -0
  714. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/specs_controller.rb +13 -0
  715. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/submit.rb +4 -0
  716. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/tag_helper.rb +23 -0
  717. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/text_area.rb +4 -0
  718. data/spec/rango/helpers/merb-helpers/fixture/app/controllers/text_field.rb +4 -0
  719. data/spec/rango/helpers/merb-helpers/fixture/app/helpers/global_helpers.rb +7 -0
  720. data/spec/rango/helpers/merb-helpers/fixture/app/models/fake_dm_model.rb +27 -0
  721. data/spec/rango/helpers/merb-helpers/fixture/app/models/first_generic_fake_model.rb +59 -0
  722. data/spec/rango/helpers/merb-helpers/fixture/app/models/hacker_generic_model.rb +7 -0
  723. data/spec/rango/helpers/merb-helpers/fixture/app/models/second_generic_fake_model.rb +20 -0
  724. data/spec/rango/helpers/merb-helpers/fixture/app/models/third_generic_fake_model.rb +5 -0
  725. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/basic.html.erb +0 -0
  726. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/basic_unchecked.html.erb +0 -0
  727. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/checked.html.erb +0 -0
  728. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/errors.html.erb +0 -0
  729. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/label.html.erb +0 -0
  730. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/on_and_off.html.erb +0 -0
  731. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_check_box_specs/raise_value_error.html.erb +0 -0
  732. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_file_field_specs/additional_attributes.html.erb +0 -0
  733. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_file_field_specs/takes_string.html.erb +0 -0
  734. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_file_field_specs/with_label.html.erb +0 -0
  735. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_hidden_field_specs/basic.html.erb +0 -0
  736. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_hidden_field_specs/errors.html.erb +0 -0
  737. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_hidden_field_specs/hidden_error.html.erb +0 -0
  738. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_hidden_field_specs/label.html.erb +0 -0
  739. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_option_tag_specs/grouped.html.erb +0 -0
  740. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_option_tag_specs/nested.html.erb +0 -0
  741. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_option_tag_specs/text_and_value.html.erb +0 -0
  742. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_password_field_specs/attributes.html.erb +0 -0
  743. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_password_field_specs/basic.html.erb +0 -0
  744. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_password_field_specs/label.html.erb +0 -0
  745. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_radio_button_specs/basic.html.erb +0 -0
  746. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_radio_group_specs/basic.html.erb +0 -0
  747. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_radio_group_specs/hashes.html.erb +0 -0
  748. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_radio_group_specs/mixed.html.erb +0 -0
  749. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_radio_group_specs/override_id.html.erb +0 -0
  750. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/basic.html.erb +0 -0
  751. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/blank.html.erb +0 -0
  752. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/label.html.erb +0 -0
  753. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/multiple.html.erb +0 -0
  754. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/prompt.html.erb +0 -0
  755. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/with_options.html.erb +0 -0
  756. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_select_specs/with_options_with_blank.html.erb +0 -0
  757. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_text_area_specs/basic.html.erb +0 -0
  758. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_text_area_specs/label.html.erb +0 -0
  759. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/bound_text_field_specs/basic.html.erb +0 -0
  760. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/button_specs/button_with_label.html.erb +0 -0
  761. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/button_specs/button_with_values.html.erb +0 -0
  762. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/button_specs/disabled_button.html.erb +0 -0
  763. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/basic.html.erb +0 -0
  764. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/boolean.html.erb +0 -0
  765. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/disabled.html.erb +0 -0
  766. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/label.html.erb +0 -0
  767. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/on_off_is_boolean.html.erb +0 -0
  768. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/raise_unless_both_on_and_off.html.erb +0 -0
  769. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/raises_error_if_not_boolean.html.erb +0 -0
  770. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/raises_error_if_on_off_and_boolean_false.html.erb +0 -0
  771. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/simple.html.erb +0 -0
  772. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/to_string.html.erb +0 -0
  773. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/check_box_specs/unchecked.html.erb +0 -0
  774. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/custom_builder_specs/everything.html.erb +0 -0
  775. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/delete_button_specs/delete_with_explicit_url.html.erb +0 -0
  776. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/delete_button_specs/delete_with_extra_params.html.erb +0 -0
  777. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/delete_button_specs/delete_with_label.html.erb +0 -0
  778. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/delete_button_specs/simple_delete.html.erb +0 -0
  779. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/exeptions/client_error.html.erb +0 -0
  780. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/exeptions/internal_server_error.html.erb +0 -0
  781. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/exeptions/not_acceptable.html.erb +0 -0
  782. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/exeptions/not_found.html.erb +0 -0
  783. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/fields_for_specs/basic.html.erb +0 -0
  784. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/fields_for_specs/midstream.html.erb +0 -0
  785. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/fields_for_specs/nil.html.erb +0 -0
  786. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/fieldset_specs/legend.html.erb +0 -0
  787. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/file_field_specs/disabled.html.erb +0 -0
  788. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/file_field_specs/makes_multipart.html.erb +0 -0
  789. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/file_field_specs/with_label.html.erb +0 -0
  790. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/file_field_specs/with_values.html.erb +0 -0
  791. data/spec/rango/{auth/more_spec.rb → helpers/merb-helpers/fixture/app/views/foo/bar.html.erb} +0 -0
  792. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_for_specs/basic.html.erb +0 -0
  793. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/create_a_form.html.erb +0 -0
  794. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/create_a_multipart_form.html.erb +0 -0
  795. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/fake_delete_if_set.html.erb +0 -0
  796. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/fake_put_if_set.html.erb +0 -0
  797. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/get_if_set.html.erb +0 -0
  798. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/post_by_default.html.erb +0 -0
  799. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/form_specs/resourceful_form.html.erb +0 -0
  800. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/file_field.html.erb +0 -0
  801. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/hidden_field.html.erb +0 -0
  802. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/option_tag.html.erb +0 -0
  803. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/password_field.html.erb +0 -0
  804. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/radio_button.html.erb +0 -0
  805. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/radio_group.html.erb +0 -0
  806. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/text_area.html.erb +0 -0
  807. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hacker/text_field.html.erb +0 -0
  808. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hidden_field_specs/basic.html.erb +0 -0
  809. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hidden_field_specs/disabled.html.erb +0 -0
  810. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/hidden_field_specs/label.html.erb +0 -0
  811. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/label_specs/basic.html.erb +0 -0
  812. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/label_specs/basic_with_attributes.html.erb +0 -0
  813. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/label_specs/basic_with_class.html.erb +0 -0
  814. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/layout/application.html.erb +0 -0
  815. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/numeric_ext_specs/minutes_to_hours.html.erb +0 -0
  816. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/numeric_ext_specs/to_concurrency_default.html.erb +0 -0
  817. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/numeric_ext_specs/two_digits.html.erb +0 -0
  818. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/array.html.erb +0 -0
  819. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/clean.html.erb +0 -0
  820. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/collection.html.erb +0 -0
  821. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/multiple_selects.html.erb +0 -0
  822. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/no_extra_attributes.html.erb +0 -0
  823. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/optgroups.html.erb +0 -0
  824. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/selected.html.erb +0 -0
  825. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/with_blank.html.erb +0 -0
  826. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/option_tag_specs/with_prompt.html.erb +0 -0
  827. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/password_field_specs/basic.html.erb +0 -0
  828. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/password_field_specs/disabled.html.erb +0 -0
  829. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_button_specs/basic.html.erb +0 -0
  830. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_button_specs/checked.html.erb +0 -0
  831. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_button_specs/disabled.html.erb +0 -0
  832. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_button_specs/label.html.erb +0 -0
  833. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_button_specs/unchecked.html.erb +0 -0
  834. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_group_specs/attributes.html.erb +0 -0
  835. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_group_specs/basic.html.erb +0 -0
  836. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_group_specs/checked.html.erb +0 -0
  837. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_group_specs/hash.html.erb +0 -0
  838. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/radio_group_specs/specific_attributes.html.erb +0 -0
  839. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_span_specs/date_span_on_same_day.html.erb +0 -0
  840. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_span_specs/date_span_on_same_day_on_different_year.html.erb +0 -0
  841. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_specs/relative_date_with_year.html.erb +0 -0
  842. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_specs/relative_date_without_year.html.erb +0 -0
  843. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_specs/relative_today.html.erb +0 -0
  844. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_specs/relative_tomorrow.html.erb +0 -0
  845. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/relative_date_specs/relative_yesterday.html.erb +0 -0
  846. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/select_specs/basic.html.erb +0 -0
  847. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/select_specs/blank.html.erb +0 -0
  848. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/select_specs/multiple.html.erb +0 -0
  849. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/select_specs/selected.html.erb +0 -0
  850. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/submit_specs/disabled_submit.html.erb +0 -0
  851. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/submit_specs/submit_with_label.html.erb +0 -0
  852. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/submit_specs/submit_with_values.html.erb +0 -0
  853. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/tag_helper/nested_tags.html.erb +0 -0
  854. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/tag_helper/tag_with_attributes.html.erb +0 -0
  855. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/tag_helper/tag_with_content.html.erb +0 -0
  856. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/tag_helper/tag_with_content_in_the_block.html.erb +0 -0
  857. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_area_specs/basic.html.erb +0 -0
  858. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_area_specs/disabled.html.erb +0 -0
  859. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_area_specs/label.html.erb +0 -0
  860. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_area_specs/nil.html.erb +0 -0
  861. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_field_specs/basic.html.erb +0 -0
  862. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_field_specs/class.html.erb +0 -0
  863. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_field_specs/disabled.html.erb +0 -0
  864. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_field_specs/label.html.erb +0 -0
  865. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/app/views/text_field_specs/symbolized_name.html.erb +0 -0
  866. data/spec/rango/helpers/merb-helpers/fixture/config/environments/development.rb +8 -0
  867. data/spec/rango/helpers/merb-helpers/fixture/config/environments/production.rb +7 -0
  868. data/spec/rango/helpers/merb-helpers/fixture/config/environments/test.rb +8 -0
  869. data/spec/rango/helpers/merb-helpers/fixture/config/init.rb +48 -0
  870. data/spec/rango/helpers/merb-helpers/fixture/config/rack.rb +13 -0
  871. data/spec/rango/helpers/merb-helpers/fixture/config/router.rb +40 -0
  872. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/public/images/merb.jpg +0 -0
  873. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/public/merb.fcgi +0 -0
  874. data/{lib/rango/helpers/spec → spec/rango/helpers/merb-helpers}/fixture/public/stylesheets/master.css +0 -0
  875. data/spec/rango/helpers/merb-helpers/merb_helpers_config_spec.rb +84 -0
  876. data/spec/rango/helpers/merb-helpers/merb_helpers_date_time_spec.rb +268 -0
  877. data/spec/rango/helpers/merb-helpers/merb_helpers_form_spec.rb +1370 -0
  878. data/spec/rango/helpers/merb-helpers/merb_helpers_tag_helper_spec.rb +42 -0
  879. data/spec/rango/helpers/merb-helpers/merb_helpers_text_spec.rb +69 -0
  880. data/spec/rango/helpers/merb-helpers/numeric_extlib_spec.rb +137 -0
  881. data/spec/rango/helpers/merb-helpers/ordinalize_spec.rb +53 -0
  882. data/spec/rango/{auth/slice/exceptions_spec.rb → mixins/configurable_spec.rb} +0 -0
  883. data/spec/rango/{auth/slice/merb-auth-slice-password_spec.rb → mixins/mini_spec.rb} +0 -0
  884. data/spec/rango/{auth/slice/sessions_spec.rb → mixins/strategy_spec.rb} +0 -0
  885. data/spec/rango/orm/adapters/{dm → datamapper}/fields_spec.rb +0 -0
  886. data/spec/rango/orm/adapters/{dm → datamapper}/setup_spec.rb +0 -0
  887. data/spec/rango/{auth/slice/spec_helper_spec.rb → orm/adapters/datamapper/support_spec.rb} +0 -0
  888. data/spec/rango/{auth/slice/xsessions_spec.rb → orm/adapters/datamapper/types/unicode_string_spec.rb} +0 -0
  889. data/spec/rango/project_spec.rb +3 -3
  890. data/spec/rango/{bundling/strategies_spec.rb → rack/middlewares/basic_spec.rb} +0 -0
  891. data/spec/rango/{cli/project_spec.rb → rack/middlewares/email_obfuscator_spec.rb} +0 -0
  892. data/spec/rango/{contrib/pagination/adapters/dm_spec.rb → rack/middlewares/encoding_spec.rb} +0 -0
  893. data/spec/rango/rack/request_spec.rb +3 -3
  894. data/spec/rango/{ext/core_ext_spec.rb → router/adapters/basic_spec.rb} +0 -0
  895. data/spec/rango/{ext/path_spec.rb → router/adapters/rack-router_spec.rb} +0 -0
  896. data/spec/rango/{rack → router}/dispatcher_spec.rb +0 -0
  897. data/spec/rango/{generators_spec.rb → settings/erubis_spec.rb} +0 -0
  898. data/spec/rango/{generic_views/static_spec.rb → settings/framework_spec.rb} +0 -0
  899. data/spec/rango/{helpers/merb-helpers/core_ext/numeric_spec.rb → settings/haml_spec.rb} +0 -0
  900. data/spec/rango/{helpers/merb-helpers/date_time_formatting_spec.rb → settings/template_spec.rb} +0 -0
  901. data/spec/rango/settings_spec.rb +3 -3
  902. data/spec/rango/{helpers/merb-helpers/date_time_helpers_spec.rb → support/cucumber/steps/given_steps_spec.rb} +0 -0
  903. data/spec/rango/{helpers/merb-helpers/form/builder_spec.rb → support/cucumber/steps/then_steps_spec.rb} +0 -0
  904. data/spec/rango/{helpers/merb-helpers/form/helpers_spec.rb → support/cucumber/steps/when_steps_spec.rb} +0 -0
  905. data/spec/rango/templates/adapters/erubis_spec.rb +117 -0
  906. data/spec/rango/templates/adapters/template_helpers.rb +38 -0
  907. data/spec/rango_spec.rb +4 -3
  908. data/spec/spec_helper.rb +27 -5
  909. data/spec/{rango/helpers/merb-helpers/form_helpers_spec.rb → stubs/acqs/dir/lib.rb} +0 -0
  910. data/spec/{rango/helpers/merb-helpers/tag_helpers_spec.rb → stubs/acqs/dir/lib_spec.rb} +0 -0
  911. data/spec/{rango/helpers/merb-helpers/text_helpers_spec.rb → stubs/acqs/lib.rb} +0 -0
  912. data/spec/{rango/helpers/merb-helpers/time_dsl_spec.rb → stubs/acqs/tasks.thor} +0 -0
  913. data/spec/stubs/flat.rb +1 -0
  914. data/spec/stubs/templates/basic.html.erb +6 -0
  915. data/spec/stubs/templates/capture.html.erb +11 -0
  916. data/spec/stubs/templates/context.html.erb +6 -0
  917. data/spec/stubs/templates/exception.html.erb +1 -0
  918. data/stubs/app/content/init.rb.rbt +2 -2
  919. data/stubs/app/content/models.rb.rbt +2 -2
  920. data/stubs/app/content/views.rb.rbt +3 -3
  921. data/stubs/app/metadata.yml +4 -0
  922. data/stubs/app/preprocess.rb +7 -6
  923. data/stubs/bigapp/metadata.yml +4 -0
  924. data/stubs/bigapp/preprocess.rb +2 -2
  925. data/stubs/features/content/env.rb +1 -1
  926. data/stubs/features/metadata.yml +4 -0
  927. data/stubs/flat/content/flat.ru.rbt +5 -4
  928. data/stubs/flat/metadata.yml +4 -0
  929. data/stubs/flat/preprocess.rb +2 -2
  930. data/stubs/project/content/Thorfile +1 -1
  931. data/stubs/project/content/config.ru +4 -5
  932. data/stubs/project/content/init.rb +11 -1
  933. data/stubs/project/content/settings.rb.rbt +1 -1
  934. data/stubs/project/content/settings_local.rb.rbt +1 -1
  935. data/stubs/project/metadata.yml +4 -0
  936. data/stubs/project/postprocess.rb +8 -0
  937. data/{spec/rango/mvc/strategies_spec.rb → stubs/pupu/content/CHANGELOG} +0 -0
  938. data/stubs/pupu/content/LICENSE.rbt +20 -0
  939. data/stubs/pupu/content/README.textile.rbt +7 -0
  940. data/stubs/pupu/content/TODO +5 -0
  941. data/stubs/pupu/content/Thorfile.rbt +21 -0
  942. data/stubs/pupu/content/config.rb.rbt +14 -0
  943. data/{spec/rango/rack/middlewares/emails_spec.rb → stubs/pupu/content/initializers/%name%.css} +0 -0
  944. data/stubs/pupu/content/initializers/%name%.js +3 -0
  945. data/{spec/rango/router/route_spec.rb → stubs/pupu/content/javascripts/%name%.js} +0 -0
  946. data/{spec/rango/router/router_spec.rb → stubs/pupu/content/stylesheets/%name%.css} +0 -0
  947. data/stubs/pupu/metadata.yml +4 -0
  948. data/stubs/pupu/preprocess.rb +4 -2
  949. data/stubs/stub/content/metadata.yml +3 -1
  950. data/stubs/stub/content/postprocess.rb +2 -4
  951. data/stubs/stub/content/preprocess.rb +2 -2
  952. data/stubs/stub/metadata.yml +4 -0
  953. data/tasks/benchmark.thor +15 -0
  954. data/tasks/hooks.thor +2 -2
  955. data/tasks/package.thor +20 -7
  956. data/tasks/release.thor +14 -12
  957. data/tasks/repair.thor +14 -25
  958. data/tasks/spec.thor +2 -1
  959. data/tasks/stats.thor +19 -3
  960. data/tasks/yardoc.thor +1 -1
  961. data/templates.txt +39 -0
  962. metadata +1059 -362
  963. data/lib/rango/cli/project.rb +0 -87
  964. data/lib/rango/cli/simple_template.rb +0 -47
  965. data/lib/rango/ext/class.rb +0 -99
  966. data/lib/rango/ext/core_ext.rb +0 -52
  967. data/lib/rango/ext/path.rb +0 -222
  968. data/lib/rango/ext/try.rb +0 -30
  969. data/lib/rango/generic_views/static.rb +0 -7
  970. data/lib/rango/helpers/merb-helpers/time_dsl.rb +0 -61
  971. data/lib/rango/helpers/spec/core_ext_spec.rb +0 -21
  972. data/lib/rango/helpers/spec/fixture/app/controllers/application.rb +0 -4
  973. data/lib/rango/helpers/spec/fixture/app/controllers/bound_check_box.rb +0 -2
  974. data/lib/rango/helpers/spec/fixture/app/controllers/bound_file_field.rb +0 -2
  975. data/lib/rango/helpers/spec/fixture/app/controllers/bound_hidden_field.rb +0 -2
  976. data/lib/rango/helpers/spec/fixture/app/controllers/bound_option_tag.rb +0 -2
  977. data/lib/rango/helpers/spec/fixture/app/controllers/bound_password_field.rb +0 -2
  978. data/lib/rango/helpers/spec/fixture/app/controllers/bound_radio_button.rb +0 -2
  979. data/lib/rango/helpers/spec/fixture/app/controllers/bound_radio_group.rb +0 -2
  980. data/lib/rango/helpers/spec/fixture/app/controllers/bound_select.rb +0 -2
  981. data/lib/rango/helpers/spec/fixture/app/controllers/bound_text_area.rb +0 -2
  982. data/lib/rango/helpers/spec/fixture/app/controllers/bound_text_field.rb +0 -2
  983. data/lib/rango/helpers/spec/fixture/app/controllers/button.rb +0 -2
  984. data/lib/rango/helpers/spec/fixture/app/controllers/check_box.rb +0 -2
  985. data/lib/rango/helpers/spec/fixture/app/controllers/custom_builder.rb +0 -2
  986. data/lib/rango/helpers/spec/fixture/app/controllers/delete_button.rb +0 -2
  987. data/lib/rango/helpers/spec/fixture/app/controllers/exceptions.rb +0 -25
  988. data/lib/rango/helpers/spec/fixture/app/controllers/field_set.rb +0 -2
  989. data/lib/rango/helpers/spec/fixture/app/controllers/fields_for.rb +0 -3
  990. data/lib/rango/helpers/spec/fixture/app/controllers/file_field.rb +0 -2
  991. data/lib/rango/helpers/spec/fixture/app/controllers/foo.rb +0 -23
  992. data/lib/rango/helpers/spec/fixture/app/controllers/form.rb +0 -2
  993. data/lib/rango/helpers/spec/fixture/app/controllers/form_for.rb +0 -2
  994. data/lib/rango/helpers/spec/fixture/app/controllers/hacker.rb +0 -2
  995. data/lib/rango/helpers/spec/fixture/app/controllers/hidden_field.rb +0 -2
  996. data/lib/rango/helpers/spec/fixture/app/controllers/label.rb +0 -3
  997. data/lib/rango/helpers/spec/fixture/app/controllers/numeric_ext.rb +0 -3
  998. data/lib/rango/helpers/spec/fixture/app/controllers/option_tag.rb +0 -2
  999. data/lib/rango/helpers/spec/fixture/app/controllers/password_field.rb +0 -2
  1000. data/lib/rango/helpers/spec/fixture/app/controllers/radio_button.rb +0 -2
  1001. data/lib/rango/helpers/spec/fixture/app/controllers/radio_group.rb +0 -2
  1002. data/lib/rango/helpers/spec/fixture/app/controllers/relative_date.rb +0 -2
  1003. data/lib/rango/helpers/spec/fixture/app/controllers/relative_date_span.rb +0 -2
  1004. data/lib/rango/helpers/spec/fixture/app/controllers/select.rb +0 -2
  1005. data/lib/rango/helpers/spec/fixture/app/controllers/specs_controller.rb +0 -11
  1006. data/lib/rango/helpers/spec/fixture/app/controllers/submit.rb +0 -2
  1007. data/lib/rango/helpers/spec/fixture/app/controllers/tag_helper.rb +0 -21
  1008. data/lib/rango/helpers/spec/fixture/app/controllers/text_area.rb +0 -2
  1009. data/lib/rango/helpers/spec/fixture/app/controllers/text_field.rb +0 -3
  1010. data/lib/rango/helpers/spec/fixture/app/helpers/global_helpers.rb +0 -8
  1011. data/lib/rango/helpers/spec/fixture/app/models/fake_dm_model.rb +0 -25
  1012. data/lib/rango/helpers/spec/fixture/app/models/first_generic_fake_model.rb +0 -57
  1013. data/lib/rango/helpers/spec/fixture/app/models/hacker_generic_model.rb +0 -5
  1014. data/lib/rango/helpers/spec/fixture/app/models/second_generic_fake_model.rb +0 -18
  1015. data/lib/rango/helpers/spec/fixture/app/models/third_generic_fake_model.rb +0 -3
  1016. data/lib/rango/helpers/spec/fixture/config/environments/development.rb +0 -6
  1017. data/lib/rango/helpers/spec/fixture/config/environments/production.rb +0 -5
  1018. data/lib/rango/helpers/spec/fixture/config/environments/test.rb +0 -6
  1019. data/lib/rango/helpers/spec/fixture/config/init.rb +0 -46
  1020. data/lib/rango/helpers/spec/fixture/config/rack.rb +0 -11
  1021. data/lib/rango/helpers/spec/fixture/config/router.rb +0 -38
  1022. data/lib/rango/helpers/spec/merb_helpers_config_spec.rb +0 -84
  1023. data/lib/rango/helpers/spec/merb_helpers_date_time_spec.rb +0 -270
  1024. data/lib/rango/helpers/spec/merb_helpers_form_spec.rb +0 -1371
  1025. data/lib/rango/helpers/spec/merb_helpers_tag_helper_spec.rb +0 -42
  1026. data/lib/rango/helpers/spec/merb_helpers_text_spec.rb +0 -69
  1027. data/lib/rango/helpers/spec/numeric_extlib_spec.rb +0 -137
  1028. data/lib/rango/helpers/spec/ordinalize_spec.rb +0 -53
  1029. data/lib/rango/helpers/spec/spec_helper.rb +0 -160
  1030. data/lib/rango/helpers/spec/time_dsl_spec.rb +0 -45
  1031. data/lib/rango/mvc/controller.rb +0 -139
  1032. data/lib/rango/mvc/strategies.rb +0 -6
  1033. data/lib/rango/rack/dispatcher.rb +0 -61
  1034. data/lib/rango/rack/middlewares/emails.rb +0 -7
  1035. data/lib/rango/router/adapters/basic.rb +0 -21
  1036. data/lib/rango/router/adapters/rack-router.rb +0 -18
  1037. data/lib/rango/router/dispatcher.rb +0 -29
  1038. data/spec/rango/mvc/controller_spec.rb +0 -24
  1039. data/spec/rango/router/strategies_spec.rb +0 -0
  1040. data/spec/rango/spec/cucumber_spec.rb +0 -0
  1041. data/spec/rango/spec/rspec_spec.rb +0 -0
  1042. data/stubs/project/preprocess.rb +0 -5
  1043. data/stubs/stub/preprocess.rb +0 -5
  1044. data/templates/errors/404.html.erb +0 -52
  1045. data/templates/errors/406.html.erb +0 -1
  1046. data/templates/errors/500.html.erb +0 -48
@@ -1,1371 +0,0 @@
1
- # coding: utf-8
2
-
3
- require File.dirname(__FILE__) + '/spec_helper'
4
-
5
- # Quick rundown of how these specs work
6
- # please read before hacking on this plugin
7
- #
8
- # helpers must be tested through then entire stack
9
- # what that means is that each spec must
10
- # send a request to a controller and render a template
11
- #
12
- # Start by creating a spec controller subclassing SpecController
13
- # which itself is a subclass of Rango::Controller
14
- # specs_controller.rb (available at spec/fixture/app/controllers/specs_controller.rb)
15
- # defines SpecController.
16
- # Create a new controller in the spec/fixture/app/controllers/ if you are adding a new helper
17
- #
18
- # To test your helper, start by initializing a controller
19
- #
20
- # @controller = CustomHelperSpecs.new(Rango::Request.new({}))
21
- #
22
- # Note that we are sending a real request to the controller, feel free to use the request as needed
23
- #
24
- # You might need to access real objects in your views
25
- # you can do that by setting them up in the controller
26
- #
27
- # @obj = FakeModel.new # FaKeModel is defined in spec/fixture/models/first_generic_fake_model.rb check it out!
28
- # @controller.instance_variable_set(:@obj, @obj)
29
- #
30
- # To test a helper, you need to render a view:
31
- #
32
- # result = @controller.render :view_name
33
- #
34
- # Of course, you need to create a view:
35
- # spec/fixture/app/views/custom_helper_specs/view_name.html.erb
36
- # in the view, call the helper you want to test
37
- #
38
- # You can now test the helper in the view:
39
- # result.should match_tag(:form, :method => "post")
40
- #
41
-
42
-
43
- Rango::Plugins.config[:helpers] = {
44
- :default_builder => Rango::Helpers::Form::Builder::FormWithErrors
45
- }
46
-
47
- describe "error_messages_for" do
48
-
49
- before :each do
50
- @c = Application.new({})
51
- @dm_obj = Object.new
52
- @sq_obj = Object.new
53
- @dm_errors = [["foo", "bar"],["baz","bat"]]
54
- @sq_errors = Object.new
55
- @sq_errors.stub!(:full_messages).and_return(["foo", "baz"])
56
- @dm_obj.stub!(:errors).and_return(@dm_errors)
57
- @dm_obj.stub!(:new_record?).and_return(false)
58
- @sq_obj.stub!(:errors).and_return(@sq_errors)
59
- @sq_obj.stub!(:new_record?).and_return(false)
60
- end
61
-
62
- it "should build default error messages for AR-like models" do
63
- errs = @c.error_messages_for(@dm_obj)
64
- errs.should include("<h2>Form submission failed because of 2 problems</h2>")
65
- errs.should include("<li>foo bar</li>")
66
- errs.should include("<li>baz bat</li>")
67
- end
68
-
69
- it "should build default error messages for Sequel-like models" do
70
- errs = @c.error_messages_for(@sq_obj)
71
- errs.should include("<h2>Form submission failed because of 2 problems</h2>")
72
- errs.should include("<li>foo</li>")
73
- errs.should include("<li>baz</li>")
74
- end
75
-
76
- # it "should build default error messages for symbol" do
77
- # errs = error_messages_for(:obj)
78
- # errs.should include("<h2>Form submittal failed because of 2 problems</h2>")
79
- # errs.should include("<li>foo bar</li>")
80
- # errs.should include("<li>baz bat</li>")
81
- # end
82
-
83
- it "should accept a custom HTML class" do
84
- errs = @c.error_messages_for(@dm_obj, :error_class => "foo")
85
- errs.should include("<div class='foo'>")
86
- end
87
-
88
- it "should accept a custom header block" do
89
- errs = @c.error_messages_for(@dm_obj, :header => "<h3>Failure: %s issue%s</h3>")
90
- errs.should include("<h3>Failure: 2 issues</h3>")
91
- end
92
-
93
- # it "should put the error messages inside a form if :before is false" do
94
- # ret = @c.form_for @dm_obj do
95
- # _buffer << error_messages
96
- # end
97
- # ret.should =~ /\A\s*<form.*<div class='error'>/
98
- # end
99
-
100
- end
101
-
102
- describe "form" do
103
-
104
- before :each do
105
- @c = FormSpecs.new(Rango::Request.new({}))
106
- end
107
-
108
- describe "when _default_builder is Rango::Helpers::Form::Builder::ResourcefulFormWithErrors" do
109
-
110
- before(:each) do
111
- @obj = FakeModel2.new
112
- @c.instance_variable_set(:@obj, @obj)
113
- end
114
-
115
- it "should not explode when #form is called" do
116
- r = @c.render :resourceful_form
117
- pending
118
- #r.should =~ /action="fake_model2\/#{@obj.id}"/
119
- end
120
- end
121
-
122
-
123
- it "should use the post method by default" do
124
- ret = @c.render(:post_by_default)
125
- ret.should have_selector("form[method=post]")
126
- ret.should include("CONTENT")
127
- end
128
-
129
- it "should use the get method if set" do
130
- ret = @c.render(:get_if_set)
131
- ret.should have_selector("form[method=get]")
132
- end
133
-
134
- it "should fake out the put method if set" do
135
- ret = @c.render(:fake_put_if_set)
136
- ret.should have_selector("form[method=post]")
137
- ret.should have_selector("input[type=hidden][name=_method][value=put]")
138
- end
139
-
140
- it "should fake out the delete method if set" do
141
- ret = @c.render(:fake_delete_if_set)
142
- ret.should have_selector("form[method=post]")
143
- ret.should have_selector("input[type=hidden][name=_method][value=delete]")
144
- end
145
-
146
- # TODO: Why is this required?
147
- # ---------------------------
148
- #
149
- # it "should silently set method to post if an unsupported method is used" do
150
- # form_tag :method => :dodgy do
151
- # _buffer << "CONTENT"
152
- # end
153
- # _buffer.should match_tag(:form, :method => "post")
154
- # _buffer.should_not match_tag(:input, :type => "hidden", :name => "_method", :value => "dodgy")
155
- # end
156
-
157
- it "should take create a form" do
158
- ret = @c.render(:create_a_form)
159
- ret.should have_selector("form[action=foo][method=post]")
160
- ret.should include("Hello")
161
- end
162
-
163
- it "should set a form to be multipart" do
164
- ret = @c.render(:create_a_multipart_form)
165
- ret.should have_selector("form[action=foo][method=post][enctype='multipart/form-data']")
166
- ret.should include("CONTENT")
167
- end
168
- end
169
-
170
-
171
- describe "form_for" do
172
-
173
- before :each do
174
- @c = FormForSpecs.new(Rango::Request.new({}))
175
- @c.instance_variable_set(:@obj, FakeModel.new)
176
- end
177
-
178
- it "should wrap the contents in a form tag" do
179
- form = @c.render :basic
180
- form.should have_selector("form[method=post]")
181
- form.should have_selector("input[type=hidden][value=put][name=_method]")
182
- end
183
-
184
- it "should set the method to post be default" do
185
- new_fake_model = FakeModel2.new
186
- @c.instance_variable_set(:@obj, new_fake_model)
187
- form = @c.render :basic
188
- form.should have_selector("form[method=post]")
189
- form.should_not have_selector("input[type=hidden][name=_method]")
190
- end
191
-
192
- it "should support PUT if the object passed in is not a new_record? via a hidden field" do
193
- form = @c.render :basic
194
- form.should have_selector("form[method=post]")
195
- form.should have_selector("input[type=hidden][value=put][name=_method]")
196
- end
197
-
198
- end
199
-
200
-
201
- describe "fields_for" do
202
-
203
- before :each do
204
- @c = FieldsForSpecs.new(Rango::Request.new({}))
205
- @c.instance_variable_set(:@obj, FakeModel.new)
206
- end
207
-
208
-
209
- it "should dump the contents in the context of the object" do
210
- r = @c.render :basic
211
- r.should have_selector("input[type=text][value=foowee]")
212
- end
213
-
214
- it "should be able to modify the context midstream" do
215
- @c.instance_variable_set(:@obj2, FakeModel2.new)
216
- r = @c.render :midstream
217
- r.should have_selector("input[type=text][value=foowee]")
218
- r.should have_selector("input[name='fake_model2[foo]'][type=text][value=foowee2]")
219
- end
220
-
221
- it "should handle an explicit nil attribute" do
222
- r = @c.render :nil
223
- r.should have_selector("input[name='fake_model[foo]'][value=foowee][type=text]")
224
- end
225
-
226
- it "should pass context back to the old object after exiting block" do
227
- @c.instance_variable_set(:@obj2, FakeModel2.new)
228
- r = @c.render :midstream
229
- r.should have_selector("input[id=fake_model_foo][name='fake_model[foo]'][type=text][extra=true]")
230
- end
231
- end
232
-
233
- describe "text_field" do
234
-
235
- before :each do
236
- @c = TextFieldSpecs.new(Rango::Request.new({}))
237
- end
238
-
239
- it "should return a basic text field based on the values passed in" do
240
- r = @c.render :basic
241
- r.should have_selector("input[type=text][id=foo][name=foo][value=bar]")
242
- end
243
-
244
- it "should update an existing :class with a new class" do
245
- r = @c.render :class
246
- r.should == "<input type=\"text\" class=\"awesome foobar text\"/>"
247
- end
248
-
249
- it "should be disabled if :disabled => true is passed in" do
250
- r = @c.render :disabled
251
- r.should have_selector("input[type=text][disabled=disabled]")
252
- end
253
-
254
- it "should provide an additional label tag if the :label option is passed in as a hash" do
255
- r = @c.render :label
256
- r.should have_selector("label[class=cool][for=foo]:contains('LABEL')")
257
- end
258
-
259
- it "should allow a symbolized name" do
260
- r = @c.render :symbolized_name
261
- r.should have_selector("input[type=text][name=foo][value=bar]")
262
- r.should have_selector("label[for=foo]:contains('LABEL')")
263
- end
264
- end
265
-
266
- describe "bound_text_field" do
267
-
268
- before :each do
269
- @c = BoundTextFieldSpecs.new(Rango::Request.new({}))
270
- @c.instance_variable_set(:@obj, FakeModel.new)
271
- end
272
-
273
- it "should take a string object and return a useful text control" do
274
- r = @c.render :basic
275
- r.should have_selector("input[type=text][id=fake_model_foo][name='fake_model[foo]'][value=foowee]")
276
- end
277
-
278
- it "should take additional attributes and use them" do
279
- r = @c.render :basic
280
- r.should have_selector("input[type=text][name='fake_model[foo]'][value=foowee][bar='7']")
281
- end
282
-
283
- it "should provide an additional label tag if the :label option is passed in" do
284
- form = @c.render :basic
285
- form.should match(/<label.*>LABEL<\/label><input/)
286
- form.should_not have_selector("input[label=LABEL]")
287
- end
288
-
289
- it "should render the label tag with the proper for= atttribute" do
290
- form = @c.render :basic
291
- form.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
292
- end
293
-
294
- it "should not errorify the field for a new object" do
295
- r = @c.render :basic
296
- r.should_not have_selector("input[type=text][name='fake_model[foo]'][class=error]")
297
- end
298
-
299
- it "should errorify a field for a model with errors" do
300
- model = mock("model")
301
- model.stub!(:new_record?).and_return(true)
302
- model.stub!(:class).and_return("MyClass")
303
- model.stub!(:foo).and_return("FOO")
304
- errors = mock("errors")
305
- errors.should_receive(:on).with(:foo).and_return(true)
306
-
307
- model.stub!(:errors).and_return(errors)
308
- @c.instance_variable_set(:@obj, model)
309
- r = @c.render :basic
310
- r.should have_selector("input[class='error text']")
311
- end
312
- end
313
-
314
- describe "bound_radio_button" do
315
-
316
- before :each do
317
- @c = BoundRadioButtonSpecs.new(Rango::Request.new({}))
318
- @c.instance_variable_set(:@obj, FakeModel.new)
319
- end
320
-
321
- it "should take a string object and return a useful text control" do
322
- r = @c.render :basic
323
- r.should have_selector("input[type=radio][id=fake_model_foo][name='fake_model[foo]'][value=foowee]")
324
- end
325
-
326
- it "should take additional attributes and use them" do
327
- r = @c.render :basic
328
- r.should have_selector("input[type=radio][name='fake_model[foo]'][value=foowee][bar='7']")
329
- end
330
-
331
- it "should provide an additional label tag if the :label option is passed in" do
332
- form = @c.render :basic
333
- form.should have_selector("input + label:contains('LABEL')")
334
- form.should_not have_selector("input[label]")
335
- end
336
-
337
- it "should render the label tag with the proper for= atttribute" do
338
- form = @c.render :basic
339
- form.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
340
- end
341
-
342
- it "should not errorify the field for a new object" do
343
- r = @c.render :basic
344
- r.should_not have_selector("input[type=radio][name='fake_model[foo]'][class=error]")
345
- end
346
-
347
- it "should errorify a field for a model with errors" do
348
- model = mock("model")
349
- model.stub!(:new_record?).and_return(true)
350
- model.stub!(:class).and_return("MyClass")
351
- model.stub!(:foo).and_return("FOO")
352
- errors = mock("errors")
353
- errors.should_receive(:on).with(:foo).and_return(true)
354
-
355
- model.stub!(:errors).and_return(errors)
356
- @c.instance_variable_set(:@obj, model)
357
- r = @c.render :basic
358
- r.should have_selector("input[class='error radio']")
359
- end
360
- end
361
-
362
- describe "password_field" do
363
-
364
- before :each do
365
- @c = PasswordFieldSpecs.new(Rango::Request.new({}))
366
- end
367
-
368
- it "should return a basic password field, but omit the value" do
369
- r = @c.render :basic
370
- r.should have_selector("input[type=password][id=foo][name=foo]")
371
- end
372
-
373
- it "should provide an additional label tag if the :label option is passed in" do
374
- r = @c.render :basic
375
- r.should have_selector("label[for=foo]:contains('LABEL')")
376
- end
377
-
378
- it "should be disabled if :disabled => true is passed in" do
379
- r = @c.render :disabled
380
- r.should match_tag(:input, :type => "password", :disabled => "disabled")
381
- end
382
- end
383
-
384
- describe "bound_password_field" do
385
-
386
- before :each do
387
- @c = BoundPasswordFieldSpecs.new(Rango::Request.new({}))
388
- @obj = FakeModel.new
389
- @c.instance_variable_set(:@obj, @obj)
390
- end
391
-
392
- it "should take a string object and return a useful password control, but omit the value" do
393
- r = @c.render :basic
394
- r.should match_tag(:input, :type => "password", :id => "fake_model_foo", :name => "fake_model[foo]")
395
- end
396
-
397
- it "should take additional attributes and use them" do
398
- r = @c.render :basic
399
- r.should match_tag(:input, :type => "password", :name => "fake_model[foo]", :bar => "7", :value => @obj.foo)
400
- end
401
-
402
- it "should provide an additional label tag if the :label option is passed in" do
403
- r = @c.render :basic
404
- r.should match(/<label.*>LABEL<\/label><input/)
405
- r.should_not match_tag(:input, :label => "LABEL")
406
- end
407
-
408
- it "should render the label tag with the proper for= atttribute" do
409
- form = @c.render :basic
410
- form.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
411
- end
412
-
413
- it "should not errorify the field for a new object" do
414
- r = @c.render :basic
415
- r.should_not match_tag(:input, :class => "error")
416
- end
417
-
418
- it "should errorify a field for a model with errors" do
419
- model = mock("model")
420
- model.stub!(:new_record?).and_return(true)
421
- model.stub!(:class).and_return("MyClass")
422
- model.stub!(:foo).and_return("FOO")
423
- errors = mock("errors")
424
- errors.should_receive(:on).with(:foo).and_return(true)
425
-
426
- model.stub!(:errors).and_return(errors)
427
-
428
- @c.instance_variable_set(:@obj, model)
429
- r = @c.render :basic
430
- r.should match_tag(:input, :class => "error password")
431
- end
432
-
433
- end
434
-
435
- describe "check_box" do
436
-
437
- before :each do
438
- @c = CheckBoxSpecs.new(Rango::Request.new({}))
439
- end
440
-
441
- it "should return a basic checkbox based on the values passed in" do
442
- r = @c.render :basic
443
- r.should match_tag(:input, :class => "checkbox", :id => "foo", :name => "foo", :checked => "checked")
444
- end
445
-
446
- it "should provide an additional label tag if the :label option is passed in" do
447
- result = @c.render :label
448
- result.should have_selector("label[for=foo]:contains('LABEL')")
449
-
450
- result.should match(/<input.*><label/)
451
- res = result.scan(/<[^>]*>/)
452
- res[0].should_not match_tag(:input, :label => "LABEL")
453
- end
454
-
455
- it 'should remove the checked="checked" attribute if :checked is false or nil' do
456
- r = @c.render :unchecked
457
- r.should_not include('checked="')
458
- end
459
-
460
- it 'should have the checked="checked" attribute if :checked => true is passed in' do
461
- r = @c.render :basic
462
- r.should include('checked="checked"')
463
- end
464
-
465
- it "should not be boolean by default" do
466
- r = @c.render :basic
467
- r.should match_tag(:input, :type => "checkbox", :name => "foo")
468
- end
469
-
470
- it "should add a hidden input if boolean" do
471
- r = @c.render :boolean
472
- r.should have_tag(:input, :type => "checkbox", :value => "1")
473
- r.should have_tag(:input, :type => "hidden", :value => "0")
474
- r.should match(/<input.*?type="hidden"[^>]*>[^<]*<input.*?type="checkbox"[^>]*>/)
475
-
476
- end
477
-
478
- it "should not allow a :value param if boolean" do
479
- lambda { @c.render :raises_error_if_not_boolean }.
480
- should raise_error(ArgumentError, /can't be used with a boolean checkbox/)
481
- end
482
-
483
- it "should not allow :boolean => false if :on and :off are specified" do
484
- lambda { @c.render :raises_error_if_on_off_and_boolean_false }.
485
- should raise_error(ArgumentError, /cannot be used/)
486
- end
487
-
488
- it "should be boolean if :on and :off are specified" do
489
- html = @c.render :on_off_is_boolean
490
- html.should have_tag(:input, :type => "checkbox", :value => "YES", :name => "foo")
491
- html.should have_tag(:input, :type => "hidden", :value => "NO", :name => "foo")
492
- end
493
-
494
- it "should have both :on and :off specified or neither" do
495
- lambda { @c.render :raise_unless_both_on_and_off }.should raise_error(ArgumentError, /must be specified/)
496
- lambda { @c.render :raise_unless_both_on_and_off }.should raise_error(ArgumentError, /must be specified/)
497
- end
498
-
499
- it "should convert :value to a string on a non-boolean checkbox" do
500
- r = @c.render :to_string
501
- r.should match_tag(:input, :value => "")
502
- r.should match_tag(:input, :value => "false")
503
- r.should match_tag(:input, :value => "0")
504
- r.should match_tag(:input, :value => "0")
505
- r.should match_tag(:input, :value => "1")
506
- r.should match_tag(:input, :value => "1")
507
- r.should match_tag(:input, :value => "true")
508
- end
509
-
510
- it "should be disabled if :disabled => true is passed in" do
511
- r = @c.render :disabled
512
- r.should match_tag(:input, :type => "checkbox", :disabled => "disabled")
513
- end
514
-
515
- it "should be possible to call with just check_box" do
516
- r = @c.render :simple
517
- r.should match_tag(:input, :type => "checkbox", :class => "checkbox")
518
- end
519
- end
520
-
521
- describe "bound_check_box" do
522
-
523
- before :each do
524
- @c = BoundCheckBoxSpecs.new(Rango::Request.new({}))
525
- @c.instance_variable_set(:@obj, FakeModel.new)
526
- end
527
-
528
- it "should take a string and return a useful checkbox control" do
529
- r = @c.render :basic
530
- r.should match_tag(:input, :type =>"checkbox", :id => "fake_model_baz", :name => "fake_model[baz]", :class => "checkbox", :value => "1", :checked => "checked", :id => "fake_model_baz")
531
- r.should match_tag(:input, :type =>"hidden", :name => "fake_model[baz]", :value => "0")
532
- end
533
-
534
- it "should raise an error if you try to use :value" do
535
- lambda { @c.render(:raise_value_error) }.should raise_error(ArgumentError, /:value can't be used with a bound_check_box/)
536
- end
537
-
538
- it "should support models from datamapper" do
539
- @c.instance_variable_set(:@obj, FakeDMModel.new)
540
- r = @c.render :basic
541
- r.should match_tag(:input,
542
- :type =>"checkbox",
543
- :name => "fake_dm_model[baz]",
544
- :class => "checkbox",
545
- :value => "1",
546
- :checked => "checked",
547
- :id => "fake_dm_model_baz")
548
-
549
- r.should match_tag(:input, :type =>"hidden", :name => "fake_dm_model[bat]", :value => "0")
550
- r.should match_tag(:input, :type =>"checkbox", :name => "fake_dm_model[bat]", :class => "checkbox", :value => "1")
551
- end
552
-
553
- it "should allow a user to set the :off value" do
554
- r = @c.render :on_and_off
555
- r.should match_tag(:input, :type =>"hidden", :name => "fake_model[bat]", :value => "off")
556
- r.should match_tag(:input, :type =>"checkbox", :name => "fake_model[bat]", :class => "checkbox", :value => "on")
557
- end
558
-
559
- it "should render controls with errors if their attribute contains an error" do
560
- r = @c.render :errors
561
- r.should match_tag(:input, :type =>"checkbox", :name => "fake_model[bazbad]", :class => "error checkbox", :value => "1", :checked => "checked")
562
- r.should match_tag(:input, :type =>"hidden", :name => "fake_model[batbad]", :value => "0")
563
- end
564
-
565
- it "should provide an additional label tag if the :label option is passed in" do
566
- form = @c.render :label
567
- form.should match( /<input.*><label.*>LABEL<\/label>/ )
568
- form.should_not match_tag(:input, :label => "LABEL")
569
- end
570
-
571
- it "should render the label tag with the proper for= atttribute" do
572
- form = @c.render :label
573
- form.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
574
- end
575
-
576
- it "should not errorify the field for a new object" do
577
- r = @c.render :basic
578
- r.should_not match_tag(:input, :type => "checkbox", :class => "error checkbox")
579
- end
580
-
581
- it "should errorify a field for a model with errors" do
582
- model = mock("model")
583
- model.stub!(:new_record?).and_return(true)
584
- model.stub!(:class).and_return("MyClass")
585
- model.stub!(:baz).and_return("BAZ")
586
- model.stub!(:bat).and_return("BAT")
587
- errors = mock("errors")
588
- errors.should_receive(:on).with(:baz).and_return(true)
589
- errors.should_receive(:on).with(:bat).and_return(true)
590
-
591
- model.stub!(:errors).and_return(errors)
592
-
593
- @c.instance_variable_set(:@obj, model)
594
- r = @c.render :basic
595
- r.should match_tag(:input, :type => "checkbox", :class => "error checkbox")
596
- end
597
-
598
- it "should be boolean" do
599
- r = @c.render :basic
600
- r.should have_tag(:input, :type => "checkbox", :value => "1")
601
- r.should have_tag(:input, :type => "hidden", :value => "0")
602
- end
603
-
604
- it "should be checked if the value of the model's attribute is equal to the value of :on" do
605
- r = @c.render :checked
606
- r.should match_tag(:input, :type =>"checkbox", :value => "foowee", :checked => "checked")
607
- r.should match_tag(:input, :type =>"checkbox", :value => "YES")
608
- end
609
-
610
- it "should render false attributes as not checked" do
611
- @c.instance_variable_set(:@obj, FakeDMModel.new)
612
- r = @c.render :basic_unchecked
613
- r.should match_tag(:input, :type =>"checkbox", :name => "fake_dm_model[bat]")
614
- r.should_not include("checked=")
615
- end
616
- end
617
-
618
- describe "hidden_field" do
619
-
620
- before :each do
621
- @c = HiddenFieldSpecs.new(Rango::Request.new({}))
622
- end
623
-
624
- it "should return a basic checkbox based on the values passed in" do
625
- r = @c.render :basic
626
- r.should match_tag(:input, :type => "hidden", :id => "foo", :name => "foo", :value => "bar")
627
- end
628
-
629
- it "should not render a label if the :label option is passed in" do
630
- res = @c.render :label
631
- res.should_not match(/<label>LABEL/)
632
- res.should_not match_tag(:input, :label=> "LABEL")
633
- end
634
-
635
- it "should be disabled if :disabled => true is passed in" do
636
- r = @c.render :disabled
637
- r.should match_tag(:input, :type => "hidden", :disabled => "disabled")
638
- end
639
- end
640
-
641
- describe "bound_hidden_field" do
642
-
643
- before :each do
644
- @c = BoundHiddenFieldSpecs.new(Rango::Request.new({}))
645
- @c.instance_variable_set(:@obj, FakeModel.new)
646
- end
647
-
648
- it "should take a string and return a hidden field control" do
649
- r = @c.render :basic
650
- r.should match_tag(:input, :type =>"hidden", :id => "fake_model_foo", :name => "fake_model[foo]", :value => "foowee")
651
- end
652
-
653
- it "should render controls with errors if their attribute contains an error" do
654
- r = @c.render :errors
655
- r.should match_tag(:input, :type =>"hidden", :name => "fake_model[foobad]", :value => "foowee", :class => "error hidden")
656
- end
657
-
658
- it "should not render a label if the :label option is passed in" do
659
- r = @c.render :label
660
- r.should_not match(/<label>LABEL/)
661
- r.should_not match_tag(:input, :label=> "LABEL")
662
- end
663
-
664
- it "should not errorify the field for a new object" do
665
- r = @c.render :basic
666
- r.should_not match_tag(:input, :type => "hidden", :class => "error")
667
- end
668
-
669
- it "should not errorify a field for a model with errors" do
670
- model = mock("model")
671
- model.stub!(:new_record?).and_return(true)
672
- model.stub!(:class).and_return("MyClass")
673
- model.stub!(:foo).and_return("FOO")
674
- errors = mock("errors")
675
- errors.should_receive(:on).with(:foo).and_return(true)
676
-
677
- model.stub!(:errors).and_return(errors)
678
-
679
- @c.instance_variable_set(:@model, model)
680
- r = @c.render :hidden_error
681
- r.should match_tag(:input, :type => "hidden", :name => "my_class[foo]", :class => "error hidden")
682
- end
683
-
684
- end
685
-
686
- describe "radio_button" do
687
-
688
- before :each do
689
- @c = RadioButtonSpecs.new(Rango::Request.new({}))
690
- end
691
-
692
- it "should should return a basic radio button based on the values passed in" do
693
- r = @c.render :basic
694
- r.should match_tag(:input, :type => "radio", :name => "foo", :value => "bar", :id => "baz")
695
- end
696
-
697
- it "should provide an additional label tag if the :label option is passed in" do
698
- result = @c.render :label
699
- result.should match(/<input.*><label.*>LABEL<\/label>/)
700
- res = result.scan(/<[^>]*>/)
701
- res[0].should_not match_tag(:input, :label => "LABEL")
702
- end
703
-
704
- it "should render the label tag with the proper for= atttribute" do
705
- form = @c.render :label
706
- form.should have_selector("label[for='foo']:contains('LABEL')")
707
- end
708
-
709
- it "should be disabled if :disabled => true is passed in" do
710
- r = @c.render :disabled
711
- r.should match_tag(:input, :type => "radio", :disabled => "disabled")
712
- end
713
-
714
- it "should be checked if :checked => true is passed in" do
715
- r = @c.render :checked
716
- r.should match_tag(:input, :type => "radio", :checked => "checked")
717
- end
718
-
719
- it "should be unchecked if :checked => false is passed in" do
720
- r = @c.render :unchecked
721
- r.should_not include("checked=")
722
- end
723
- end
724
-
725
- describe "radio_group" do
726
-
727
- before :each do
728
- @c = RadioGroupSpecs.new(Rango::Request.new({}))
729
- end
730
-
731
- it "should return a group of radio buttons" do
732
- radio = @c.render :basic
733
- radio_tags = radio.scan(/<[^>]*>/)
734
- radio_tags[0].should match_tag(:input, :type => "radio", :value => "foowee")
735
- radio_tags[3].should match_tag(:input, :type => "radio", :value => "baree")
736
- end
737
-
738
- it "should provide an additional label tag for each option in array-based options" do
739
- radio = @c.render :basic
740
- radio.scan( /<input.*?><label.*?>(foowee|baree)<\/label>/ ).size.should == 2
741
- radio = radio.scan(/<[^>]*>/)
742
- radio[0].should_not match_tag(:input, :label => "LABEL")
743
- radio[3].should_not match_tag(:input, :label => "LABEL")
744
- end
745
-
746
- it "should accept array of hashes as options" do
747
- radio = @c.render :hash
748
- radio.scan( /<input.*?><label.*?>(Five|Bar)<\/label>/ ).size.should == 2
749
- radio.scan(/<[^>]*>/).size.should == 6
750
- radio.should match_tag(:input, :value => 5)
751
- radio.should match_tag(:label)
752
- radio.should match_tag(:input, :value => 'bar', :id => 'bar_id')
753
- radio.should match_tag(:label, :for => 'bar_id')
754
- end
755
-
756
- it "should render the label tags on each radio button with the proper for= atttribute" do
757
- form = @c.render :hash
758
- form.should have_selector("label[for='bar_id']:contains('Bar')")
759
- end
760
-
761
- it "should apply attributes to each element" do
762
- radio = @c.render :attributes
763
- radio = radio.scan(/<[^>]*>/)
764
- radio[0].should match_tag(:input, :type => "radio", :value => "foowee", :class => "CLASS radio")
765
- radio[3].should match_tag(:input, :type => "radio", :value => "baree", :class => "CLASS radio")
766
- end
767
-
768
- it "should override universal attributes with specific ones" do
769
- radio = @c.render :specific_attributes
770
- radio = radio.scan(/<[^>]*>/)
771
- radio[0].should match_tag(:input, :type => "radio", :value => "foowee", :class => "CLASS radio")
772
- radio[3].should match_tag(:input, :type => "radio", :value => "baree", :class => "BAREE radio")
773
- end
774
-
775
- it "should allow specifying a checked radio button" do
776
- r = @c.render :checked
777
- r.should match_tag(:input, :value => "bar", :checked => "checked")
778
- end
779
- end
780
-
781
-
782
- describe "bound_radio_group" do
783
-
784
- before do
785
- @c = BoundRadioGroupSpecs.new(Rango::Request.new({}))
786
- @c.instance_variable_set(:@obj, FakeModel.new)
787
- end
788
-
789
- it "should return a group of radio buttons" do
790
- r = @c.render :basic
791
- r.should match_tag(:input, :type => "radio", :id => "fake_model_foo_foowee", :name => "fake_model[foo]", :value => "foowee", :checked => "checked")
792
- r.should match_tag(:input, :type => "radio", :id => "fake_model_foo_baree", :name => "fake_model[foo]", :value => "baree")
793
- r.should_not match_tag(:checked => "checked")
794
- end
795
-
796
- it "should provide an additional label tag for each option in array-based options" do
797
- r = @c.render :basic
798
- r.scan( /<input.*?><label.*?>(foowee|baree)<\/label>/ ).size.should == 2
799
- radio = r.scan(/<[^>]*>/)[2..-2]
800
- radio[0].should_not match_tag(:input, :label => "LABEL")
801
- radio[3].should_not match_tag(:input, :label => "LABEL")
802
- end
803
-
804
- it "should render the label tags on each radio option with the proper for= atttribute" do
805
- form = @c.render :basic
806
- form.should have_selector("label[for=fake_model_foo_foowee]:contains('foowee')")
807
- form.should have_selector("label[for=fake_model_foo_baree]:contains('baree')")
808
- end
809
-
810
- it "should accept array of hashes as options" do
811
- r = @c.render :hashes
812
- r.scan( /<input.*?><label.*?>(Five|Bar)<\/label>/ ).size.should == 2
813
- r.scan(/<[^>]*>/)[2..-2].size.should == 6
814
- r.should match_tag(:input, :value => 5)
815
- r.should match_tag(:label)
816
- r.should match_tag(:input, :value => 'bar', :id => 'bar_id')
817
- r.should match_tag(:label, :for => 'bar_id')
818
- end
819
-
820
- it "should provide autogenerated id for inputs" do
821
- r = @c.render :mixed
822
- r.should match_tag(:input, :id => 'fake_model_foo_bar')
823
- r.should match_tag(:label, :for => 'fake_model_foo_bar')
824
- r.should match_tag(:input, :id => 'fake_model_foo_bar')
825
- r.should match_tag(:label, :for => 'fake_model_foo_bar')
826
- end
827
-
828
- it "should override autogenerated id for inputs with hash-given id" do
829
- r = @c.render :override_id
830
- r.should match_tag(:input, :id => 'bar_id')
831
- r.should match_tag(:label, :for => 'bar_id')
832
- end
833
-
834
- it "should only have one element with the checked property" do
835
- r = @c.render :basic
836
- r.should match_tag(:input, :checked => "checked")
837
- r.should_not match_tag(:input, :checked => "false")
838
- end
839
- end
840
-
841
-
842
- describe "text_area" do
843
-
844
- before do
845
- @c = TextAreaSpecs.new(Rango::Request.new({}))
846
- end
847
-
848
- it "should should return a basic text area based on the values passed in" do
849
- r = @c.render :basic
850
- r.should match_tag(:textarea, :name => "foo", :id => "foo")
851
- end
852
-
853
- it "should handle a nil content" do
854
- r = @c.render :nil
855
- r.should == "<textarea name=\"foo\" id=\"foo\"></textarea>"
856
- end
857
-
858
-
859
- # TODO: Why is this required?
860
- # ---------------------------
861
- #
862
- # it "should handle a nil attributes hash" do
863
- # text_area("CONTENT", nil).should == "<textarea>CONTENT</textarea>"
864
- # end
865
-
866
- it "should render a label when the :label option is passed in" do
867
- result = @c.render :label
868
- result.should match(/<label.*>LABEL<\/label><textarea/)
869
- result.should_not match_tag(:textarea, :label => "LABEL")
870
-
871
- result.should have_selector("label[for=foo]:contains('LABEL')")
872
- end
873
-
874
- it "should be disabled if :disabled => true is passed in" do
875
- r = @c.render :disabled
876
- r.should match_tag(:textarea, :disabled => "disabled")
877
- end
878
- end
879
-
880
- describe "bound_text_area" do
881
-
882
- before do
883
- @c = BoundTextAreaSpecs.new(Rango::Request.new({}))
884
- @obj = FakeModel.new
885
- @c.instance_variable_set(:@obj, @obj)
886
- end
887
-
888
- it "should provide :id attribute" do
889
- r = @c.render :basic
890
- r.should match_tag(:textarea, :id => 'fake_model_foo', :name => "fake_model[foo]")
891
- r.should =~ />\s*#{@obj.foo}\s*</
892
- end
893
-
894
- it "should render the label tag with the proper for= atttribute" do
895
- form = @c.render :label
896
- form.should have_selector("label[for='fake_model_foo']:contains('LABEL')")
897
- end
898
- end
899
-
900
- describe "select" do
901
-
902
- before do
903
- @c = SelectSpecs.new(Rango::Request.new({}))
904
- end
905
-
906
- it "should provide a blank option if you :include_blank" do
907
- r = @c.render :blank
908
- r.should =~ /<option.*>\s*<\/option>/
909
- end
910
-
911
- it "should render the select tag proper attributes" do
912
- r = @c.render :basic
913
- r.should match_tag( :select, :name => "foo", :id => "foo")
914
- r.should have_selector("select[name=foo] option:contains('one')")
915
- r.should have_selector("select[name=foo] option:contains('two')")
916
- r.should have_selector("select[name=foo] option:contains('three')")
917
- end
918
-
919
- it "should allow selecting an option by passing in :selected => 'three'" do
920
- r = @c.render :selected
921
- r.should_not have_selector("select[name=foo] option[selected]:contains('one')")
922
- r.should_not have_selector("select[name=foo] option[selected]:contains('two')")
923
- r.should have_selector("select[name=foo] option[selected]:contains('three')")
924
- end
925
-
926
- it "should render the select tag with suffix '[]' to name when :multiple => true" do
927
- r = @c.render :multiple
928
- r.should match_tag( :select, :name => "foo[]")
929
- end
930
-
931
- it "should render a label when the :label option is passed in" do
932
- result = @c.render :label
933
- result.should have_selector("label[for=foo]:contains('LABEL')")
934
- end
935
- end
936
-
937
- describe "bound_select" do
938
-
939
- before do
940
- @c = BoundSelectSpecs.new(Rango::Request.new({}))
941
- @c.instance_variable_set(:@obj, FakeModel.new)
942
- end
943
-
944
- it "should render the select tag with the correct id and name" do
945
- r = @c.render :basic
946
- r.should match_tag( :select, :id => "fake_model_foo", :name => "fake_model[foo]" )
947
- end
948
-
949
- it "should render the select tag with suffix '[]' to name when :multiple => true" do
950
- r = @c.render :multiple
951
- r.should match_tag( :select, :id => "fake_model_foo", :name => "fake_model[foo][]" )
952
- end
953
-
954
- it "should include a blank option" do
955
- r = @c.render :blank
956
- r.should match_tag(:option, :value => '')
957
- r.should =~ /<option.*>\s*<\/option>/
958
- end
959
-
960
- it "should render a prompt option without a value" do
961
- r = @c.render :prompt
962
- r.should match_tag(:option, :value => '')
963
- r.should =~ /<option.*>Choose<\/option>/
964
- end
965
-
966
- it "should render a select tag with options" do
967
- r = @c.render :with_options
968
- r.should match_tag( :select, :class => "class1 class2", :title=> "This is the title" )
969
- r.should =~ /<select.*>\s*<\/select>/
970
- end
971
-
972
- it "should render a select tag with options and a blank option" do
973
- r = @c.render :with_options_with_blank
974
- r.should match_tag( :select, :title => "TITLE" )
975
- r.should match_tag( :option, :value => '' )
976
- r.should =~ /<option.*>\s*<\/option>/
977
- end
978
-
979
- it "should render the label tag with the proper for= atttribute" do
980
- form = @c.render :label
981
- form.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
982
- end
983
-
984
- # Not sure how this makes any sense
985
- # ---------------------------------
986
- #
987
- # it "should render the text as the value if no text_method is specified" do
988
- # form_for @obj do
989
- # content = select( :foo, :collection => [FakeModel] )
990
- # content.should match_tag( :option, :value => "FakeModel" )
991
- # end
992
- # end
993
-
994
- end
995
-
996
- describe "bound option tags" do
997
-
998
- before do
999
- @c = BoundOptionTagSpecs.new(Rango::Request.new({}))
1000
- @c.instance_variable_set(:@obj, FakeModel.new)
1001
- end
1002
-
1003
-
1004
- it "should use text_method and value_method for tag generation" do
1005
- r = @c.render :text_and_value
1006
- r.should match_tag( :option, :content => "foowee", :value => "7" )
1007
- r.should match_tag( :option, :content => "foowee2", :value => "barbar" )
1008
-
1009
- # content = options_from_collection_for_select( [FakeModel.new, FakeModel2.new], :text_method => 'foo', :value_method => 'bar' )
1010
- # content.should match_tag( :option, :content => "foowee", :value => "7" )
1011
- # content.should match_tag( :option, :content => "foowee2", :value => "barbar" )
1012
- end
1013
-
1014
- it "should render a hash of arrays as a grouped select box" do
1015
- model1 = FakeModel.new ; model1.make = "Ford" ; model1.model = "Mustang" ; model1.vin = '1'
1016
- model2 = FakeModel.new ; model2.make = "Ford" ; model2.model = "Falcon" ; model2.vin = '2'
1017
- model3 = FakeModel.new ; model3.make = "Holden" ; model3.model = "Commodore" ; model3.vin = '3'
1018
- @c.instance_variable_set(:@model1, model1)
1019
- @c.instance_variable_set(:@model2, model2)
1020
- @c.instance_variable_set(:@model3, model3)
1021
- @c.instance_variable_set(:@collection, [model1, model2, model3].inject({}) {|s,e| (s[e.make] ||= []) << e; s })
1022
- r = @c.render :grouped
1023
- # Blank actually defaults to ""
1024
- r.should =~ /<optgroup label=\"Ford\"><option/
1025
- r.should match_tag( :optgroup, :label => "Ford" )
1026
- r.should match_tag( :option, :selected => "selected", :value => "1", :content => "Mustang" )
1027
- r.should match_tag( :option, :value => "2", :content => "Falcon" )
1028
- r.should match_tag( :optgroup, :label => "Holden" )
1029
- r.should match_tag( :option, :value => "3", :content => "Commodore" )
1030
-
1031
- # collection = [@model1, @model2, @model3].inject({}) {|s,e| (s[e.make] ||= []) << e; s }
1032
- # content = options_from_collection_for_select(collection, :text_method => 'model', :value_method => 'vin', :selected => '1')
1033
- end
1034
-
1035
- it "should render a collection of nested value/content arrays" do
1036
- r = @c.render :nested
1037
- r.should match_tag(:select, :id => "fake_model_foo", :name => "fake_model[foo]")
1038
- r.should match_tag(:option, :value => "small", :content => "Small")
1039
- r.should match_tag(:option, :value => "medium", :content => "Medium")
1040
- r.should match_tag(:option, :value => "large", :content => "Large")
1041
- end
1042
-
1043
- # Is this really worth the extra speed hit? I'm thinking not
1044
- # ----------------------------------------------------------
1045
- #
1046
- # it "should humanize and titlize keys in the label for the option group" do
1047
- # collection = { :some_snake_case_key => [FakeModel.new] }
1048
- # form_for @obj do
1049
- # content = select( :foo, :collection => collection )
1050
- # content.should match_tag( :optgroup, :label => "Some Snake Case Key" )
1051
- # end
1052
- # end
1053
-
1054
- end
1055
-
1056
- require "hpricot"
1057
-
1058
- describe "option tags" do
1059
-
1060
- before do
1061
- @c = OptionTagSpecs.new(Rango::Request.new({}))
1062
- @c.instance_variable_set(:@collection, [['rabbit','Rabbit'],['horse','Horse'],['bird','Bird']])
1063
- end
1064
-
1065
- it "should provide an option tag for each item in the collection" do
1066
- r = @c.render :collection
1067
- doc = Hpricot( r )
1068
- (doc/"option").size.should == 3
1069
- end
1070
-
1071
- it "should provide a blank option" do
1072
- r = @c.render :with_blank
1073
- r.should match_tag( :option, :value => '' )
1074
- end
1075
-
1076
- it "should render the prompt option at the top" do
1077
- r = @c.render :with_prompt
1078
- #ontent = select( :collection => [["foo", "Foo"]], :prompt => 'Choose' )
1079
- r.should match(/<option[^>]*>Choose<\/option>[^<]*<option[^>]*>Foo<\/option>/)
1080
- end
1081
-
1082
- it "should provide selected options by value" do
1083
- r = @c.render :selected
1084
- r.should match_tag( :option, :value => 'rabbit', :selected => 'selected', :content => 'Rabbit' )
1085
- r.should_not match_tag( :option, :value => 'chicken', :selected => nil, :content => 'Chicken' )
1086
- end
1087
-
1088
- it "should handle arrays for selected when :multiple is true" do
1089
- r = @c.render :multiple_selects
1090
- r.should match_tag( :option, :value => 'minutes', :selected => 'selected', :content => 'Time' )
1091
- r.should match_tag( :option, :value => 'dollars', :selected => 'selected', :content => 'Money' )
1092
- end
1093
-
1094
- it "should render a hash of options as optgroup" do
1095
- r = @c.render :optgroups
1096
- r.should match_tag( :optgroup, :label => 'Fruit' )
1097
- r.should match_tag( :optgroup, :label => 'Vegetables' )
1098
- r.should match_tag( :option, :value => 'banana', :selected => 'selected', :content => 'Banana' )
1099
- end
1100
-
1101
- it "should accept an array of strings in :collection as the content/value of each option" do
1102
- r = @c.render :array
1103
- r.should match_tag(:option, :content => "one", :value => "one")
1104
- r.should match_tag(:option, :content => "two", :value => "two")
1105
- end
1106
-
1107
- it "should only pass :selected and :value attrs to <option> tags" do
1108
- r = @c.render :no_extra_attributes
1109
- r = r.slice(/<option[^>]*>[^<]*<\/option>/)
1110
- r.should match_tag(:option, :value => "rabbit", :content => "Rabbit")
1111
- r.should_not match_tag(:option, :id => "my_id", :name => "my_name", :class => "classy")
1112
- end
1113
-
1114
- it "should not pollute the <select> attributes with <option> attributes" do
1115
- r = @c.render :clean
1116
- r.should_not match_tag(:select, :value => "banana", :selected => "selected")
1117
- end
1118
- end
1119
-
1120
- describe "fieldset" do
1121
-
1122
- before :each do
1123
- @c = FieldsetSpecs.new(Rango::Request.new({}))
1124
- end
1125
-
1126
- it "should provide legend option" do
1127
- r = @c.render :legend
1128
- r.should have_selector("fieldset legend:contains('TEST')")
1129
- end
1130
-
1131
- end
1132
-
1133
- describe "label" do
1134
-
1135
- before :each do
1136
- @c = LabelSpecs.new(Rango::Request.new({}))
1137
- end
1138
-
1139
- it "should render a label tag" do
1140
- r = @c.render :basic
1141
- r.should have_selector("label[for=user_first_name]:contains('First Name')")
1142
- end
1143
-
1144
- it "should render a label tag with a :class attribute set" do
1145
- r = @c.render :basic_with_class
1146
- r.should have_selector("label[class=name_class]")
1147
- end
1148
-
1149
- it "should render a label tag with both rel and style attributes set" do
1150
- r = @c.render :basic_with_attributes
1151
- r.should have_selector("label[rel=tooltip][style='display:none']")
1152
- end
1153
-
1154
- end
1155
-
1156
- describe "file_field" do
1157
-
1158
- before :each do
1159
- @c = FileFieldSpecs.new(Rango::Request.new({}))
1160
- end
1161
-
1162
- it "should return a basic file field based on the values passed in" do
1163
- r = @c.render :with_values
1164
- r.should have_selector("input[type=file][id=foo][name=foo][value=bar]")
1165
- end
1166
-
1167
- it "should wrap the field in a label if the :label option is passed to the file" do
1168
- r = @c.render :with_label
1169
- r.should have_selector("label[for=foo]:contains('LABEL') + input.file[type=file]")
1170
- end
1171
-
1172
- it "should be disabled if :disabled => true is passed in" do
1173
- r = @c.render :disabled
1174
- r.should have_selector("input[type=file][disabled=disabled]")
1175
- end
1176
-
1177
- it "should make the surrounding form multipart" do
1178
- r = @c.render :makes_multipart
1179
- r.should have_selector("form[enctype='multipart/form-data']")
1180
- end
1181
- end
1182
-
1183
- describe "bound_file_field" do
1184
-
1185
- before :each do
1186
- @c = BoundFileFieldSpecs.new(Rango::Request.new({}))
1187
- @c.instance_variable_set(:@obj, FakeModel.new)
1188
- end
1189
-
1190
- it "should take a string object and return a useful file control" do
1191
- r = @c.render :takes_string
1192
- r.should have_selector("input[type=file][id=fake_model_foo][name='fake_model[foo]'][value=foowee]")
1193
- end
1194
-
1195
- it "should take additional attributes and use them" do
1196
- r = @c.render :additional_attributes
1197
- r.should have_selector("input[type=file][name='fake_model[foo]'][value=foowee][bar='7']")
1198
- end
1199
-
1200
- it "should wrap the file_field in a label if the :label option is passed in" do
1201
- r = @c.render :with_label
1202
- r.should have_selector("label[for=fake_model_foo]:contains('LABEL')")
1203
- r.should_not have_selector("input[label=LABEL]")
1204
- end
1205
- end
1206
-
1207
- describe "submit" do
1208
-
1209
- before :each do
1210
- @c = SubmitSpecs.new(Rango::Request.new({}))
1211
- end
1212
-
1213
- it "should return a basic submit input based on the values passed in" do
1214
- r = @c.render :submit_with_values
1215
- r.should have_selector("input[type=submit][name=foo][value=Done]")
1216
- end
1217
-
1218
- it "should provide an additional label tag if the :label option is passed in" do
1219
- r = @c.render :submit_with_label
1220
- r.should have_selector("input[type=submit][name=submit][value=Done]")
1221
- r.should have_selector("label:contains('LABEL')")
1222
- end
1223
-
1224
- it "should be disabled if :disabled => true is passed in" do
1225
- r = @c.render :disabled_submit
1226
- r.should have_selector("input[type=submit][value=Done][disabled=disabled]")
1227
- end
1228
- end
1229
-
1230
- describe "button" do
1231
-
1232
- before :each do
1233
- @c = ButtonSpecs.new(Rango::Request.new({}))
1234
- end
1235
-
1236
- it "should return a button based on the values passed in" do
1237
- r = @c.render :button_with_values
1238
- r.should have_selector("button[type=button][name=foo][value=bar]:contains('Click Me')")
1239
- end
1240
-
1241
- it "should provide an additional label tag if the :label option is passed in" do
1242
- r = @c.render :button_with_label
1243
- r.should have_selector("button[value=foo]")
1244
- r.should have_selector("label:contains('LABEL')")
1245
- end
1246
-
1247
- it "should be disabled if :disabled => true is passed in" do
1248
- r = @c.render :disabled_button
1249
- r.should have_selector("button[disabled=true]")
1250
- end
1251
- end
1252
-
1253
-
1254
- class MyBuilder < Rango::Helpers::Form::Builder::Base
1255
-
1256
- def update_bound_controls(method, attrs, type)
1257
- super
1258
- attrs[:bound] = type
1259
- end
1260
-
1261
- def update_unbound_controls(attrs, type)
1262
- super
1263
- attrs[:unbound] = type
1264
- end
1265
-
1266
- end
1267
-
1268
- describe "custom builder" do
1269
-
1270
- before :each do
1271
- @c = CustomBuilderSpecs.new(Rango::Request.new({}))
1272
- @c.instance_variable_set(:@obj, FakeModel.new)
1273
- end
1274
-
1275
- it "should let you override update_bound_controls" do
1276
- r = @c.render :everything
1277
- r.should =~ / bound="file"/
1278
- r.should =~ / bound="text"/
1279
- r.should =~ / bound="hidden"/
1280
- r.should =~ / bound="password"/
1281
- r.should =~ / bound="radio"/
1282
- r.should =~ / bound="text_area"/
1283
- end
1284
-
1285
- it "should let you override update_unbound_controls" do
1286
- r = @c.render :everything
1287
- r.should have_selector("button[unbound=button]")
1288
- r.should have_selector("input[unbound=submit]")
1289
- r.should have_selector("textarea[unbound=text_area]")
1290
- end
1291
- end
1292
-
1293
-
1294
- describe 'delete_button' do
1295
-
1296
- before :each do
1297
- @controller = DeleteButtonSpecs.new(Rango::Request.new({}))
1298
- @controller.instance_variable_set(:@obj, FakeModel.new)
1299
- end
1300
-
1301
- it "should have a default submit button text" do
1302
- result = @controller.render :simple_delete # <%= delete_button @obj %>
1303
- result.should have_selector("input[type=submit][value=Delete]")
1304
- end
1305
-
1306
- it 'should return a button inside of a form for the object' do
1307
- result = @controller.render :simple_delete # <%= delete_button @obj %>
1308
- result.should have_selector("form[action='/fake_models/fake_model'][method=post]")
1309
- result.should have_selector("input[type=hidden][value=DELETE][name=_method]")
1310
- end
1311
-
1312
- it 'should allow you to modify the label' do
1313
- result = @controller.render :delete_with_label # <%= delete_button(@obj, "Delete moi!") %>
1314
- result.should have_selector("input[type=submit][value='Delete moi!']")
1315
- end
1316
-
1317
- it "should allow you to pass some extra params like a class" do
1318
- result = @controller.render :delete_with_extra_params
1319
- result.should have_selector("input.custom-class[type=submit][value=Delete]")
1320
- end
1321
-
1322
- it "should allow to pass an explicit url as a string" do
1323
- result = @controller.render :delete_with_explicit_url # <%= delete_button('/test/custom_url') %>
1324
- result.should have_selector("form[action='/test/custom_url'][method=post]")
1325
- end
1326
-
1327
- end
1328
-
1329
- describe "escaping values" do
1330
-
1331
- before :each do
1332
- @c = Hacker.new(Rango::Request.new({}))
1333
- @c.instance_variable_set(:@obj, HackerModel.new)
1334
- end
1335
-
1336
- it "should escape bound text field values" do
1337
- r = @c.render :text_field
1338
- r.should =~ /&amp;&quot;&lt;&gt;/
1339
- end
1340
-
1341
- it "should escape bound hidden field values" do
1342
- r = @c.render :hidden_field
1343
- r.should =~ /&amp;&quot;&lt;&gt;/
1344
- end
1345
-
1346
- it "should escape bound password field values" do
1347
- r = @c.render :password_field
1348
- r.should =~ /&amp;&quot;&lt;&gt;/
1349
- end
1350
-
1351
- it "should escape bound text area values" do
1352
- r = @c.render :text_area
1353
- r.should =~ /&amp;&quot;&lt;&gt;/
1354
- end
1355
-
1356
- it "should escape bound file field values" do
1357
- r = @c.render :file_field
1358
- r.should =~ /&amp;&quot;&lt;&gt;/
1359
- end
1360
-
1361
- it "should escape bound option tag values" do
1362
- r = @c.render :option_tag
1363
- r.should =~ /&amp;&quot;&lt;&gt;/
1364
- end
1365
-
1366
- it "should escape bound radio button values" do
1367
- r = @c.render :radio_button
1368
- r.should =~ /&amp;&quot;&lt;&gt;/
1369
- end
1370
-
1371
- end