spree 0.11.2 → 0.11.3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of spree might be problematic. Click here for more details.

Files changed (249) hide show
  1. data/Rakefile +9 -8
  2. data/app/controllers/admin/base_controller.rb +31 -0
  3. data/app/controllers/admin/general_settings_controller.rb +9 -0
  4. data/app/controllers/admin/orders_controller.rb +8 -3
  5. data/app/controllers/admin/payments_controller.rb +8 -3
  6. data/app/controllers/admin/shipments_controller.rb +7 -2
  7. data/app/models/address.rb +42 -25
  8. data/app/models/app_configuration.rb +3 -0
  9. data/app/models/billing_integration.rb +1 -1
  10. data/app/models/line_item.rb +1 -1
  11. data/app/models/payment.rb +1 -1
  12. data/app/models/product_group.rb +8 -4
  13. data/app/models/spree/alert.rb +13 -0
  14. data/config/boot.rb +1 -1
  15. data/config/environment.rb +3 -3
  16. data/config/environments/test.rb +1 -1
  17. data/config/locales/en_spree.yml +3 -0
  18. data/config/routes.rb +2 -1
  19. data/lib/generators/extension/templates/Rakefile +1 -1
  20. data/lib/plugins/option_tags_with_disable/Rakefile +1 -1
  21. data/lib/spree.rb +2 -2
  22. data/lib/spree/checkout/action_options.rb +2 -2
  23. data/lib/spree/extension_loader.rb +1 -1
  24. data/lib/spree/initializer.rb +3 -2
  25. data/lib/validation_group.rb +2 -2
  26. data/vendor/extensions/api/Rakefile +1 -1
  27. data/vendor/extensions/overview_dashboard/Rakefile +1 -1
  28. data/vendor/extensions/payment_gateway/Rakefile +1 -1
  29. data/vendor/extensions/payment_gateway/app/models/gateway/authorize_net.rb +8 -2
  30. data/vendor/extensions/payment_gateway/app/models/gateway/authorize_net_cim.rb +6 -0
  31. data/vendor/extensions/theme_default/Rakefile +1 -1
  32. data/vendor/extensions/theme_default/app/views/admin/adjustments/_form.html.erb +0 -3
  33. data/vendor/extensions/theme_default/app/views/admin/adjustments/new.html.erb +3 -0
  34. data/vendor/extensions/theme_default/app/views/admin/general_settings/edit.html.erb +8 -0
  35. data/vendor/extensions/theme_default/app/views/admin/general_settings/show.html.erb +5 -0
  36. data/vendor/extensions/theme_default/app/views/admin/shared/_alert.html.erb +11 -0
  37. data/vendor/extensions/theme_default/app/views/layouts/admin.html.erb +1 -1
  38. data/vendor/extensions/theme_default/public/stylesheets/admin/admin.css +30 -1
  39. data/vendor/plugins/acts_as_tree/Rakefile +1 -1
  40. data/vendor/plugins/attribute_fu/Rakefile +1 -1
  41. data/vendor/plugins/auto_complete/Rakefile +1 -1
  42. data/vendor/plugins/awesome_nested_set/Rakefile +1 -1
  43. data/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb +3 -3
  44. data/vendor/plugins/delegate_belongs_to/Rakefile +1 -1
  45. data/vendor/plugins/enumerable_constants/Rakefile +1 -1
  46. data/vendor/plugins/find_by_param/Rakefile +1 -1
  47. data/vendor/plugins/in_place_editing/Rakefile +1 -1
  48. data/vendor/plugins/jrails_auto_complete/Rakefile +1 -1
  49. data/vendor/plugins/mail_queue/Rakefile +1 -1
  50. data/vendor/plugins/open_id_authentication/Rakefile +1 -1
  51. data/vendor/plugins/resource_controller/lib/resource_controller/action_options.rb +1 -1
  52. data/vendor/plugins/resource_controller/lib/resource_controller/failable_action_options.rb +1 -1
  53. data/vendor/plugins/resource_controller/test/app/controllers/accounts_controller.rb +6 -0
  54. data/vendor/plugins/resource_controller/test/app/controllers/application.rb +7 -0
  55. data/vendor/plugins/resource_controller/test/app/controllers/cms/options_controller.rb +3 -0
  56. data/vendor/plugins/resource_controller/test/app/controllers/cms/personnel_controller.rb +2 -0
  57. data/vendor/plugins/resource_controller/test/app/controllers/cms/photos_controller.rb +6 -0
  58. data/vendor/plugins/resource_controller/test/app/controllers/cms/products_controller.rb +3 -0
  59. data/vendor/plugins/resource_controller/test/app/controllers/comments_controller.rb +3 -0
  60. data/vendor/plugins/resource_controller/test/app/controllers/images_controller.rb +4 -0
  61. data/vendor/plugins/resource_controller/test/app/controllers/options_controller.rb +8 -0
  62. data/vendor/plugins/resource_controller/test/app/controllers/people_controller.rb +9 -0
  63. data/vendor/plugins/resource_controller/test/app/controllers/photos_controller.rb +11 -0
  64. data/vendor/plugins/resource_controller/test/app/controllers/posts_controller.rb +10 -0
  65. data/vendor/plugins/resource_controller/test/app/controllers/projects_controller.rb +3 -0
  66. data/vendor/plugins/resource_controller/test/app/controllers/somethings_controller.rb +3 -0
  67. data/vendor/plugins/resource_controller/test/app/controllers/tags_controller.rb +13 -0
  68. data/vendor/plugins/resource_controller/test/app/controllers/users_controller.rb +12 -0
  69. data/vendor/plugins/resource_controller/test/app/helpers/accounts_helper.rb +2 -0
  70. data/vendor/plugins/resource_controller/test/app/helpers/application_helper.rb +3 -0
  71. data/vendor/plugins/resource_controller/test/app/helpers/cms/products_helper.rb +2 -0
  72. data/vendor/plugins/resource_controller/test/app/helpers/comments_helper.rb +2 -0
  73. data/vendor/plugins/resource_controller/test/app/helpers/images_helper.rb +2 -0
  74. data/vendor/plugins/resource_controller/test/app/helpers/options_helper.rb +2 -0
  75. data/vendor/plugins/resource_controller/test/app/helpers/people_helper.rb +2 -0
  76. data/vendor/plugins/resource_controller/test/app/helpers/photos_helper.rb +2 -0
  77. data/vendor/plugins/resource_controller/test/app/helpers/posts_helper.rb +2 -0
  78. data/vendor/plugins/resource_controller/test/app/helpers/projects_helper.rb +2 -0
  79. data/vendor/plugins/resource_controller/test/app/helpers/somethings_helper.rb +2 -0
  80. data/vendor/plugins/resource_controller/test/app/helpers/tags_helper.rb +2 -0
  81. data/vendor/plugins/resource_controller/test/app/helpers/users_helper.rb +2 -0
  82. data/vendor/plugins/resource_controller/test/app/models/account.rb +4 -0
  83. data/vendor/plugins/resource_controller/test/app/models/comment.rb +3 -0
  84. data/vendor/plugins/resource_controller/test/app/models/image.rb +3 -0
  85. data/vendor/plugins/resource_controller/test/app/models/option.rb +3 -0
  86. data/vendor/plugins/resource_controller/test/app/models/personnel.rb +3 -0
  87. data/vendor/plugins/resource_controller/test/app/models/photo.rb +5 -0
  88. data/vendor/plugins/resource_controller/test/app/models/post.rb +3 -0
  89. data/vendor/plugins/resource_controller/test/app/models/product.rb +3 -0
  90. data/vendor/plugins/resource_controller/test/app/models/project.rb +2 -0
  91. data/vendor/plugins/resource_controller/test/app/models/something.rb +2 -0
  92. data/vendor/plugins/resource_controller/test/app/models/tag.rb +3 -0
  93. data/vendor/plugins/resource_controller/test/app/models/user.rb +3 -0
  94. data/vendor/plugins/resource_controller/test/app/views/accounts/_form.html.erb +4 -0
  95. data/vendor/plugins/resource_controller/test/app/views/accounts/edit.html.erb +14 -0
  96. data/vendor/plugins/resource_controller/test/app/views/accounts/new.html.erb +12 -0
  97. data/vendor/plugins/resource_controller/test/app/views/accounts/show.html.erb +5 -0
  98. data/vendor/plugins/resource_controller/test/app/views/cms/options/edit.rhtml +17 -0
  99. data/vendor/plugins/resource_controller/test/app/views/cms/options/index.rhtml +20 -0
  100. data/vendor/plugins/resource_controller/test/app/views/cms/options/new.rhtml +16 -0
  101. data/vendor/plugins/resource_controller/test/app/views/cms/options/show.rhtml +8 -0
  102. data/vendor/plugins/resource_controller/test/app/views/cms/photos/edit.rhtml +17 -0
  103. data/vendor/plugins/resource_controller/test/app/views/cms/photos/index.rhtml +20 -0
  104. data/vendor/plugins/resource_controller/test/app/views/cms/photos/new.rhtml +16 -0
  105. data/vendor/plugins/resource_controller/test/app/views/cms/photos/show.rhtml +8 -0
  106. data/vendor/plugins/resource_controller/test/app/views/cms/products/edit.rhtml +17 -0
  107. data/vendor/plugins/resource_controller/test/app/views/cms/products/index.rhtml +20 -0
  108. data/vendor/plugins/resource_controller/test/app/views/cms/products/new.rhtml +16 -0
  109. data/vendor/plugins/resource_controller/test/app/views/cms/products/show.rhtml +8 -0
  110. data/vendor/plugins/resource_controller/test/app/views/comments/edit.rhtml +27 -0
  111. data/vendor/plugins/resource_controller/test/app/views/comments/index.rhtml +24 -0
  112. data/vendor/plugins/resource_controller/test/app/views/comments/new.rhtml +26 -0
  113. data/vendor/plugins/resource_controller/test/app/views/comments/show.rhtml +18 -0
  114. data/vendor/plugins/resource_controller/test/app/views/images/_form.html.erb +4 -0
  115. data/vendor/plugins/resource_controller/test/app/views/images/edit.html.erb +14 -0
  116. data/vendor/plugins/resource_controller/test/app/views/images/new.html.erb +12 -0
  117. data/vendor/plugins/resource_controller/test/app/views/layouts/application.rhtml +17 -0
  118. data/vendor/plugins/resource_controller/test/app/views/layouts/comments.rhtml +17 -0
  119. data/vendor/plugins/resource_controller/test/app/views/layouts/options.rhtml +17 -0
  120. data/vendor/plugins/resource_controller/test/app/views/layouts/people.rhtml +17 -0
  121. data/vendor/plugins/resource_controller/test/app/views/layouts/photos.rhtml +17 -0
  122. data/vendor/plugins/resource_controller/test/app/views/layouts/projects.rhtml +17 -0
  123. data/vendor/plugins/resource_controller/test/app/views/layouts/somethings.rhtml +17 -0
  124. data/vendor/plugins/resource_controller/test/app/views/layouts/tags.rhtml +17 -0
  125. data/vendor/plugins/resource_controller/test/app/views/options/_form.html.erb +8 -0
  126. data/vendor/plugins/resource_controller/test/app/views/options/edit.html.erb +16 -0
  127. data/vendor/plugins/resource_controller/test/app/views/options/index.html.erb +21 -0
  128. data/vendor/plugins/resource_controller/test/app/views/options/new.html.erb +12 -0
  129. data/vendor/plugins/resource_controller/test/app/views/options/show.html.erb +10 -0
  130. data/vendor/plugins/resource_controller/test/app/views/people/edit.rhtml +17 -0
  131. data/vendor/plugins/resource_controller/test/app/views/people/index.rhtml +20 -0
  132. data/vendor/plugins/resource_controller/test/app/views/people/new.rhtml +16 -0
  133. data/vendor/plugins/resource_controller/test/app/views/people/show.rhtml +8 -0
  134. data/vendor/plugins/resource_controller/test/app/views/photos/edit.rhtml +17 -0
  135. data/vendor/plugins/resource_controller/test/app/views/photos/index.rhtml +20 -0
  136. data/vendor/plugins/resource_controller/test/app/views/photos/new.rhtml +16 -0
  137. data/vendor/plugins/resource_controller/test/app/views/photos/show.rhtml +8 -0
  138. data/vendor/plugins/resource_controller/test/app/views/posts/edit.rhtml +22 -0
  139. data/vendor/plugins/resource_controller/test/app/views/posts/index.rhtml +22 -0
  140. data/vendor/plugins/resource_controller/test/app/views/posts/new.rhtml +21 -0
  141. data/vendor/plugins/resource_controller/test/app/views/posts/show.rhtml +13 -0
  142. data/vendor/plugins/resource_controller/test/app/views/projects/edit.rhtml +17 -0
  143. data/vendor/plugins/resource_controller/test/app/views/projects/index.rhtml +20 -0
  144. data/vendor/plugins/resource_controller/test/app/views/projects/new.rhtml +16 -0
  145. data/vendor/plugins/resource_controller/test/app/views/projects/show.rhtml +8 -0
  146. data/vendor/plugins/resource_controller/test/app/views/somethings/edit.rhtml +17 -0
  147. data/vendor/plugins/resource_controller/test/app/views/somethings/index.rhtml +20 -0
  148. data/vendor/plugins/resource_controller/test/app/views/somethings/new.rhtml +16 -0
  149. data/vendor/plugins/resource_controller/test/app/views/somethings/show.rhtml +8 -0
  150. data/vendor/plugins/resource_controller/test/app/views/tags/edit.rhtml +17 -0
  151. data/vendor/plugins/resource_controller/test/app/views/tags/index.rhtml +20 -0
  152. data/vendor/plugins/resource_controller/test/app/views/tags/index.rjs +0 -0
  153. data/vendor/plugins/resource_controller/test/app/views/tags/new.rhtml +16 -0
  154. data/vendor/plugins/resource_controller/test/app/views/tags/show.rhtml +8 -0
  155. data/vendor/plugins/resource_controller/test/app/views/users/edit.rhtml +17 -0
  156. data/vendor/plugins/resource_controller/test/app/views/users/index.rhtml +20 -0
  157. data/vendor/plugins/resource_controller/test/app/views/users/new.rhtml +16 -0
  158. data/vendor/plugins/resource_controller/test/app/views/users/show.rhtml +8 -0
  159. data/vendor/plugins/resource_controller/test/config/boot.rb +109 -0
  160. data/vendor/plugins/resource_controller/test/config/database.yml +9 -0
  161. data/vendor/plugins/resource_controller/test/config/environment.rb +47 -0
  162. data/vendor/plugins/resource_controller/test/config/environments/development.rb +21 -0
  163. data/vendor/plugins/resource_controller/test/config/environments/test.rb +19 -0
  164. data/vendor/plugins/resource_controller/test/config/initializers/inflections.rb +14 -0
  165. data/vendor/plugins/resource_controller/test/config/routes.rb +61 -0
  166. data/vendor/plugins/resource_controller/test/db/migrate/001_create_posts.rb +12 -0
  167. data/vendor/plugins/resource_controller/test/db/migrate/002_create_products.rb +11 -0
  168. data/vendor/plugins/resource_controller/test/db/migrate/003_create_comments.rb +13 -0
  169. data/vendor/plugins/resource_controller/test/db/migrate/004_create_options.rb +13 -0
  170. data/vendor/plugins/resource_controller/test/db/migrate/005_create_photos.rb +11 -0
  171. data/vendor/plugins/resource_controller/test/db/migrate/006_create_tags.rb +17 -0
  172. data/vendor/plugins/resource_controller/test/db/migrate/007_create_somethings.rb +11 -0
  173. data/vendor/plugins/resource_controller/test/db/migrate/008_create_accounts.rb +11 -0
  174. data/vendor/plugins/resource_controller/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  175. data/vendor/plugins/resource_controller/test/db/migrate/010_create_projects.rb +11 -0
  176. data/vendor/plugins/resource_controller/test/db/migrate/011_create_images.rb +12 -0
  177. data/vendor/plugins/resource_controller/test/db/migrate/012_create_users.rb +11 -0
  178. data/vendor/plugins/resource_controller/test/db/migrate/013_create_personnel.rb +11 -0
  179. data/vendor/plugins/resource_controller/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  180. data/vendor/plugins/resource_controller/test/db/schema.rb +78 -0
  181. data/vendor/plugins/resource_controller/test/script/console +3 -0
  182. data/vendor/plugins/resource_controller/test/script/destroy +3 -0
  183. data/vendor/plugins/resource_controller/test/script/generate +3 -0
  184. data/vendor/plugins/resource_controller/test/script/server +3 -0
  185. data/vendor/plugins/resource_controller/test/test/fixtures/accounts.yml +7 -0
  186. data/vendor/plugins/resource_controller/test/test/fixtures/comments.yml +11 -0
  187. data/vendor/plugins/resource_controller/test/test/fixtures/images.yml +6 -0
  188. data/vendor/plugins/resource_controller/test/test/fixtures/options.yml +9 -0
  189. data/vendor/plugins/resource_controller/test/test/fixtures/personnel.yml +5 -0
  190. data/vendor/plugins/resource_controller/test/test/fixtures/photos.yml +9 -0
  191. data/vendor/plugins/resource_controller/test/test/fixtures/photos_tags.yml +3 -0
  192. data/vendor/plugins/resource_controller/test/test/fixtures/posts.yml +9 -0
  193. data/vendor/plugins/resource_controller/test/test/fixtures/products.yml +7 -0
  194. data/vendor/plugins/resource_controller/test/test/fixtures/projects.yml +7 -0
  195. data/vendor/plugins/resource_controller/test/test/fixtures/somethings.yml +7 -0
  196. data/vendor/plugins/resource_controller/test/test/fixtures/tags.yml +7 -0
  197. data/vendor/plugins/resource_controller/test/test/fixtures/users.yml +5 -0
  198. data/vendor/plugins/resource_controller/test/test/functional/cms/options_controller_test.rb +23 -0
  199. data/vendor/plugins/resource_controller/test/test/functional/cms/photos_controller_test.rb +43 -0
  200. data/vendor/plugins/resource_controller/test/test/functional/cms/products_controller_test.rb +23 -0
  201. data/vendor/plugins/resource_controller/test/test/functional/comments_controller_test.rb +26 -0
  202. data/vendor/plugins/resource_controller/test/test/functional/images_controller_test.rb +37 -0
  203. data/vendor/plugins/resource_controller/test/test/functional/people_controller_test.rb +34 -0
  204. data/vendor/plugins/resource_controller/test/test/functional/photos_controller_test.rb +130 -0
  205. data/vendor/plugins/resource_controller/test/test/functional/posts_controller_test.rb +34 -0
  206. data/vendor/plugins/resource_controller/test/test/functional/projects_controller_test.rb +18 -0
  207. data/vendor/plugins/resource_controller/test/test/functional/somethings_controller_test.rb +28 -0
  208. data/vendor/plugins/resource_controller/test/test/functional/tags_controller_test.rb +64 -0
  209. data/vendor/plugins/resource_controller/test/test/functional/users_controller_test.rb +24 -0
  210. data/vendor/plugins/resource_controller/test/test/test_helper.rb +12 -0
  211. data/vendor/plugins/resource_controller/test/test/unit/accessors_test.rb +110 -0
  212. data/vendor/plugins/resource_controller/test/test/unit/account_test.rb +7 -0
  213. data/vendor/plugins/resource_controller/test/test/unit/action_options_test.rb +109 -0
  214. data/vendor/plugins/resource_controller/test/test/unit/base_test.rb +11 -0
  215. data/vendor/plugins/resource_controller/test/test/unit/comment_test.rb +10 -0
  216. data/vendor/plugins/resource_controller/test/test/unit/failable_action_options_test.rb +77 -0
  217. data/vendor/plugins/resource_controller/test/test/unit/helpers/current_objects_test.rb +133 -0
  218. data/vendor/plugins/resource_controller/test/test/unit/helpers/internal_test.rb +106 -0
  219. data/vendor/plugins/resource_controller/test/test/unit/helpers/nested_test.rb +86 -0
  220. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  221. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  222. data/vendor/plugins/resource_controller/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  223. data/vendor/plugins/resource_controller/test/test/unit/helpers/urls_test.rb +75 -0
  224. data/vendor/plugins/resource_controller/test/test/unit/helpers_test.rb +25 -0
  225. data/vendor/plugins/resource_controller/test/test/unit/image_test.rb +7 -0
  226. data/vendor/plugins/resource_controller/test/test/unit/option_test.rb +10 -0
  227. data/vendor/plugins/resource_controller/test/test/unit/photo_test.rb +10 -0
  228. data/vendor/plugins/resource_controller/test/test/unit/post_test.rb +10 -0
  229. data/vendor/plugins/resource_controller/test/test/unit/project_test.rb +10 -0
  230. data/vendor/plugins/resource_controller/test/test/unit/response_collector_test.rb +49 -0
  231. data/vendor/plugins/resource_controller/test/test/unit/something_test.rb +10 -0
  232. data/vendor/plugins/resource_controller/test/test/unit/tag_test.rb +10 -0
  233. data/vendor/plugins/resource_controller/test/test/unit/urligence_test.rb +203 -0
  234. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/Rakefile +32 -0
  235. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/bin/convert_to_should_syntax +40 -0
  236. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/init.rb +3 -0
  237. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda.rb +43 -0
  238. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/active_record_helpers.rb +580 -0
  239. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/color.rb +77 -0
  240. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/controller_tests.rb +467 -0
  241. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/html.rb +201 -0
  242. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/controller_tests/formats/xml.rb +170 -0
  243. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/gem/proc_extensions.rb +14 -0
  244. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/gem/shoulda.rb +239 -0
  245. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/general.rb +118 -0
  246. data/vendor/plugins/resource_controller/test/vendor/plugins/shoulda/lib/shoulda/private_helpers.rb +22 -0
  247. data/vendor/plugins/ssl_requirement/lib/ssl_requirement.rb +2 -2
  248. data/vendor/plugins/unobtrusive_date_picker/Rakefile +1 -1
  249. metadata +270 -145
