radar-resource_controller 0.6.6

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 (233) hide show
  1. data/LICENSE +22 -0
  2. data/README.rdoc +336 -0
  3. data/VERSION.yml +4 -0
  4. data/generators/scaffold_resource/USAGE +29 -0
  5. data/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
  6. data/generators/scaffold_resource/templates/controller.rb +2 -0
  7. data/generators/scaffold_resource/templates/fixtures.yml +10 -0
  8. data/generators/scaffold_resource/templates/functional_test.rb +57 -0
  9. data/generators/scaffold_resource/templates/helper.rb +2 -0
  10. data/generators/scaffold_resource/templates/migration.rb +15 -0
  11. data/generators/scaffold_resource/templates/model.rb +2 -0
  12. data/generators/scaffold_resource/templates/old_migration.rb +13 -0
  13. data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
  14. data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
  15. data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
  16. data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
  17. data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
  18. data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
  19. data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
  20. data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
  21. data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
  22. data/generators/scaffold_resource/templates/unit_test.rb +7 -0
  23. data/generators/scaffold_resource/templates/view__form.erb +6 -0
  24. data/generators/scaffold_resource/templates/view__form.haml +5 -0
  25. data/generators/scaffold_resource/templates/view_edit.erb +16 -0
  26. data/generators/scaffold_resource/templates/view_edit.haml +11 -0
  27. data/generators/scaffold_resource/templates/view_index.erb +22 -0
  28. data/generators/scaffold_resource/templates/view_index.haml +19 -0
  29. data/generators/scaffold_resource/templates/view_new.erb +12 -0
  30. data/generators/scaffold_resource/templates/view_new.haml +9 -0
  31. data/generators/scaffold_resource/templates/view_show.erb +9 -0
  32. data/generators/scaffold_resource/templates/view_show.haml +9 -0
  33. data/lib/resource_controller/accessors.rb +77 -0
  34. data/lib/resource_controller/action_options.rb +40 -0
  35. data/lib/resource_controller/actions.rb +75 -0
  36. data/lib/resource_controller/base.rb +15 -0
  37. data/lib/resource_controller/class_methods.rb +24 -0
  38. data/lib/resource_controller/controller.rb +70 -0
  39. data/lib/resource_controller/failable_action_options.rb +25 -0
  40. data/lib/resource_controller/helpers/current_objects.rb +73 -0
  41. data/lib/resource_controller/helpers/internal.rb +90 -0
  42. data/lib/resource_controller/helpers/nested.rb +67 -0
  43. data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
  44. data/lib/resource_controller/helpers/urls.rb +132 -0
  45. data/lib/resource_controller/helpers.rb +28 -0
  46. data/lib/resource_controller/response_collector.rb +27 -0
  47. data/lib/resource_controller/singleton.rb +15 -0
  48. data/lib/resource_controller.rb +26 -0
  49. data/lib/urligence.rb +50 -0
  50. data/rails/init.rb +6 -0
  51. data/test/Rakefile +10 -0
  52. data/test/app/controllers/accounts_controller.rb +6 -0
  53. data/test/app/controllers/application_controller.rb +6 -0
  54. data/test/app/controllers/cms/options_controller.rb +3 -0
  55. data/test/app/controllers/cms/personnel_controller.rb +2 -0
  56. data/test/app/controllers/cms/photos_controller.rb +6 -0
  57. data/test/app/controllers/cms/products_controller.rb +3 -0
  58. data/test/app/controllers/comments_controller.rb +3 -0
  59. data/test/app/controllers/images_controller.rb +4 -0
  60. data/test/app/controllers/options_controller.rb +8 -0
  61. data/test/app/controllers/people_controller.rb +9 -0
  62. data/test/app/controllers/photos_controller.rb +12 -0
  63. data/test/app/controllers/posts_controller.rb +10 -0
  64. data/test/app/controllers/projects_controller.rb +11 -0
  65. data/test/app/controllers/somethings_controller.rb +3 -0
  66. data/test/app/controllers/tags_controller.rb +13 -0
  67. data/test/app/controllers/users_controller.rb +12 -0
  68. data/test/app/helpers/accounts_helper.rb +2 -0
  69. data/test/app/helpers/application_helper.rb +3 -0
  70. data/test/app/helpers/cms/products_helper.rb +2 -0
  71. data/test/app/helpers/comments_helper.rb +2 -0
  72. data/test/app/helpers/images_helper.rb +2 -0
  73. data/test/app/helpers/options_helper.rb +2 -0
  74. data/test/app/helpers/people_helper.rb +2 -0
  75. data/test/app/helpers/photos_helper.rb +2 -0
  76. data/test/app/helpers/posts_helper.rb +2 -0
  77. data/test/app/helpers/projects_helper.rb +2 -0
  78. data/test/app/helpers/somethings_helper.rb +2 -0
  79. data/test/app/helpers/tags_helper.rb +2 -0
  80. data/test/app/helpers/users_helper.rb +2 -0
  81. data/test/app/models/account.rb +4 -0
  82. data/test/app/models/comment.rb +3 -0
  83. data/test/app/models/image.rb +3 -0
  84. data/test/app/models/option.rb +3 -0
  85. data/test/app/models/personnel.rb +3 -0
  86. data/test/app/models/photo.rb +5 -0
  87. data/test/app/models/post.rb +3 -0
  88. data/test/app/models/product.rb +3 -0
  89. data/test/app/models/project.rb +3 -0
  90. data/test/app/models/something.rb +2 -0
  91. data/test/app/models/tag.rb +3 -0
  92. data/test/app/models/user.rb +3 -0
  93. data/test/app/views/accounts/_form.html.erb +4 -0
  94. data/test/app/views/accounts/edit.html.erb +14 -0
  95. data/test/app/views/accounts/new.html.erb +12 -0
  96. data/test/app/views/accounts/show.html.erb +5 -0
  97. data/test/app/views/cms/options/edit.rhtml +17 -0
  98. data/test/app/views/cms/options/index.rhtml +20 -0
  99. data/test/app/views/cms/options/new.rhtml +16 -0
  100. data/test/app/views/cms/options/show.rhtml +8 -0
  101. data/test/app/views/cms/photos/edit.rhtml +17 -0
  102. data/test/app/views/cms/photos/index.rhtml +20 -0
  103. data/test/app/views/cms/photos/new.rhtml +16 -0
  104. data/test/app/views/cms/photos/show.rhtml +8 -0
  105. data/test/app/views/cms/products/edit.rhtml +17 -0
  106. data/test/app/views/cms/products/index.rhtml +20 -0
  107. data/test/app/views/cms/products/new.rhtml +16 -0
  108. data/test/app/views/cms/products/show.rhtml +8 -0
  109. data/test/app/views/comments/edit.rhtml +27 -0
  110. data/test/app/views/comments/index.rhtml +24 -0
  111. data/test/app/views/comments/new.rhtml +26 -0
  112. data/test/app/views/comments/show.rhtml +18 -0
  113. data/test/app/views/images/_form.html.erb +4 -0
  114. data/test/app/views/images/edit.html.erb +14 -0
  115. data/test/app/views/images/new.html.erb +12 -0
  116. data/test/app/views/layouts/application.rhtml +17 -0
  117. data/test/app/views/layouts/comments.rhtml +17 -0
  118. data/test/app/views/layouts/options.rhtml +17 -0
  119. data/test/app/views/layouts/people.rhtml +17 -0
  120. data/test/app/views/layouts/photos.rhtml +17 -0
  121. data/test/app/views/layouts/projects.rhtml +17 -0
  122. data/test/app/views/layouts/somethings.rhtml +17 -0
  123. data/test/app/views/layouts/tags.rhtml +17 -0
  124. data/test/app/views/options/_form.html.erb +8 -0
  125. data/test/app/views/options/edit.html.erb +16 -0
  126. data/test/app/views/options/index.html.erb +21 -0
  127. data/test/app/views/options/new.html.erb +12 -0
  128. data/test/app/views/options/show.html.erb +10 -0
  129. data/test/app/views/people/edit.rhtml +17 -0
  130. data/test/app/views/people/index.rhtml +20 -0
  131. data/test/app/views/people/new.rhtml +16 -0
  132. data/test/app/views/people/show.rhtml +8 -0
  133. data/test/app/views/photos/edit.rhtml +17 -0
  134. data/test/app/views/photos/index.rhtml +20 -0
  135. data/test/app/views/photos/new.rhtml +16 -0
  136. data/test/app/views/photos/show.rhtml +8 -0
  137. data/test/app/views/posts/edit.rhtml +22 -0
  138. data/test/app/views/posts/index.rhtml +22 -0
  139. data/test/app/views/posts/new.rhtml +21 -0
  140. data/test/app/views/posts/show.rhtml +13 -0
  141. data/test/app/views/projects/edit.rhtml +17 -0
  142. data/test/app/views/projects/index.rhtml +20 -0
  143. data/test/app/views/projects/new.rhtml +16 -0
  144. data/test/app/views/projects/show.rhtml +8 -0
  145. data/test/app/views/somethings/edit.rhtml +17 -0
  146. data/test/app/views/somethings/index.rhtml +20 -0
  147. data/test/app/views/somethings/new.rhtml +16 -0
  148. data/test/app/views/somethings/show.rhtml +8 -0
  149. data/test/app/views/tags/edit.rhtml +17 -0
  150. data/test/app/views/tags/index.rhtml +20 -0
  151. data/test/app/views/tags/index.rjs +0 -0
  152. data/test/app/views/tags/new.rhtml +16 -0
  153. data/test/app/views/tags/show.rhtml +8 -0
  154. data/test/app/views/users/edit.rhtml +17 -0
  155. data/test/app/views/users/index.rhtml +20 -0
  156. data/test/app/views/users/new.rhtml +16 -0
  157. data/test/app/views/users/show.rhtml +8 -0
  158. data/test/config/boot.rb +110 -0
  159. data/test/config/database.yml +9 -0
  160. data/test/config/environment.rb +49 -0
  161. data/test/config/environments/development.rb +17 -0
  162. data/test/config/environments/test.rb +19 -0
  163. data/test/config/initializers/inflections.rb +14 -0
  164. data/test/config/routes.rb +61 -0
  165. data/test/db/migrate/001_create_posts.rb +12 -0
  166. data/test/db/migrate/002_create_products.rb +11 -0
  167. data/test/db/migrate/003_create_comments.rb +13 -0
  168. data/test/db/migrate/004_create_options.rb +13 -0
  169. data/test/db/migrate/005_create_photos.rb +11 -0
  170. data/test/db/migrate/006_create_tags.rb +17 -0
  171. data/test/db/migrate/007_create_somethings.rb +11 -0
  172. data/test/db/migrate/008_create_accounts.rb +11 -0
  173. data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  174. data/test/db/migrate/010_create_projects.rb +11 -0
  175. data/test/db/migrate/011_create_images.rb +12 -0
  176. data/test/db/migrate/012_create_users.rb +11 -0
  177. data/test/db/migrate/013_create_personnel.rb +11 -0
  178. data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  179. data/test/db/schema.rb +78 -0
  180. data/test/script/console +3 -0
  181. data/test/script/destroy +3 -0
  182. data/test/script/generate +3 -0
  183. data/test/script/server +3 -0
  184. data/test/test/fixtures/accounts.yml +7 -0
  185. data/test/test/fixtures/comments.yml +11 -0
  186. data/test/test/fixtures/images.yml +6 -0
  187. data/test/test/fixtures/options.yml +9 -0
  188. data/test/test/fixtures/personnel.yml +5 -0
  189. data/test/test/fixtures/photos.yml +9 -0
  190. data/test/test/fixtures/photos_tags.yml +3 -0
  191. data/test/test/fixtures/posts.yml +9 -0
  192. data/test/test/fixtures/products.yml +7 -0
  193. data/test/test/fixtures/projects.yml +7 -0
  194. data/test/test/fixtures/somethings.yml +7 -0
  195. data/test/test/fixtures/tags.yml +7 -0
  196. data/test/test/fixtures/users.yml +5 -0
  197. data/test/test/functional/cms/options_controller_test.rb +23 -0
  198. data/test/test/functional/cms/photos_controller_test.rb +43 -0
  199. data/test/test/functional/cms/products_controller_test.rb +23 -0
  200. data/test/test/functional/comments_controller_test.rb +26 -0
  201. data/test/test/functional/images_controller_test.rb +37 -0
  202. data/test/test/functional/people_controller_test.rb +34 -0
  203. data/test/test/functional/photos_controller_test.rb +130 -0
  204. data/test/test/functional/posts_controller_test.rb +34 -0
  205. data/test/test/functional/projects_controller_test.rb +44 -0
  206. data/test/test/functional/somethings_controller_test.rb +28 -0
  207. data/test/test/functional/tags_controller_test.rb +64 -0
  208. data/test/test/functional/users_controller_test.rb +24 -0
  209. data/test/test/test_helper.rb +13 -0
  210. data/test/test/unit/accessors_test.rb +110 -0
  211. data/test/test/unit/account_test.rb +7 -0
  212. data/test/test/unit/action_options_test.rb +109 -0
  213. data/test/test/unit/base_test.rb +11 -0
  214. data/test/test/unit/comment_test.rb +10 -0
  215. data/test/test/unit/failable_action_options_test.rb +77 -0
  216. data/test/test/unit/helpers/current_objects_test.rb +133 -0
  217. data/test/test/unit/helpers/internal_test.rb +106 -0
  218. data/test/test/unit/helpers/nested_test.rb +86 -0
  219. data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  220. data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  221. data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  222. data/test/test/unit/helpers/urls_test.rb +75 -0
  223. data/test/test/unit/helpers_test.rb +25 -0
  224. data/test/test/unit/image_test.rb +7 -0
  225. data/test/test/unit/option_test.rb +10 -0
  226. data/test/test/unit/photo_test.rb +10 -0
  227. data/test/test/unit/post_test.rb +10 -0
  228. data/test/test/unit/project_test.rb +10 -0
  229. data/test/test/unit/response_collector_test.rb +49 -0
  230. data/test/test/unit/something_test.rb +10 -0
  231. data/test/test/unit/tag_test.rb +10 -0
  232. data/test/test/unit/urligence_test.rb +203 -0
  233. metadata +383 -0
