merb 0.5.3 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. data/LICENSE +0 -20
  2. data/README +0 -277
  3. data/Rakefile +80 -199
  4. data/TODO +0 -3
  5. metadata +19 -438
  6. data/SVN_REVISION +0 -1
  7. data/app_generators/merb/USAGE +0 -5
  8. data/app_generators/merb/merb_generator.rb +0 -108
  9. data/app_generators/merb/templates/Rakefile +0 -124
  10. data/app_generators/merb/templates/app/controllers/application.rb +0 -3
  11. data/app_generators/merb/templates/app/controllers/exceptions.rb +0 -13
  12. data/app_generators/merb/templates/app/helpers/global_helper.rb +0 -5
  13. data/app_generators/merb/templates/app/mailers/views/layout/application.html.erb +0 -1
  14. data/app_generators/merb/templates/app/mailers/views/layout/application.text.erb +0 -1
  15. data/app_generators/merb/templates/app/parts/views/layout/application.html.erb +0 -1
  16. data/app_generators/merb/templates/app/views/exceptions/internal_server_error.html.erb +0 -216
  17. data/app_generators/merb/templates/app/views/exceptions/not_acceptable.html.erb +0 -38
  18. data/app_generators/merb/templates/app/views/exceptions/not_found.html.erb +0 -40
  19. data/app_generators/merb/templates/app/views/layout/application.html.erb +0 -11
  20. data/app_generators/merb/templates/config/boot.rb +0 -11
  21. data/app_generators/merb/templates/config/dependencies.rb +0 -41
  22. data/app_generators/merb/templates/config/environments/development.rb +0 -1
  23. data/app_generators/merb/templates/config/environments/production.rb +0 -1
  24. data/app_generators/merb/templates/config/environments/test.rb +0 -1
  25. data/app_generators/merb/templates/config/merb.yml +0 -82
  26. data/app_generators/merb/templates/config/merb_init.rb +0 -17
  27. data/app_generators/merb/templates/config/plugins.yml +0 -1
  28. data/app_generators/merb/templates/config/router.rb +0 -35
  29. data/app_generators/merb/templates/config/upload.conf +0 -0
  30. data/app_generators/merb/templates/public/images/merb.jpg +0 -0
  31. data/app_generators/merb/templates/public/merb.fcgi +0 -6
  32. data/app_generators/merb/templates/public/stylesheets/master.css +0 -119
  33. data/app_generators/merb/templates/script/destroy +0 -32
  34. data/app_generators/merb/templates/script/generate +0 -32
  35. data/app_generators/merb/templates/script/stop_merb +0 -13
  36. data/app_generators/merb/templates/script/win_script.cmd +0 -1
  37. data/app_generators/merb/templates/spec/spec.opts +0 -6
  38. data/app_generators/merb/templates/spec/spec_helper.rb +0 -15
  39. data/app_generators/merb/templates/test/test_helper.rb +0 -14
  40. data/app_generators/merb_plugin/USAGE +0 -5
  41. data/app_generators/merb_plugin/merb_plugin_generator.rb +0 -68
  42. data/app_generators/merb_plugin/templates/LICENSE +0 -20
  43. data/app_generators/merb_plugin/templates/README +0 -4
  44. data/app_generators/merb_plugin/templates/Rakefile +0 -35
  45. data/app_generators/merb_plugin/templates/TODO +0 -5
  46. data/app_generators/merb_plugin/templates/merbtasks.rb +0 -6
  47. data/app_generators/merb_plugin/templates/sampleplugin.rb +0 -10
  48. data/app_generators/merb_plugin/templates/sampleplugin_spec.rb +0 -7
  49. data/app_generators/merb_plugin/templates/spec_helper.rb +0 -2
  50. data/bin/merb +0 -4
  51. data/lib/autotest/discover.rb +0 -3
  52. data/lib/autotest/merb_rspec.rb +0 -80
  53. data/lib/merb.rb +0 -188
  54. data/lib/merb/abstract_controller.rb +0 -399
  55. data/lib/merb/assets.rb +0 -160
  56. data/lib/merb/assets.rb.orig +0 -119
  57. data/lib/merb/boot_loader.rb +0 -286
  58. data/lib/merb/boot_loader.rb.orig +0 -235
  59. data/lib/merb/caching.rb +0 -5
  60. data/lib/merb/caching/action_cache.rb +0 -92
  61. data/lib/merb/caching/fragment_cache.rb +0 -39
  62. data/lib/merb/caching/store/file_cache.rb +0 -90
  63. data/lib/merb/caching/store/memory_cache.rb +0 -85
  64. data/lib/merb/config.rb +0 -290
  65. data/lib/merb/constants.rb +0 -50
  66. data/lib/merb/controller.rb +0 -220
  67. data/lib/merb/cookies.rb +0 -95
  68. data/lib/merb/core_ext.rb +0 -15
  69. data/lib/merb/core_ext/array.rb +0 -0
  70. data/lib/merb/core_ext/class.rb +0 -180
  71. data/lib/merb/core_ext/enumerable.rb +0 -49
  72. data/lib/merb/core_ext/get_args.rb +0 -76
  73. data/lib/merb/core_ext/hash.rb +0 -306
  74. data/lib/merb/core_ext/inflections.rb +0 -112
  75. data/lib/merb/core_ext/inflector.rb +0 -275
  76. data/lib/merb/core_ext/kernel.rb +0 -242
  77. data/lib/merb/core_ext/mash.rb +0 -88
  78. data/lib/merb/core_ext/module.rb +0 -67
  79. data/lib/merb/core_ext/numeric.rb +0 -72
  80. data/lib/merb/core_ext/object.rb +0 -183
  81. data/lib/merb/core_ext/string.rb +0 -53
  82. data/lib/merb/core_ext/symbol.rb +0 -6
  83. data/lib/merb/dispatcher.rb +0 -109
  84. data/lib/merb/drb_server.rb +0 -19
  85. data/lib/merb/erubis_ext.rb +0 -10
  86. data/lib/merb/exceptions.rb +0 -192
  87. data/lib/merb/generators/merb_app/merb_app.rb +0 -22
  88. data/lib/merb/generators/merb_generator_helpers.rb +0 -318
  89. data/lib/merb/generators/merb_plugin.rb +0 -22
  90. data/lib/merb/logger.rb +0 -78
  91. data/lib/merb/mail_controller.rb +0 -268
  92. data/lib/merb/mailer.rb +0 -87
  93. data/lib/merb/mixins/basic_authentication.rb +0 -35
  94. data/lib/merb/mixins/controller.rb +0 -160
  95. data/lib/merb/mixins/erubis_capture.rb +0 -68
  96. data/lib/merb/mixins/general_controller.rb +0 -253
  97. data/lib/merb/mixins/inline_partial.rb +0 -32
  98. data/lib/merb/mixins/render.rb +0 -465
  99. data/lib/merb/mixins/responder.rb +0 -449
  100. data/lib/merb/mixins/view_context.rb +0 -558
  101. data/lib/merb/mixins/web_controller.rb +0 -36
  102. data/lib/merb/mongrel_handler.rb +0 -168
  103. data/lib/merb/part_controller.rb +0 -29
  104. data/lib/merb/plugins.rb +0 -16
  105. data/lib/merb/rack_adapter.rb +0 -37
  106. data/lib/merb/request.rb +0 -465
  107. data/lib/merb/router.rb +0 -646
  108. data/lib/merb/server.rb +0 -169
  109. data/lib/merb/session.rb +0 -23
  110. data/lib/merb/session/cookie_store.rb +0 -118
  111. data/lib/merb/session/mem_cache_session.rb +0 -131
  112. data/lib/merb/session/memory_session.rb +0 -176
  113. data/lib/merb/template.rb +0 -37
  114. data/lib/merb/template/erubis.rb +0 -68
  115. data/lib/merb/template/haml.rb +0 -87
  116. data/lib/merb/template/markaby.rb +0 -59
  117. data/lib/merb/template/xml_builder.rb +0 -50
  118. data/lib/merb/test/fake_request.rb +0 -74
  119. data/lib/merb/test/helper.rb +0 -260
  120. data/lib/merb/test/hpricot.rb +0 -136
  121. data/lib/merb/test/multipart.rb +0 -66
  122. data/lib/merb/test/rspec.rb +0 -18
  123. data/lib/merb/test/rspec_matchers/controller_matchers.rb +0 -117
  124. data/lib/merb/test/rspec_matchers/markup_matchers.rb +0 -98
  125. data/lib/merb/upload_handler.rb +0 -80
  126. data/lib/merb/upload_progress.rb +0 -48
  127. data/lib/merb/version.rb +0 -49
  128. data/lib/merb/view_context.rb +0 -79
  129. data/lib/tasks.rb +0 -7
  130. data/lib/tasks/merb.rake +0 -54
  131. data/merb_default_generators/model/USAGE +0 -0
  132. data/merb_default_generators/model/model_generator.rb +0 -16
  133. data/merb_default_generators/model/templates/new_model_template.erb +0 -5
  134. data/merb_default_generators/resource_controller/USAGE +0 -0
  135. data/merb_default_generators/resource_controller/resource_controller_generator.rb +0 -26
  136. data/merb_default_generators/resource_controller/templates/controller.rb +0 -30
  137. data/merb_default_generators/resource_controller/templates/edit.html.erb +0 -1
  138. data/merb_default_generators/resource_controller/templates/helper.rb +0 -5
  139. data/merb_default_generators/resource_controller/templates/index.html.erb +0 -1
  140. data/merb_default_generators/resource_controller/templates/new.html.erb +0 -1
  141. data/merb_default_generators/resource_controller/templates/show.html.erb +0 -1
  142. data/merb_generators/controller/USAGE +0 -5
  143. data/merb_generators/controller/controller_generator.rb +0 -16
  144. data/merb_generators/controller/templates/controller.rb +0 -8
  145. data/merb_generators/controller/templates/helper.rb +0 -5
  146. data/merb_generators/controller/templates/index.html.erb +0 -3
  147. data/merb_generators/part_controller/USAGE +0 -5
  148. data/merb_generators/part_controller/part_controller_generator.rb +0 -27
  149. data/merb_generators/part_controller/templates/controller.rb +0 -8
  150. data/merb_generators/part_controller/templates/helper.rb +0 -5
  151. data/merb_generators/part_controller/templates/index.html.erb +0 -3
  152. data/merb_generators/resource/USAGE +0 -0
  153. data/merb_generators/resource/resource_generator.rb +0 -67
  154. data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +0 -67
  155. data/rspec_generators/merb_controller_test/templates/controller_spec.rb +0 -8
  156. data/rspec_generators/merb_controller_test/templates/edit_spec.rb +0 -12
  157. data/rspec_generators/merb_controller_test/templates/helper_spec.rb +0 -5
  158. data/rspec_generators/merb_controller_test/templates/index_spec.rb +0 -12
  159. data/rspec_generators/merb_controller_test/templates/new_spec.rb +0 -12
  160. data/rspec_generators/merb_controller_test/templates/show_spec.rb +0 -5
  161. data/rspec_generators/merb_model_test/merb_model_test_generator.rb +0 -26
  162. data/rspec_generators/merb_model_test/templates/model_spec_template.erb +0 -7
  163. data/script/destroy +0 -14
  164. data/script/generate +0 -14
  165. data/spec/fixtures/config/environments/environment_config_test.yml +0 -1
  166. data/spec/fixtures/config/merb.yml +0 -18
  167. data/spec/fixtures/controllers/dispatch_spec_controllers.rb +0 -235
  168. data/spec/fixtures/controllers/render_spec_controllers.rb +0 -184
  169. data/spec/fixtures/foo.rb +0 -3
  170. data/spec/fixtures/mailers/views/layout/application.html.erb +0 -3
  171. data/spec/fixtures/mailers/views/layout/application.text.erb +0 -3
  172. data/spec/fixtures/mailers/views/test_mail_controller/eighth.html.erb +0 -1
  173. data/spec/fixtures/mailers/views/test_mail_controller/eighth.text.erb +0 -1
  174. data/spec/fixtures/mailers/views/test_mail_controller/first.html.erb +0 -1
  175. data/spec/fixtures/mailers/views/test_mail_controller/first.text.erb +0 -1
  176. data/spec/fixtures/mailers/views/test_mail_controller/ninth.html.erb +0 -1
  177. data/spec/fixtures/mailers/views/test_mail_controller/ninth.text.erb +0 -1
  178. data/spec/fixtures/mailers/views/test_mail_controller/second.text.erb +0 -1
  179. data/spec/fixtures/mailers/views/test_mail_controller/third.html.erb +0 -1
  180. data/spec/fixtures/models/router_spec_models.rb +0 -30
  181. data/spec/fixtures/parts/views/layout/todo_part.html.erb +0 -3
  182. data/spec/fixtures/parts/views/layout/todo_part.xml.erb +0 -3
  183. data/spec/fixtures/parts/views/todo_part/formatted_output.html.erb +0 -1
  184. data/spec/fixtures/parts/views/todo_part/formatted_output.js.erb +0 -1
  185. data/spec/fixtures/parts/views/todo_part/formatted_output.xml.erb +0 -1
  186. data/spec/fixtures/parts/views/todo_part/list.html.erb +0 -3
  187. data/spec/fixtures/sample.txt +0 -1
  188. data/spec/fixtures/views/erubis.html.erb +0 -1
  189. data/spec/fixtures/views/examples/_erubis.html.erb +0 -1
  190. data/spec/fixtures/views/examples/_haml.html.haml +0 -1
  191. data/spec/fixtures/views/examples/_markaby.html.mab +0 -1
  192. data/spec/fixtures/views/examples/_throw_content.html.erb +0 -6
  193. data/spec/fixtures/views/examples/hello.xml.builder +0 -1
  194. data/spec/fixtures/views/examples/js.js.erb +0 -1
  195. data/spec/fixtures/views/examples/template_catch_content.html.erb +0 -15
  196. data/spec/fixtures/views/examples/template_catch_content_from_partial.html.erb +0 -6
  197. data/spec/fixtures/views/examples/template_throw_content.html.erb +0 -10
  198. data/spec/fixtures/views/examples/template_throw_content_without_block.html.erb +0 -3
  199. data/spec/fixtures/views/exceptions/admin_access_required.html.erb +0 -1
  200. data/spec/fixtures/views/extension_template_controller/_nested_js.js.erb +0 -1
  201. data/spec/fixtures/views/extension_template_controller/_nested_xml.xml.erb +0 -1
  202. data/spec/fixtures/views/extension_template_controller/_render_partial_multiple_times.html.erb +0 -1
  203. data/spec/fixtures/views/extension_template_controller/erubis_templates.html.erb +0 -1
  204. data/spec/fixtures/views/extension_template_controller/erubis_templates.js.erb +0 -1
  205. data/spec/fixtures/views/extension_template_controller/erubis_templates.rhtml +0 -1
  206. data/spec/fixtures/views/extension_template_controller/erubis_templates.xml.erb +0 -1
  207. data/spec/fixtures/views/extension_template_controller/haml_index.html.haml +0 -0
  208. data/spec/fixtures/views/extension_template_controller/haml_templates.html.haml +0 -1
  209. data/spec/fixtures/views/extension_template_controller/haml_templates.js.haml +0 -1
  210. data/spec/fixtures/views/extension_template_controller/haml_templates.xml.haml +0 -1
  211. data/spec/fixtures/views/extension_template_controller/index.html.erb +0 -0
  212. data/spec/fixtures/views/extension_template_controller/markaby_index.html.mab +0 -0
  213. data/spec/fixtures/views/extension_template_controller/markaby_templates.html.mab +0 -1
  214. data/spec/fixtures/views/extension_template_controller/markaby_templates.js.mab +0 -1
  215. data/spec/fixtures/views/extension_template_controller/markaby_templates.xml.mab +0 -1
  216. data/spec/fixtures/views/extension_template_controller/render_multiple_partials.html.erb +0 -4
  217. data/spec/fixtures/views/extension_template_controller/render_nested_js.js.erb +0 -1
  218. data/spec/fixtures/views/extension_template_controller/render_nested_xml.xml.erb +0 -1
  219. data/spec/fixtures/views/haml.html.haml +0 -1
  220. data/spec/fixtures/views/haml.xml.haml +0 -2
  221. data/spec/fixtures/views/layout/application.html.erb +0 -1
  222. data/spec/fixtures/views/layout/application.xml.erb +0 -1
  223. data/spec/fixtures/views/layout/nested/example.html.erb +0 -1
  224. data/spec/fixtures/views/markaby.html.mab +0 -1
  225. data/spec/fixtures/views/nested/example/test.html.erb +0 -1
  226. data/spec/fixtures/views/partials/_erubis.html.erb +0 -1
  227. data/spec/fixtures/views/partials/_erubis_collection.html.erb +0 -1
  228. data/spec/fixtures/views/partials/_erubis_collection_with_locals.html.erb +0 -1
  229. data/spec/fixtures/views/partials/_erubis_new.html.erb +0 -1
  230. data/spec/fixtures/views/partials/_haml.html.haml +0 -1
  231. data/spec/fixtures/views/partials/_haml_collection.html.haml +0 -1
  232. data/spec/fixtures/views/partials/_haml_collection_with_locals.html.haml +0 -1
  233. data/spec/fixtures/views/partials/_haml_new.html.haml +0 -1
  234. data/spec/fixtures/views/partials/_markaby.html.mab +0 -1
  235. data/spec/fixtures/views/partials/_markaby_collection.html.mab +0 -1
  236. data/spec/fixtures/views/partials/_markaby_collection_with_locals.html.mab +0 -1
  237. data/spec/fixtures/views/partials/_markaby_new.html.mab +0 -1
  238. data/spec/fixtures/views/render_object_controller/render_object_with_template.html.erb +0 -1
  239. data/spec/fixtures/views/render_object_controller/render_object_with_template.js.erb +0 -1
  240. data/spec/fixtures/views/render_object_controller/render_object_with_template.xml.erb +0 -1
  241. data/spec/fixtures/views/template_views/interface__buffer_erubis.html.erb +0 -4
  242. data/spec/fixtures/views/template_views/interface__buffer_haml.html.haml +0 -7
  243. data/spec/fixtures/views/template_views/interface__buffer_markaby.html.mab +0 -7
  244. data/spec/fixtures/views/template_views/interface_capture_erubis.html.erb +0 -15
  245. data/spec/fixtures/views/template_views/interface_capture_haml.html.haml +0 -15
  246. data/spec/fixtures/views/template_views/interface_capture_markaby.html.mab +0 -4
  247. data/spec/fixtures/views/template_views/interface_concat_erubis.html.erb +0 -12
  248. data/spec/fixtures/views/template_views/interface_concat_haml.html.haml +0 -11
  249. data/spec/fixtures/views/template_views/interface_concat_markaby.html.mab +0 -14
  250. data/spec/fixtures/views/test.dir/the_template.html.erb +0 -1
  251. data/spec/merb/abstract_controller_spec.rb +0 -38
  252. data/spec/merb/assets_spec.rb +0 -207
  253. data/spec/merb/caching_spec.rb +0 -102
  254. data/spec/merb/config_spec.rb +0 -29
  255. data/spec/merb/controller_filters_spec.rb +0 -253
  256. data/spec/merb/controller_spec.rb +0 -126
  257. data/spec/merb/cookie_store_spec.rb +0 -72
  258. data/spec/merb/cookies_spec.rb +0 -96
  259. data/spec/merb/core_ext/class_spec.rb +0 -97
  260. data/spec/merb/core_ext/enumerable_spec.rb +0 -27
  261. data/spec/merb/core_ext/hash_spec.rb +0 -251
  262. data/spec/merb/core_ext/inflector_spec.rb +0 -34
  263. data/spec/merb/core_ext/kernel_spec.rb +0 -25
  264. data/spec/merb/core_ext/numeric_spec.rb +0 -26
  265. data/spec/merb/core_ext/object_spec.rb +0 -47
  266. data/spec/merb/core_ext/string_spec.rb +0 -22
  267. data/spec/merb/core_ext/symbol_spec.rb +0 -7
  268. data/spec/merb/dependency_spec.rb +0 -22
  269. data/spec/merb/dispatch_spec.rb +0 -528
  270. data/spec/merb/fake_request_spec.rb +0 -80
  271. data/spec/merb/generator_spec.rb +0 -248
  272. data/spec/merb/handler_spec.rb +0 -169
  273. data/spec/merb/mail_controller_spec.rb +0 -177
  274. data/spec/merb/mailer_spec.rb +0 -87
  275. data/spec/merb/multipart_spec.rb +0 -50
  276. data/spec/merb/part_controller_spec.rb +0 -124
  277. data/spec/merb/plugins_spec.rb +0 -80
  278. data/spec/merb/render_spec.rb +0 -469
  279. data/spec/merb/request_spec.rb +0 -287
  280. data/spec/merb/responder_spec.rb +0 -562
  281. data/spec/merb/router_spec.rb +0 -900
  282. data/spec/merb/server_spec.rb +0 -19
  283. data/spec/merb/template_spec.rb +0 -41
  284. data/spec/merb/upload_handler_spec.rb +0 -108
  285. data/spec/merb/version_spec.rb +0 -33
  286. data/spec/merb/view_context_spec.rb +0 -366
  287. data/spec/spec_generator_helper.rb +0 -34
  288. data/spec/spec_helper.rb +0 -101
  289. data/spec/spec_helpers/url_shared_behaviour.rb +0 -112
  290. data/test_unit_generators/merb_controller_test/merb_controller_test_generator.rb +0 -53
  291. data/test_unit_generators/merb_controller_test/templates/functional_test.rb +0 -17
  292. data/test_unit_generators/merb_controller_test/templates/helper_test.rb +0 -9
  293. data/test_unit_generators/merb_model_test/merb_model_test_generator.rb +0 -29
  294. data/test_unit_generators/merb_model_test/templates/model_test_unit_template.erb +0 -9