@@ -0,0 +1,67 @@
1
+ require File.dirname(__FILE__)+'/../../test_helper'
2
+
3
+ class Helpers::SingletonUrlsTest < Test::Unit::TestCase
4
+
5
+ context "*_url_options helpers" do
6
+ setup do
7
+ @account_controller = AccountsController.new
8
+ @params = stub :[] => ""
9
+ @account_controller.stubs(:params).returns(@params)
10
+ @request = stub :path => ""
11
+ @account_controller.stubs(:request).returns(@request)
12
+ end
13
+
14
+ should "return the correct object options" do
15
+ assert_equal [nil, nil, :account], @account_controller.send(:object_url_options)
16
+ end
17
+
18
+ context "with parent" do
19
+ setup do
20
+ @user = mock
21
+ @image = stub()
22
+ @image_controller = ImagesController.new
23
+ @image_params = stub()
24
+ @image_params.stubs(:[]).with(:user_id).returns 2
25
+ @image_controller.stubs(:params).returns(@image_params)
26
+ @image_controller.expects(:parent_object).returns @user
27
+ @image_request = stub :path => ""
28
+ @image_controller.stubs(:request).returns(@image_request)
29
+ end
30
+
31
+ should "return the correct object options" do
32
+ assert_equal [:edit, [:user, @user], :image], @image_controller.send(:object_url_options, :edit)
33
+ end
34
+ end
35
+
36
+ context "with singleton parent" do
37
+ setup do
38
+ @options_controller = OptionsController.new
39
+ @options_params = stub()
40
+ @options_params.stubs(:[]).with('option').returns ""
41
+ @options_params.stubs(:[]).with(:id).returns 1
42
+ @options_params.stubs(:[]).with(:account_id).returns nil
43
+ @options_controller.stubs(:params).returns(@options_params)
44
+
45
+ @option = Option.new
46
+
47
+ @account = Account.new
48
+ @options_controller.stubs(:parent_object).returns(@account)
49
+
50
+ @request = stub :path => "account/options/1"
51
+ @options_controller.stubs(:request).returns(@request)
52
+
53
+ @options = stub()
54
+ Account.any_instance.stubs(:options).returns(@options)
55
+ end
56
+
57
+ should "return the correct object options" do
58
+ @options.expects(:find).with(1).returns(@option)
59
+ assert_equal [:edit, :account, [:option, @option]], @options_controller.send(:object_url_options, :edit)
60
+ end
61
+
62
+ should "return the correct object options for collection" do
63
+ assert_equal [:account, :options], @options_controller.send(:collection_url_options)
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,75 @@
1
+ require File.dirname(__FILE__)+'/../../test_helper'
2
+
3
+ class Helpers::UrlsTest < Test::Unit::TestCase
4
+ def setup
5
+ @controller = PostsController.new
6
+
7
+ @params = stub :[] => "1"
8
+ @controller.stubs(:params).returns(@params)
9
+
10
+ @request = stub :path => ""
11
+ @controller.stubs(:request).returns(@request)
12
+
13
+ @object = Post.new
14
+ Post.stubs(:find).with("1").returns(@object)
15
+
16
+ @collection = mock()
17
+ Post.stubs(:find).with(:all).returns(@collection)
18
+ end
19
+
20
+ context "*_url_options helpers" do
21
+ setup do
22
+ @products_controller = ::Cms::ProductsController.new
23
+
24
+ @products_controller.stubs(:params).returns(@params)
25
+ @request = stub :path => ""
26
+ @products_controller.stubs(:request).returns(@request)
27
+ @product = Product.new
28
+ Product.stubs(:find).with("1").returns(@product)
29
+ end
30
+
31
+ should "return the correct collection options" do
32
+ assert_equal [nil, :posts], @controller.send(:collection_url_options)
33
+ end
34
+
35
+ should "return the correct object options" do
36
+ assert_equal [nil, nil, [:post, @object]], @controller.send(:object_url_options)
37
+ end
38
+
39
+ should "return the correct collection options for a namespaced controller" do
40
+ assert_equal [:cms, nil, :products], @products_controller.send(:collection_url_options)
41
+ end
42
+
43
+ should "return the correct object options for a namespaced controller" do
44
+ assert_equal [nil, :cms, nil, [:product, @product]], @products_controller.send(:object_url_options)
45
+ end
46
+
47
+ should "return the correct object options when passed an action" do
48
+ assert_equal [:edit, :cms, nil, [:product, @product]], @products_controller.send(:object_url_options, :edit)
49
+ end
50
+
51
+ should "accept an alternate object when passed one" do
52
+ p = Product.new
53
+ assert_equal [nil, :cms, nil, [:product, p]], @products_controller.send(:object_url_options, nil, p)
54
+ end
55
+
56
+ context "with parent" do
57
+ setup do
58
+ @params = stub :parent_type => 'user'
59
+ @user = mock
60
+ @controller.expects(:parent_object).returns @user
61
+ @controller.expects(:parent?).returns(true)
62
+ @controller.expects(:parent_type).returns "user"
63
+ end
64
+
65
+ should "return the correct object options for object_url_options" do
66
+ @controller.expects(:object).returns @object
67
+ assert_equal [:edit, [:user, @user], [:post, @object]], @controller.send(:object_url_options, :edit)
68
+ end
69
+
70
+ should "return the correct object options for collection" do
71
+ assert_equal [[:user, @user], :posts], @controller.send(:collection_url_options)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class HelpersTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @controller = PostsController.new
7
+
8
+ @params = stub :[] => "1"
9
+ @controller.stubs(:params).returns(@params)
10
+
11
+ @object = Post.new
12
+ Post.stubs(:find).with("1").returns(@object)
13
+
14
+ @collection = mock()
15
+ Post.stubs(:find).with(:all).returns(@collection)
16
+ end
17
+
18
+ ResourceController::NAME_ACCESSORS.each do |accessor|
19
+ context "#{accessor} accessor" do
20
+ should "default to returning the singular name of the controller" do
21
+ assert_equal "post", @controller.send(accessor)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ImageTest < Test::Unit::TestCase
4
+ def test_truth
5
+ assert true
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class OptionTest < Test::Unit::TestCase
4
+ fixtures :options
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PhotoTest < Test::Unit::TestCase
4
+ fixtures :photos
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PostTest < Test::Unit::TestCase
4
+ fixtures :posts
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ProjectTest < Test::Unit::TestCase
4
+ fixtures :projects
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,49 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class ResponseCollectorTest < Test::Unit::TestCase
4
+ context "yielding a block to a collector object" do
5
+ setup do
6
+ @collector = ResourceController::ResponseCollector.new
7
+ block = lambda do |wants|
8
+ wants.html {}
9
+ wants.js {}
10
+ wants.xml
11
+ end
12
+ block.call(@collector)
13
+ end
14
+
15
+ should "collect responses" do
16
+ assert_equal Proc, @collector[:html][1].class, @collector[:html].inspect
17
+ assert_equal Proc, @collector[:js][1].class, @collector[:js].inspect
18
+ assert @collector[:xml][1].nil?, @collector[:xml].inspect
19
+ end
20
+
21
+ should "clear responses with clear method" do
22
+ @collector.clear
23
+ assert @collector.responses.empty?
24
+ end
25
+
26
+ should "destroy methods before readding them, if they're already there" do
27
+ @collector.html
28
+ assert @collector[:html][1].nil?
29
+ end
30
+ end
31
+
32
+ context "duplicating a response collector" do
33
+ setup do
34
+ @collector = ResourceController::ResponseCollector.new
35
+ @collector.js
36
+ @duplicate = @collector.dup
37
+ @collector.css
38
+ end
39
+
40
+ should "not bleed in to the original" do
41
+ assert @duplicate[:css].nil?
42
+ end
43
+
44
+ should "duplicate existing responses at the time of duplication" do
45
+ assert_equal :js, @duplicate[:js].first
46
+ end
47
+ end
48
+
49
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class SomethingTest < Test::Unit::TestCase
4
+ fixtures :somethings
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TagTest < Test::Unit::TestCase
4
+ fixtures :tags
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,203 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+ require 'urligence'
3
+
4
+ class PhotosController
5
+ include Urligence
6
+ end
7
+
8
+ class UrligenceTest < Test::Unit::TestCase
9
+ def setup
10
+ @controller = PhotosController.new
11
+ @tag = stub(:class => stub(:name => "Tag"), :to_param => 'awesomestuff')
12
+ @photo = stub(:class => stub(:name => "Photo"), :to_param => 1)
13
+ end
14
+
15
+ context "with one object" do
16
+ setup do
17
+ setup_mocks "/photos/#{@photo.to_param}", :photo, @photo
18
+ end
19
+
20
+ context "urligence" do
21
+ should "return the correct path" do
22
+ assert_equal @expected_path, @controller.urligence(@photo, :path)
23
+ end
24
+ end
25
+
26
+ context "smart_url" do
27
+ should "return the correct url" do
28
+ assert_equal @expected_url, @controller.smart_url(@photo)
29
+ end
30
+ end
31
+
32
+ context "smart_path" do
33
+ should "return the correct path" do
34
+ assert_equal @expected_path, @controller.smart_path(@photo)
35
+ end
36
+ end
37
+ end
38
+
39
+ context "with two objects" do
40
+ setup do
41
+ setup_mocks "/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :tag_photo, @tag, @photo
42
+ end
43
+
44
+ should "return the correct path" do
45
+ assert_equal @expected_path, @controller.urligence(@tag, @photo, :path)
46
+ end
47
+ end
48
+
49
+ context "with a namespace as first param" do
50
+ setup do
51
+ setup_mocks "/admin/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :admin_tag_photo, @tag, @photo
52
+ end
53
+
54
+ should "return the correct path" do
55
+ assert_equal @expected_path, @controller.urligence(:admin, @tag, @photo, :path)
56
+ end
57
+ end
58
+
59
+ context "with many nil options anywhere in the arguments" do
60
+ setup do
61
+ setup_mocks "/tags/#{@tag.to_param}/photos/#{@photo.to_param}", :tag_photo, @tag, @photo
62
+ end
63
+
64
+ should "return the correct path" do
65
+ assert_equal @expected_path, @controller.urligence(nil, nil, nil, @tag, nil, @photo, nil, :path)
66
+ end
67
+ end
68
+
69
+ context "with a symbol as the last parameter" do
70
+ setup do
71
+ setup_mocks "/tags/#{@tag.to_param}/photos", :tag_photos, @tag
72
+ end
73
+
74
+ should "use that as the last fragment of the url" do
75
+ assert_equal @expected_path, @controller.urligence(@tag, :photos, :path)
76
+ end
77
+ end
78
+
79
+ context "with a symbol as the only parameter" do
80
+ setup do
81
+ setup_mocks "/photos", :photos
82
+ end
83
+
84
+ should "use that as the only url fragment" do
85
+ assert_equal @expected_path, @controller.urligence(nil, :photos, :path)
86
+ end
87
+ end
88
+
89
+ context "with a namespace, and a plural symbol" do
90
+ setup do
91
+ setup_mocks "/admin/products", :admin_products
92
+ end
93
+
94
+ should "call the correct url handler" do
95
+ assert_equal @expected_path, @controller.urligence(:admin, :products, :path)
96
+ end
97
+ end
98
+
99
+ context "with only symbols" do
100
+ setup do
101
+ setup_mocks '/admin/products/new', :new_admin_products
102
+ end
103
+
104
+ should "return the correct path" do
105
+ assert_equal @expected_path, @controller.urligence(:new, :admin, :products, :path)
106
+ end
107
+ end
108
+
109
+ context "with array parameters for specifying the names of routes that don't match the class name of the object" do
110
+ setup do
111
+ setup_mocks '/something_tags/1', :something_tag, @tag
112
+ end
113
+
114
+ context "urligence" do
115
+ should "use the name of the symbol as the url fragment" do
116
+ assert_equal @expected_path, @controller.urligence([:something_tag, @tag], :path)
117
+ end
118
+ end
119
+
120
+ context "smart_url" do
121
+ should "return the correct path" do
122
+ assert_equal @expected_url, @controller.smart_url([:something_tag, @tag])
123
+ end
124
+ end
125
+
126
+ context "smart_path" do
127
+ should "return the correct path" do
128
+ assert_equal @expected_path, @controller.smart_path([:something_tag, @tag])
129
+ end
130
+ end
131
+ end
132
+
133
+ context "with array parameters and a namespace" do
134
+ setup do
135
+ setup_mocks '/admin/something_tags/1', :admin_something_tag, @tag
136
+ end
137
+
138
+ should "return the correct url" do
139
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], :path)
140
+ end
141
+ end
142
+
143
+ context "with array parameters, a namespace, and an ending symbol" do
144
+ setup do
145
+ setup_mocks '/admin/something_tags/1/photos', :admin_something_tag_photos, @tag
146
+ end
147
+
148
+ should "return the correct url" do
149
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], :photos, :path)
150
+ end
151
+ end
152
+
153
+ context "with array parameters, a symbol namespace, and normal model parameters" do
154
+ setup do
155
+ setup_mocks '/admin/something_tags/1/photos/1', :admin_something_tag_photo, @tag, @photo
156
+ end
157
+
158
+ should "return the correct url" do
159
+ assert_equal @expected_path, @controller.urligence(:admin, [:something_tag, @tag], @photo, :path)
160
+ end
161
+ end
162
+
163
+ context "hash_for" do
164
+ context "url" do
165
+ setup do
166
+ @controller.stubs(:hash_for_photo_tag_url).with(:id => @tag.to_param, :photo_id => @photo.to_param).returns("something")
167
+ end
168
+
169
+ should "return the correct hash" do
170
+ assert_equal "something", @controller.hash_for_smart_url(@photo, @tag)
171
+ end
172
+ end
173
+
174
+ context "path" do
175
+ setup do
176
+ @photo_tag = stub(:class => stub(:name => "PhotoTag"), :to_param => 'awesomestuff')
177
+ @controller.stubs(:hash_for_photo_tag_path).with(:id => @tag.to_param, :photo_id => @photo.to_param).returns("something")
178
+ end
179
+
180
+ should "return the correct hash" do
181
+ assert_equal "something", @controller.hash_for_smart_path(@photo, [:tag, @photo_tag])
182
+ end
183
+ end
184
+
185
+ context "collection path" do
186
+ setup do
187
+ @controller.stubs(:hash_for_photos_path).with({}).returns('something')
188
+ end
189
+
190
+ should "call the correct methods" do
191
+ assert_equal 'something', @controller.hash_for_smart_path(:photos)
192
+ end
193
+ end
194
+ end
195
+
196
+ private
197
+ def setup_mocks(expected_path, method, *params)
198
+ @expected_path = expected_path
199
+ @controller.stubs("#{method}_path".to_sym).with(*params).returns(@expected_path)
200
+ @controller.stubs("#{method}_url".to_sym).with(*params).returns(@expected_url = "http://localhost#{@expected_path}")
201
+ @controller.stubs("hash_for_#{method}_url".to_sym).with(*params).returns(@expected_hash = @expected_url)
202
+ end
203
+ end