@@ -0,0 +1,130 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'photos_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class PhotosController; def rescue_action(e) raise e end; end
6
+
7
+ class PhotosControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = PhotosController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @photo = Photo.find 1
13
+ end
14
+
15
+ context "actions specified" do
16
+ should "not respond to update" do
17
+ assert !@controller.respond_to?(:update)
18
+ end
19
+ end
20
+
21
+ should_be_restful do |resource|
22
+ resource.formats = [:html]
23
+
24
+ resource.actions = [:index, :new, :create, :destroy, :show, :edit]
25
+ resource.create.params = {:title => 'Some Photo Title'}
26
+ resource.create.flash = "Some Photo Title was created!"
27
+ end
28
+
29
+ context "with user as parent" do
30
+ context "on get to :index" do
31
+ setup do
32
+ get :index, :user_id => 1
33
+ end
34
+
35
+ should_respond_with :success
36
+ should_render_template "index"
37
+ should_assign_to :photos
38
+ should_assign_to :user
39
+ should "scope photos to user" do
40
+ assert assigns(:photos).all? { |photo| photo.user.id == 1 }
41
+ end
42
+ end
43
+
44
+ context "on post to :create" do
45
+ setup do
46
+ post :create, :user_id => 1, :photo => {}
47
+ end
48
+
49
+ should_redirect_to 'user_photo_path(@photo.user, @photo)'
50
+ should_assign_to :photo
51
+ should_assign_to :user
52
+ should "scope photo to user" do
53
+ assert accounts(:one), assigns(:photo).user
54
+ end
55
+ end
56
+ end
57
+
58
+ # url helpers integration
59
+
60
+ context "url, path, and hash_for helpers" do
61
+ setup do
62
+ get :index
63
+ end
64
+
65
+ should "return collection url" do
66
+ assert_equal photos_url, @controller.send(:collection_url)
67
+ end
68
+
69
+ should "return collection path" do
70
+ assert_equal photos_path, @controller.send(:collection_path)
71
+ end
72
+
73
+ should "return hash for collection url" do
74
+ assert_equal hash_for_photos_url, @controller.send(:hash_for_collection_url)
75
+ end
76
+
77
+ should "return hash for collection path" do
78
+ assert_equal hash_for_photos_path, @controller.send(:hash_for_collection_path)
79
+ end
80
+
81
+ should "return object url" do
82
+ assert_equal photo_url(photos(:one)), @controller.send(:object_url, photos(:one))
83
+ end
84
+
85
+ should "return object path" do
86
+ assert_equal photo_path(photos(:one)), @controller.send(:object_path, photos(:one))
87
+ end
88
+
89
+ should "return hash_for object url" do
90
+ assert_equal hash_for_photo_url(:id => @photo.to_param), @controller.send(:hash_for_object_url, photos(:one))
91
+ end
92
+
93
+ should "return hash_for object path" do
94
+ assert_equal hash_for_photo_path(:id => @photo.to_param), @controller.send(:hash_for_object_path, photos(:one))
95
+ end
96
+
97
+ should "return edit object url" do
98
+ assert_equal edit_photo_url(photos(:one)), @controller.send(:edit_object_url, photos(:one))
99
+ end
100
+
101
+ should "return edit object path" do
102
+ assert_equal edit_photo_path(photos(:one)), @controller.send(:edit_object_path, photos(:one))
103
+ end
104
+
105
+ should "return hash_for_edit object url" do
106
+ assert_equal hash_for_edit_photo_url(:id => @photo.to_param), @controller.send(:hash_for_edit_object_url, photos(:one))
107
+ end
108
+
109
+ should "return hash_for_edit object path" do
110
+ assert_equal hash_for_edit_photo_path(:id => @photo.to_param), @controller.send(:hash_for_edit_object_path, photos(:one))
111
+ end
112
+
113
+ should "return new object url" do
114
+ assert_equal new_photo_url, @controller.send(:new_object_url)
115
+ end
116
+
117
+ should "return new object path" do
118
+ assert_equal new_photo_path, @controller.send(:new_object_path)
119
+ end
120
+
121
+ should "return hash_for_new object url" do
122
+ assert_equal hash_for_new_photo_url, @controller.send(:hash_for_new_object_url)
123
+ end
124
+
125
+ should "return hash_for_new object path" do
126
+ assert_equal hash_for_new_photo_path, @controller.send(:hash_for_new_object_path)
127
+ end
128
+ end
129
+
130
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'posts_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class PostsController; def rescue_action(e) raise e end; end
6
+
7
+ class PostsControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = PostsController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @post = Post.find 1
13
+ end
14
+
15
+ should_be_restful do |resource|
16
+ resource.formats = [:html]
17
+
18
+ resource.actions = :all
19
+ end
20
+
21
+ context "on post to :create" do
22
+ setup do
23
+ post :create, :post => {}
24
+ end
25
+
26
+ should "name the post 'a great post'" do
27
+ assert_equal 'a great post', assigns(:post).title
28
+ end
29
+
30
+ should "give the post a body of '...'" do
31
+ assert_equal '...', assigns(:post).body
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'projects_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class ProjectsController; def rescue_action(e) raise e end; end
6
+
7
+ class ProjectsControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = ProjectsController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @project = projects :one
13
+ end
14
+
15
+ context "on DELETE to :destroy that fails" do
16
+ setup do
17
+ Project.any_instance.stubs(:destroy).returns(false)
18
+ delete :destroy, :id => @project.to_param
19
+ end
20
+
21
+ should_respond_with :redirect
22
+ should_redirect_to "project_url(@project)"
23
+ end
24
+
25
+ context "on failed post to :create" do
26
+ setup do
27
+ post :create, :project => { :title => "" }
28
+ end
29
+
30
+ should "have error flash message" do
31
+ assert_equal 'Project was not created.', flash[:error]
32
+ end
33
+ end
34
+
35
+ context "on failed update" do
36
+ setup do
37
+ put :update, :id => 1, :project => { :title => "" }
38
+ end
39
+
40
+ should "have error flash message" do
41
+ assert_equal 'Project was not updated.', flash.now[:error]
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'somethings_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class SomethingsController; def rescue_action(e) raise e end; end
6
+
7
+ class SomethingsControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = SomethingsController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @something = somethings :one
13
+ end
14
+
15
+ context "actions specified" do
16
+ [:create, :edit, :update, :destroy, :new].each do |action|
17
+ should "not respond to #{action}" do
18
+ assert !@controller.respond_to?(action)
19
+ end
20
+ end
21
+ end
22
+
23
+ should_be_restful do |resource|
24
+ resource.formats = [:html]
25
+
26
+ resource.actions = [:index, :show]
27
+ end
28
+ end
@@ -0,0 +1,64 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'tags_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class TagsController; def rescue_action(e) raise e end; end
6
+
7
+ class TagsControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = TagsController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @tag = Tag.find 1
13
+ end
14
+
15
+ context "with photo as parent" do
16
+ context "get to :index" do
17
+ setup do
18
+ get :index, :photo_id => 1
19
+ end
20
+
21
+ should_assign_to :products
22
+ should_render_template "index"
23
+ should_respond_with :success
24
+
25
+ should "respond with html" do
26
+ assert_equal 'text/html', @response.content_type
27
+ end
28
+ end
29
+
30
+ context "xhr to :index" do
31
+ setup do
32
+ xhr :get, :index, :photo_id => 1
33
+ end
34
+
35
+ should_assign_to :products
36
+ should_respond_with :success
37
+
38
+ should "respond with rjs" do
39
+ assert_equal 'text/javascript', @response.content_type
40
+ end
41
+ end
42
+
43
+ context "post to create" do
44
+ setup do
45
+ post :create, :photo_id => 1, :tag => {:name => "Hello!"}
46
+ end
47
+
48
+ should "add tag to photo" do
49
+ assert assigns(:photo).tags.include?(assigns(:tag)), "photo does not include new tag"
50
+ end
51
+ end
52
+ end
53
+
54
+ context "without photo as parent" do
55
+ should_be_restful do |resource|
56
+ resource.formats = [:html]
57
+ end
58
+
59
+ should "render text for a missing object" do
60
+ get :show, :id => 50000
61
+ assert @response.body.match(/not found/i), @response.body
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+ require 'users_controller'
3
+
4
+ # Re-raise errors caught by the controller.
5
+ class UsersController; def rescue_action(e) raise e end; end
6
+
7
+ class UsersControllerTest < ActionController::TestCase
8
+ def setup
9
+ @controller = UsersController.new
10
+ @request = ActionController::TestRequest.new
11
+ @response = ActionController::TestResponse.new
12
+ @dude = accounts :one
13
+ end
14
+
15
+ should_be_restful do |resource|
16
+ resource.formats = [:html]
17
+ resource.klass = Account
18
+ resource.object = :dude
19
+
20
+ resource.create.redirect = 'dude_url(@dude)'
21
+ resource.update.redirect = 'dude_url(@dude)'
22
+ resource.destroy.redirect = 'dudes_url'
23
+ end
24
+ end
@@ -0,0 +1,13 @@
1
+ $:.reject! { |path| path.include? 'TextMate' }
2
+ require 'test/unit'
3
+ ENV["RAILS_ENV"] = "test"
4
+ require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
5
+ require 'test_help'
6
+ require 'mocha'
7
+
8
+ class ActiveSupport::TestCase
9
+ self.use_transactional_fixtures = true
10
+ self.use_instantiated_fixtures = false
11
+
12
+ fixtures :all
13
+ end
@@ -0,0 +1,110 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class AccessorsTest < ActiveSupport::TestCase
4
+ def setup
5
+ PostsController.class_eval do
6
+ extend ResourceController::Accessors
7
+ end
8
+ end
9
+
10
+ context "scoping reader" do
11
+ setup do
12
+ PostsController.class_eval do
13
+ class_scoping_reader :create, ResourceController::ActionOptions.new
14
+ end
15
+ end
16
+
17
+ should "access create as usual" do
18
+ PostsController.class_eval do
19
+ create.flash "asdf"
20
+ end
21
+
22
+ assert_equal "asdf", PostsController.create.flash
23
+ end
24
+
25
+ should "scope to create object in a block" do
26
+ PostsController.class_eval do
27
+ create do
28
+ flash "asdf"
29
+ end
30
+ end
31
+
32
+ assert_equal "asdf", PostsController.create.flash
33
+ end
34
+ end
35
+
36
+ context "reader/writer method" do
37
+ setup do
38
+ PostsController.class_eval do
39
+ reader_writer :flash
40
+ end
41
+
42
+ @controller = PostsController.new
43
+ end
44
+
45
+ should "set and get var" do
46
+ @controller.flash "something"
47
+ assert_equal "something", @controller.flash
48
+ end
49
+ end
50
+
51
+ context "class reader/writer method" do
52
+ setup do
53
+ PostsController.class_eval do
54
+ class_reader_writer :flash
55
+ end
56
+
57
+ @controller = PostsController.new
58
+ end
59
+
60
+ should "initialize var" do
61
+ assert_nil PostsController.flash
62
+ assert_nil @controller.flash
63
+ end
64
+
65
+ should "set and get var" do
66
+ PostsController.flash "something"
67
+ assert_equal "something", PostsController.flash
68
+ end
69
+ end
70
+
71
+ context "block accessor" do
72
+ setup do
73
+ PostsController.class_eval do
74
+ block_accessor :something
75
+ end
76
+ @controller = PostsController.new
77
+ end
78
+
79
+ should "store blocks" do
80
+ @controller.something {}
81
+ assert @controller.something.first
82
+ end
83
+
84
+ should "store symbols as well" do
85
+ @controller.something(:method, :method_two) {}
86
+ assert_equal :method, @controller.something[0]
87
+ assert_equal :method_two, @controller.something[1]
88
+ assert @controller.something[2].is_a?(Proc)
89
+ end
90
+ end
91
+
92
+ context "reader writer" do
93
+ setup do
94
+ PostsController.class_eval do
95
+ reader_writer :rw
96
+ end
97
+
98
+ @controller = PostsController.new
99
+ end
100
+
101
+ should "store blocks" do
102
+ @controller.rw do
103
+ "asdf"
104
+ end
105
+
106
+ assert @controller.rw.is_a?(Proc), @controller.rw
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PersonTest < ActiveSupport::TestCase
4
+ def test_truth
5
+ assert true
6
+ end
7
+ end
@@ -0,0 +1,109 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class ActionOptionsTest < ActiveSupport::TestCase
4
+ def setup
5
+ @controller = PostsController.new
6
+ @create = ResourceController::ActionOptions.new
7
+ end
8
+
9
+ should "have attr accessor for flash" do
10
+ @create.flash "Successfully created."
11
+ assert_equal "Successfully created.", @create.flash
12
+ end
13
+
14
+ should "have attr accessor for flash_now" do
15
+ @create.flash_now "Successfully created."
16
+ assert_equal "Successfully created.", @create.flash_now
17
+ end
18
+
19
+ %w(before after).each do |accessor|
20
+ should "have a block accessor for #{accessor}" do
21
+ @create.send(accessor) do
22
+ "return_something"
23
+ end
24
+
25
+ assert_equal "return_something", @create.send(accessor).first.call(nil)
26
+ end
27
+ end
28
+
29
+ context "response yielding to response collector" do
30
+ setup do
31
+ @create.response do |wants|
32
+ wants.html
33
+ end
34
+ end
35
+
36
+ should "accept symbols" do
37
+ @create.response :html, :js, :xml
38
+ assert @create.wants[:html]
39
+ assert @create.wants[:js]
40
+ assert @create.wants[:xml]
41
+ end
42
+
43
+ should "accept symbols and blocks" do
44
+ @create.responds_to :html do |wants| # note the aliasing of response here
45
+ wants.js
46
+ end
47
+
48
+ assert @create.wants[:html]
49
+ assert @create.wants[:js]
50
+ end
51
+
52
+ should "collect responses" do
53
+ assert @create.wants[:html]
54
+ end
55
+
56
+ should "clear the collector on a subsequent call" do
57
+ @create.respond_to do |wants| # note the other aliasing of response
58
+ wants.js
59
+ end
60
+
61
+ assert_nil @create.wants[:html]
62
+ assert @create.wants[:js]
63
+ end
64
+
65
+ should "add response without clearing" do
66
+ @create.wants.js
67
+ assert @create.wants[:js]
68
+ assert @create.wants[:html]
69
+ end
70
+ end
71
+
72
+ context "duplicating action options" do
73
+ setup do
74
+ @opts = ResourceController::ActionOptions.new
75
+ @opts.wants.js
76
+ @opts.after {}
77
+ @opts.before {}
78
+ @opts.flash ''
79
+ @opts.flash_now ''
80
+ @dup = @opts.dup
81
+ end
82
+
83
+ should "duplicate the response collector" do
84
+ assert !@opts.wants.equal?(@dup.wants)
85
+ assert @dup.wants[:js]
86
+ end
87
+
88
+ should "duplicate the after block" do
89
+ assert !@opts.after.equal?(@dup.after)
90
+ assert @dup.after
91
+ end
92
+
93
+ should "duplicate the before block" do
94
+ assert !@opts.before.equal?(@dup.before)
95
+ assert @dup.before
96
+ end
97
+
98
+ should "duplicate the flash" do
99
+ assert !@opts.flash.equal?(@dup.flash)
100
+ assert @dup.flash
101
+ end
102
+
103
+ should "duplicate the flash_now" do
104
+ assert !@opts.flash_now.equal?(@dup.flash_now)
105
+ assert @dup.flash_now
106
+ end
107
+ end
108
+
109
+ end
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class BaseTest < ActiveSupport::TestCase
4
+ def setup
5
+ @controller = ResourceController::Base.new
6
+ end
7
+
8
+ def test_case_name
9
+
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class CommentTest < ActiveSupport::TestCase
4
+ fixtures :comments
5
+
6
+ # Replace this with your real tests.
7
+ def test_truth
8
+ assert true
9
+ end
10
+ end
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__)+'/../test_helper'
2
+
3
+ class FailableActionOptionsTest < ActiveSupport::TestCase
4
+ def setup
5
+ @controller = PostsController.new
6
+ @create = ResourceController::FailableActionOptions.new
7
+ end
8
+
9
+ should "have success and fails" do
10
+ assert ResourceController::ActionOptions, @create.success.class
11
+ assert ResourceController::ActionOptions, @create.fails.class
12
+ end
13
+
14
+ %w(before).each do |accessor|
15
+ should "have a block accessor for #{accessor}" do
16
+ @create.send(accessor) do
17
+ "return_something"
18
+ end
19
+
20
+ assert_equal "return_something", @create.send(accessor).first.call(nil)
21
+ end
22
+ end
23
+
24
+ should "delegate flash to success" do
25
+ @create.flash "Successfully created."
26
+ assert_equal "Successfully created.", @create.success.flash
27
+ end
28
+
29
+ should "delegate after to success" do
30
+ @create.after do
31
+ "something"
32
+ end
33
+
34
+ assert_equal "something", @create.success.after.first.call
35
+ end
36
+
37
+ should "delegate response to success" do
38
+ @create.response do |wants|
39
+ wants.html
40
+ end
41
+
42
+ assert @create.wants[:html]
43
+ end
44
+
45
+ should "delegate wants to success" do
46
+ @create.wants.html
47
+
48
+ assert @create.wants[:html]
49
+ end
50
+
51
+ context "duplication" do
52
+ setup do
53
+ @opts = ResourceController::FailableActionOptions.new
54
+ @opts.wants.js
55
+ @opts.failure.wants.js
56
+ @opts.before {}
57
+
58
+ @dup = @opts.dup
59
+ end
60
+
61
+ should "duplicate success" do
62
+ assert !@dup.success.equal?(@opts.success)
63
+ assert @dup.success.wants[:js]
64
+ end
65
+
66
+ should "duplicate failure" do
67
+ assert !@dup.failure.equal?(@opts.failure)
68
+ assert @dup.failure.wants[:js]
69
+ end
70
+
71
+ should "duplicate before" do
72
+ assert !@dup.before.equal?(@opts.before)
73
+ assert @dup.before
74
+ end
75
+ end
76
+
77
+ end