@@ -1,96 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- module CookiesSpecModule
4
- def cookie_time(time)
5
- time.gmtime.strftime(Merb::Const::COOKIE_EXPIRATION_FORMAT)
6
- end
7
- end
8
-
9
- describe Merb::Cookies do
10
- include CookiesSpecModule
11
-
12
- before do
13
- @_cookies = Mash.new
14
- @_headers = {}
15
- @cookies = Merb::Cookies.new(@_cookies, @_headers)
16
- end
17
-
18
- it "should respond to []" do
19
- @cookies.should respond_to(:[])
20
- end
21
-
22
- it "should respond to []=" do
23
- @cookies.should respond_to(:[]=)
24
- end
25
-
26
- it "should respond to delete" do
27
- @cookies.should respond_to(:delete)
28
- end
29
-
30
- it "should accept simple cookies that expire at end of session" do
31
- @cookies[:foo] = 'bar'
32
-
33
- @_headers['Set-Cookie'].should == ['foo=bar; path=/;']
34
-
35
- @cookies[:foo].should == 'bar'
36
- @cookies['foo'].should == 'bar'
37
- end
38
-
39
- it "should accept cookies with expiry dates" do
40
- expires = Time.now + 2.weeks
41
- @cookies[:dozen] = {
42
- :value => 'twelve',
43
- :expires => expires
44
- }
45
-
46
- @_headers['Set-Cookie'].should ==
47
- ["dozen=twelve; expires=%s; path=/;" % cookie_time(expires)]
48
-
49
- @cookies[:dozen].should == 'twelve'
50
- @cookies['dozen'].should == 'twelve'
51
- end
52
-
53
- it "should accept multiple cookies" do
54
- expires = Time.now + 2.weeks
55
- @cookies[:foo] = 'bar'
56
- @cookies[:dozen] = {
57
- :value => 'twelve',
58
- :expires => expires
59
- }
60
-
61
- @_headers['Set-Cookie'].should == [
62
- 'foo=bar; path=/;',
63
- "dozen=twelve; expires=%s; path=/;" % cookie_time(expires)
64
- ]
65
-
66
- @cookies[:dozen].should == 'twelve'
67
- @cookies['dozen'].should == 'twelve'
68
- @cookies[:foo].should == 'bar'
69
- @cookies['foo'].should == 'bar'
70
- end
71
-
72
- it "should give access to currently saved cookies" do
73
- @_cookies[:original] = 'accessible'
74
- @cookies[:original].should == 'accessible'
75
-
76
- @cookies[:foo] = 'bar'
77
- @cookies[:foo].should == 'bar'
78
- @cookies[:original].should == 'accessible'
79
- end
80
-
81
- it "should overwrite old cookies with new cookies" do
82
- @_cookies[:foo] = 'bar'
83
- @cookies[:foo].should == 'bar'
84
-
85
- @cookies[:foo] = 'new'
86
- @cookies[:foo].should == 'new'
87
- end
88
-
89
- it "should allow deleting of cookies" do
90
- @_cookies[:foo] = 'bar'
91
- @cookies[:foo].should == 'bar'
92
-
93
- @cookies.delete(:foo)
94
- @cookies[:foo].should == nil
95
- end
96
- end
@@ -1,97 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- # Class cattr_reader
4
-
5
- class ClassWithCAttrReader
6
- cattr_reader :bacon
7
- def initialize; @@bacon = "chunky"; end
8
- end
9
-
10
- describe "Core Class with cattr_reader", :shared => true do
11
-
12
- it "should read value from attribute" do
13
- @klass.bacon.should == "chunky"
14
- end
15
-
16
- it "should not write to attribute" do
17
- lambda {
18
- @klass.bacon = "soggy"
19
- }.should raise_error(NoMethodError)
20
- end
21
-
22
- end
23
-
24
- describe Class, "with cattr_reader" do
25
-
26
- before do
27
- @klass = ClassWithCAttrReader.new.class
28
- end
29
- it_should_behave_like "Core Class with cattr_reader"
30
-
31
- end
32
-
33
- describe Class, "with cattr_reader (instantiated)" do
34
-
35
- before do
36
- @klass = ClassWithCAttrReader.new
37
- end
38
- it_should_behave_like "Core Class with cattr_reader"
39
-
40
- end
41
-
42
- # Class cattr_writer
43
-
44
- class ClassWithCAttrWriter
45
- cattr_writer :bacon
46
- def self.chunky?; @@bacon == "chunky"; end
47
- def chunky?; self.class.chunky?; end
48
- end
49
-
50
- describe "Core Class with cattr_writer", :shared => true do
51
-
52
- it "should write value to attribute" do
53
- @klass.should be_chunky
54
- end
55
-
56
- it "should not read attribute" do
57
- lambda {
58
- @klass.bacon
59
- }.should raise_error(NoMethodError)
60
- end
61
-
62
- end
63
-
64
- describe Class, "with cattr_writer" do
65
-
66
- before do
67
- @klass = ClassWithCAttrWriter.new.class
68
- @klass.bacon = "chunky"
69
- end
70
- it_should_behave_like "Core Class with cattr_writer"
71
-
72
- end
73
-
74
- describe Class, "with cattr_writer (instantiated)" do
75
-
76
- before do
77
- @klass = ClassWithCAttrWriter.new
78
- @klass.bacon = "chunky"
79
- end
80
- it_should_behave_like "Core Class with cattr_writer"
81
-
82
- end
83
-
84
- class ClassWithAttrInitialize
85
- attr_initialize :dog, :muppet
86
- attr_accessor :dog, :muppet
87
- end
88
-
89
- describe ClassWithAttrInitialize do
90
-
91
- it "should initialize with values" do
92
- c = ClassWithAttrInitialize.new("louie", "bert")
93
- c.dog.should == "louie"
94
- c.muppet.should == "bert"
95
- end
96
-
97
- end
@@ -1,27 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe Enumerable do
4
- before do
5
- @mascots = ['louie', 'bert', 'ernie']
6
- end
7
-
8
- it "should perform injecting" do
9
- @mascots.injecting({}) { |m,i| m[i] = i.size }.should ==
10
- { 'louie' => 5, 'bert' => 4, 'ernie' => 5 }
11
- end
12
-
13
- it "should find arrays of things inside other arrays" do
14
- @mascots.include_any?('louie', 'sasquatch').should be_true
15
- end
16
-
17
- it "should recognize absence of arrays of things inside other arrays" do
18
- @mascots.include_any?('chicken', 'sasquatch').should be_false
19
- end
20
-
21
- it "should group by" do
22
- groups = (1..6).group_by{ |i| i % 3 }
23
- groups[0].should == [3,6]
24
- groups[1].should == [1,4]
25
- groups[2].should == [2,5]
26
- end
27
- end
@@ -1,251 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- describe Hash, "environmentize_keys!" do
4
- it "should transform keys to uppercase text" do
5
- { :test_1 => 'test', 'test_2' => 'test', 1 => 'test' }.environmentize_keys!.should ==
6
- { 'TEST_1' => 'test', 'TEST_2' => 'test', '1' => 'test' }
7
- end
8
-
9
- it "should only transform one level of keys" do
10
- { :test_1 => { :test2 => 'test'} }.environmentize_keys!.should ==
11
- { 'TEST_1' => { :test2 => 'test'} }
12
- end
13
- end
14
-
15
- describe Hash, "only" do
16
- before do
17
- @hash = { :one => 'ONE', 'two' => 'TWO', 3 => 'THREE' }
18
- end
19
-
20
- it "should return a hash with only the given key(s)" do
21
- @hash.only(:one).should == { :one => 'ONE' }
22
- @hash.only(:one, 3).should == { :one => 'ONE', 3 => 'THREE' }
23
- end
24
- end
25
-
26
- describe Hash, "except" do
27
- before do
28
- @hash = { :one => 'ONE', 'two' => 'TWO', 3 => 'THREE' }
29
- end
30
-
31
- it "should return a hash without only the given key(s)" do
32
- @hash.except(:one).should == { 'two' => 'TWO', 3 => 'THREE' }
33
- @hash.except(:one, 3).should == { 'two' => 'TWO' }
34
- end
35
- end
36
-
37
- describe Hash, "symbolize_keys!" do
38
- before do
39
- @hash = { 'one' => 1, 'two' => 2 }
40
- @hash_with_another_hash = { 'a' => 'A', 'prefs' => { 'private' => true, 'sex' => 'yes please' } }
41
- @hash_with_non_string_keys = { 'one' => 1, 2 => 'TWO', '' => 'blank' }
42
- end
43
-
44
- it "should convert all keys to symbols" do
45
- @hash.symbolize_keys!
46
- @hash.should == { :one => 1, :two => 2 }
47
- end
48
-
49
- it "should recursively convert all keys to symbols" do
50
- @hash_with_another_hash.symbolize_keys!
51
- @hash_with_another_hash.should == { :a => 'A', :prefs => { :private => true, :sex => 'yes please' } }
52
- end
53
- end
54
-
55
- describe Hash, "to_xml_attributes" do
56
- before do
57
- @hash = { :one => "ONE", "two" => "TWO" }
58
- end
59
-
60
- it "should turn the hash into xml attributes" do
61
- attrs = @hash.to_xml_attributes
62
- attrs.should match(/one="ONE"/m)
63
- attrs.should match(/two="TWO"/m)
64
- end
65
- end
66
-
67
- describe Hash, "from_xml" do
68
- it "should transform a simple tag with content" do
69
- xml = "<tag>This is the contents</tag>"
70
- Hash.from_xml(xml).should == { 'tag' => 'This is the contents' }
71
- end
72
-
73
- it "should work with cdata tags" do
74
- xml = <<-END
75
- <tag>
76
- <![CDATA[
77
- text inside cdata
78
- ]]>
79
- </tag>
80
- END
81
- Hash.from_xml(xml)["tag"].strip.should == "text inside cdata"
82
- end
83
-
84
- it "should transform a simple tag with attributes" do
85
- xml = "<tag attr1='1' attr2='2'></tag>"
86
- hash = { 'tag' => { 'attr1' => '1', 'attr2' => '2' } }
87
- Hash.from_xml(xml).should == hash
88
- end
89
-
90
- it "should transform repeating siblings into an array" do
91
- xml =<<-XML
92
- <opt>
93
- <user login="grep" fullname="Gary R Epstein" />
94
- <user login="stty" fullname="Simon T Tyson" />
95
- </opt>
96
- XML
97
-
98
- Hash.from_xml(xml)['opt']['user'].should be_an_instance_of(Array)
99
-
100
- hash = {
101
- 'opt' => {
102
- 'user' => [{
103
- 'login' => 'grep',
104
- 'fullname' => 'Gary R Epstein'
105
- },{
106
- 'login' => 'stty',
107
- 'fullname' => 'Simon T Tyson'
108
- }]
109
- }
110
- }
111
-
112
- Hash.from_xml(xml).should == hash
113
- end
114
-
115
- it "should not transform non-repeating siblings into an array" do
116
- xml =<<-XML
117
- <opt>
118
- <user login="grep" fullname="Gary R Epstein" />
119
- </opt>
120
- XML
121
-
122
- Hash.from_xml(xml)['opt']['user'].should be_an_instance_of(Hash)
123
-
124
- hash = {
125
- 'opt' => {
126
- 'user' => {
127
- 'login' => 'grep',
128
- 'fullname' => 'Gary R Epstein'
129
- }
130
- }
131
- }
132
-
133
- Hash.from_xml(xml).should == hash
134
- end
135
-
136
- it "should typecast an integer" do
137
- xml = "<tag type='integer'>10</tag>"
138
- Hash.from_xml(xml)['tag'].should == 10
139
- end
140
-
141
- it "should typecast a true boolean" do
142
- xml = "<tag type='boolean'>true</tag>"
143
- Hash.from_xml(xml)['tag'].should be_true
144
- end
145
-
146
- it "should typecast a false boolean" do
147
- ["false", "1", "0", "some word" ].each do |w|
148
- Hash.from_xml("<tag type='boolean'>#{w}</tag>")['tag'].should be_false
149
- end
150
- end
151
-
152
- it "should typecast a datetime" do
153
- xml = "<tag type='datetime'>2007-12-31 10:32</tag>"
154
- Hash.from_xml(xml)['tag'].should == Time.parse( '2007-12-31 10:32' ).utc
155
- end
156
-
157
- it "should typecast a date" do
158
- xml = "<tag type='date'>2007-12-31</tag>"
159
- Hash.from_xml(xml)['tag'].should == Date.parse('2007-12-31')
160
- end
161
-
162
- it "should unescape html entities" do
163
- values = {
164
- "<" => "&lt;",
165
- ">" => "&gt;",
166
- '"' => "&quot;",
167
- "'" => "&apos;",
168
- "&" => "&amp;"
169
- }
170
- values.each do |k,v|
171
- xml = "<tag>Some content #{v}</tag>"
172
- Hash.from_xml(xml)['tag'].should match(Regexp.new(k))
173
- end
174
- end
175
-
176
- it "should undasherize keys as tags" do
177
- xml = "<tag-1>Stuff</tag-1>"
178
- Hash.from_xml(xml).keys.should include( 'tag_1' )
179
- end
180
-
181
- it "should undasherize keys as attributes" do
182
- xml = "<tag1 attr-1='1'></tag1>"
183
- Hash.from_xml(xml)['tag1'].keys.should include( 'attr_1')
184
- end
185
-
186
- it "should undasherize keys as tags and attributes" do
187
- xml = "<tag-1 attr-1='1'></tag-1>"
188
- Hash.from_xml(xml).keys.should include( 'tag_1' )
189
- Hash.from_xml(xml)['tag_1'].keys.should include( 'attr_1')
190
- end
191
-
192
- it "should render nested content correctly" do
193
- xml = "<root><tag1>Tag1 Content <em><strong>This is strong</strong></em></tag1></root>"
194
- Hash.from_xml(xml)['root']['tag1'].should == "Tag1 Content <em><strong>This is strong</strong></em>"
195
- end
196
-
197
- it "should render nested content with split text nodes correctly" do
198
- xml = "<root>Tag1 Content<em>Stuff</em> Hi There</root>"
199
- Hash.from_xml(xml)['root'].should == "Tag1 Content<em>Stuff</em> Hi There"
200
- end
201
-
202
- it "should ignore attributes when a child is a text node" do
203
- xml = "<root attr1='1'>Stuff</root>"
204
- Hash.from_xml(xml).should == { "root" => "Stuff" }
205
- end
206
-
207
- it "should ignore attributes when any child is a text node" do
208
- xml = "<root attr1='1'>Stuff <em>in italics</em></root>"
209
- Hash.from_xml(xml).should == { "root" => "Stuff <em>in italics</em>" }
210
- end
211
-
212
- it "should correctly transform multiple children" do
213
- xml = <<-XML
214
- <user gender='m'>
215
- <age type='integer'>35</age>
216
- <name>Home Simpson</name>
217
- <dob type='date'>1988-01-01</dob>
218
- <joined-at type='datetime'>2000-04-28 23:01</joined-at>
219
- <is-cool type='boolean'>true</is-cool>
220
- </user>
221
- XML
222
-
223
- hash = {
224
- "user" => {
225
- "gender" => "m",
226
- "age" => 35,
227
- "name" => "Home Simpson",
228
- "dob" => Date.parse('1988-01-01'),
229
- "joined_at" => Time.parse("2000-04-28 23:01"),
230
- "is_cool" => true
231
- }
232
- }
233
-
234
- Hash.from_xml(xml).should == hash
235
- end
236
- end
237
-
238
- describe Hash, 'to_params' do
239
- before do
240
- @hash = { :name => 'Bob', :address => { :street => '111 Ruby Ave.', :city => 'Ruby Central', :phones => ['111-111-1111', '222-222-2222'] } }
241
- end
242
-
243
- it 'should convert correctly into query parameters' do
244
- @hash.to_params.split('&').sort.should ==
245
- 'name=Bob&address[city]=Ruby Central&address[phones]=111-111-1111222-222-2222&address[street]=111 Ruby Ave.'.split('&').sort
246
- end
247
-
248
- it 'should not leave a trailing &' do
249
- @hash.to_params.should_not match(/&$/)
250
- end
251
- end