matid-resource_controller 0.6.5

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 (227) hide show
  1. data/LICENSE +23 -0
  2. data/README.rdoc +330 -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.rb +23 -0
  34. data/lib/resource_controller/accessors.rb +77 -0
  35. data/lib/resource_controller/base.rb +15 -0
  36. data/lib/resource_controller/controller.rb +38 -0
  37. data/lib/resource_controller/helpers.rb +27 -0
  38. data/lib/resource_controller/helpers/current_objects.rb +73 -0
  39. data/lib/resource_controller/helpers/nested.rb +67 -0
  40. data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
  41. data/lib/resource_controller/helpers/urls.rb +132 -0
  42. data/lib/resource_controller/singleton.rb +15 -0
  43. data/lib/urligence.rb +50 -0
  44. data/rails/init.rb +6 -0
  45. data/test/Rakefile +10 -0
  46. data/test/app/controllers/accounts_controller.rb +6 -0
  47. data/test/app/controllers/application_controller.rb +5 -0
  48. data/test/app/controllers/cms/options_controller.rb +3 -0
  49. data/test/app/controllers/cms/personnel_controller.rb +2 -0
  50. data/test/app/controllers/cms/photos_controller.rb +6 -0
  51. data/test/app/controllers/cms/products_controller.rb +3 -0
  52. data/test/app/controllers/comments_controller.rb +3 -0
  53. data/test/app/controllers/images_controller.rb +4 -0
  54. data/test/app/controllers/options_controller.rb +8 -0
  55. data/test/app/controllers/people_controller.rb +9 -0
  56. data/test/app/controllers/photos_controller.rb +12 -0
  57. data/test/app/controllers/posts_controller.rb +10 -0
  58. data/test/app/controllers/projects_controller.rb +3 -0
  59. data/test/app/controllers/somethings_controller.rb +3 -0
  60. data/test/app/controllers/tags_controller.rb +13 -0
  61. data/test/app/controllers/users_controller.rb +12 -0
  62. data/test/app/helpers/accounts_helper.rb +2 -0
  63. data/test/app/helpers/application_helper.rb +3 -0
  64. data/test/app/helpers/cms/products_helper.rb +2 -0
  65. data/test/app/helpers/comments_helper.rb +2 -0
  66. data/test/app/helpers/images_helper.rb +2 -0
  67. data/test/app/helpers/options_helper.rb +2 -0
  68. data/test/app/helpers/people_helper.rb +2 -0
  69. data/test/app/helpers/photos_helper.rb +2 -0
  70. data/test/app/helpers/posts_helper.rb +2 -0
  71. data/test/app/helpers/projects_helper.rb +2 -0
  72. data/test/app/helpers/somethings_helper.rb +2 -0
  73. data/test/app/helpers/tags_helper.rb +2 -0
  74. data/test/app/helpers/users_helper.rb +2 -0
  75. data/test/app/models/account.rb +4 -0
  76. data/test/app/models/comment.rb +3 -0
  77. data/test/app/models/image.rb +3 -0
  78. data/test/app/models/option.rb +3 -0
  79. data/test/app/models/personnel.rb +3 -0
  80. data/test/app/models/photo.rb +5 -0
  81. data/test/app/models/post.rb +3 -0
  82. data/test/app/models/product.rb +3 -0
  83. data/test/app/models/project.rb +2 -0
  84. data/test/app/models/something.rb +2 -0
  85. data/test/app/models/tag.rb +3 -0
  86. data/test/app/models/user.rb +3 -0
  87. data/test/app/views/accounts/_form.html.erb +4 -0
  88. data/test/app/views/accounts/edit.html.erb +14 -0
  89. data/test/app/views/accounts/new.html.erb +12 -0
  90. data/test/app/views/accounts/show.html.erb +5 -0
  91. data/test/app/views/cms/options/edit.rhtml +17 -0
  92. data/test/app/views/cms/options/index.rhtml +20 -0
  93. data/test/app/views/cms/options/new.rhtml +16 -0
  94. data/test/app/views/cms/options/show.rhtml +8 -0
  95. data/test/app/views/cms/photos/edit.rhtml +17 -0
  96. data/test/app/views/cms/photos/index.rhtml +20 -0
  97. data/test/app/views/cms/photos/new.rhtml +16 -0
  98. data/test/app/views/cms/photos/show.rhtml +8 -0
  99. data/test/app/views/cms/products/edit.rhtml +17 -0
  100. data/test/app/views/cms/products/index.rhtml +20 -0
  101. data/test/app/views/cms/products/new.rhtml +16 -0
  102. data/test/app/views/cms/products/show.rhtml +8 -0
  103. data/test/app/views/comments/edit.rhtml +27 -0
  104. data/test/app/views/comments/index.rhtml +24 -0
  105. data/test/app/views/comments/new.rhtml +26 -0
  106. data/test/app/views/comments/show.rhtml +18 -0
  107. data/test/app/views/images/_form.html.erb +4 -0
  108. data/test/app/views/images/edit.html.erb +14 -0
  109. data/test/app/views/images/new.html.erb +12 -0
  110. data/test/app/views/layouts/application.rhtml +17 -0
  111. data/test/app/views/layouts/comments.rhtml +17 -0
  112. data/test/app/views/layouts/options.rhtml +17 -0
  113. data/test/app/views/layouts/people.rhtml +17 -0
  114. data/test/app/views/layouts/photos.rhtml +17 -0
  115. data/test/app/views/layouts/projects.rhtml +17 -0
  116. data/test/app/views/layouts/somethings.rhtml +17 -0
  117. data/test/app/views/layouts/tags.rhtml +17 -0
  118. data/test/app/views/options/_form.html.erb +8 -0
  119. data/test/app/views/options/edit.html.erb +16 -0
  120. data/test/app/views/options/index.html.erb +21 -0
  121. data/test/app/views/options/new.html.erb +12 -0
  122. data/test/app/views/options/show.html.erb +10 -0
  123. data/test/app/views/people/edit.rhtml +17 -0
  124. data/test/app/views/people/index.rhtml +20 -0
  125. data/test/app/views/people/new.rhtml +16 -0
  126. data/test/app/views/people/show.rhtml +8 -0
  127. data/test/app/views/photos/edit.rhtml +17 -0
  128. data/test/app/views/photos/index.rhtml +20 -0
  129. data/test/app/views/photos/new.rhtml +16 -0
  130. data/test/app/views/photos/show.rhtml +8 -0
  131. data/test/app/views/posts/edit.rhtml +22 -0
  132. data/test/app/views/posts/index.rhtml +22 -0
  133. data/test/app/views/posts/new.rhtml +21 -0
  134. data/test/app/views/posts/show.rhtml +13 -0
  135. data/test/app/views/projects/edit.rhtml +17 -0
  136. data/test/app/views/projects/index.rhtml +20 -0
  137. data/test/app/views/projects/new.rhtml +16 -0
  138. data/test/app/views/projects/show.rhtml +8 -0
  139. data/test/app/views/somethings/edit.rhtml +17 -0
  140. data/test/app/views/somethings/index.rhtml +20 -0
  141. data/test/app/views/somethings/new.rhtml +16 -0
  142. data/test/app/views/somethings/show.rhtml +8 -0
  143. data/test/app/views/tags/edit.rhtml +17 -0
  144. data/test/app/views/tags/index.rhtml +20 -0
  145. data/test/app/views/tags/index.rjs +0 -0
  146. data/test/app/views/tags/new.rhtml +16 -0
  147. data/test/app/views/tags/show.rhtml +8 -0
  148. data/test/app/views/users/edit.rhtml +17 -0
  149. data/test/app/views/users/index.rhtml +20 -0
  150. data/test/app/views/users/new.rhtml +16 -0
  151. data/test/app/views/users/show.rhtml +8 -0
  152. data/test/config/boot.rb +110 -0
  153. data/test/config/database.yml +9 -0
  154. data/test/config/environment.rb +49 -0
  155. data/test/config/environments/development.rb +17 -0
  156. data/test/config/environments/test.rb +19 -0
  157. data/test/config/initializers/inflections.rb +14 -0
  158. data/test/config/routes.rb +61 -0
  159. data/test/db/migrate/001_create_posts.rb +12 -0
  160. data/test/db/migrate/002_create_products.rb +11 -0
  161. data/test/db/migrate/003_create_comments.rb +13 -0
  162. data/test/db/migrate/004_create_options.rb +13 -0
  163. data/test/db/migrate/005_create_photos.rb +11 -0
  164. data/test/db/migrate/006_create_tags.rb +17 -0
  165. data/test/db/migrate/007_create_somethings.rb +11 -0
  166. data/test/db/migrate/008_create_accounts.rb +11 -0
  167. data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  168. data/test/db/migrate/010_create_projects.rb +11 -0
  169. data/test/db/migrate/011_create_images.rb +12 -0
  170. data/test/db/migrate/012_create_users.rb +11 -0
  171. data/test/db/migrate/013_create_personnel.rb +11 -0
  172. data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  173. data/test/db/schema.rb +78 -0
  174. data/test/script/console +3 -0
  175. data/test/script/destroy +3 -0
  176. data/test/script/generate +3 -0
  177. data/test/script/server +3 -0
  178. data/test/test/fixtures/accounts.yml +7 -0
  179. data/test/test/fixtures/comments.yml +11 -0
  180. data/test/test/fixtures/images.yml +6 -0
  181. data/test/test/fixtures/options.yml +9 -0
  182. data/test/test/fixtures/personnel.yml +5 -0
  183. data/test/test/fixtures/photos.yml +9 -0
  184. data/test/test/fixtures/photos_tags.yml +3 -0
  185. data/test/test/fixtures/posts.yml +9 -0
  186. data/test/test/fixtures/products.yml +7 -0
  187. data/test/test/fixtures/projects.yml +7 -0
  188. data/test/test/fixtures/somethings.yml +7 -0
  189. data/test/test/fixtures/tags.yml +7 -0
  190. data/test/test/fixtures/users.yml +5 -0
  191. data/test/test/functional/cms/options_controller_test.rb +23 -0
  192. data/test/test/functional/cms/photos_controller_test.rb +43 -0
  193. data/test/test/functional/cms/products_controller_test.rb +23 -0
  194. data/test/test/functional/comments_controller_test.rb +19 -0
  195. data/test/test/functional/images_controller_test.rb +30 -0
  196. data/test/test/functional/people_controller_test.rb +27 -0
  197. data/test/test/functional/photos_controller_test.rb +123 -0
  198. data/test/test/functional/posts_controller_test.rb +27 -0
  199. data/test/test/functional/projects_controller_test.rb +21 -0
  200. data/test/test/functional/somethings_controller_test.rb +21 -0
  201. data/test/test/functional/tags_controller_test.rb +57 -0
  202. data/test/test/functional/users_controller_test.rb +17 -0
  203. data/test/test/test_helper.rb +13 -0
  204. data/test/test/unit/accessors_test.rb +110 -0
  205. data/test/test/unit/account_test.rb +7 -0
  206. data/test/test/unit/action_options_test.rb +109 -0
  207. data/test/test/unit/base_test.rb +11 -0
  208. data/test/test/unit/comment_test.rb +10 -0
  209. data/test/test/unit/failable_action_options_test.rb +77 -0
  210. data/test/test/unit/helpers/current_objects_test.rb +133 -0
  211. data/test/test/unit/helpers/internal_test.rb +106 -0
  212. data/test/test/unit/helpers/nested_test.rb +86 -0
  213. data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  214. data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  215. data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  216. data/test/test/unit/helpers/urls_test.rb +75 -0
  217. data/test/test/unit/helpers_test.rb +25 -0
  218. data/test/test/unit/image_test.rb +7 -0
  219. data/test/test/unit/option_test.rb +10 -0
  220. data/test/test/unit/photo_test.rb +10 -0
  221. data/test/test/unit/post_test.rb +10 -0
  222. data/test/test/unit/project_test.rb +10 -0
  223. data/test/test/unit/response_collector_test.rb +49 -0
  224. data/test/test/unit/something_test.rb +10 -0
  225. data/test/test/unit/tag_test.rb +10 -0
  226. data/test/test/unit/urligence_test.rb +203 -0
  227. metadata +379 -0
@@ -0,0 +1,27 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class PostsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @post = Post.find 1
6
+ end
7
+
8
+ should_be_restful do |resource|
9
+ resource.formats = [:html]
10
+
11
+ resource.actions = :all
12
+ end
13
+
14
+ context "on post to :create" do
15
+ setup do
16
+ post :create, :post => {}
17
+ end
18
+
19
+ should "name the post 'a great post'" do
20
+ assert_equal 'a great post', assigns(:post).title
21
+ end
22
+
23
+ should "give the post a body of '...'" do
24
+ assert_equal '...', assigns(:post).body
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class ProjectsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @project = projects :one
6
+ end
7
+
8
+ should_be_restful do |resource|
9
+ resource.formats = [:html]
10
+ end
11
+
12
+ context "on DELETE to :destroy that fails" do
13
+ setup do
14
+ Project.any_instance.stubs(:destroy).returns(false)
15
+ delete :destroy, :id => @project.to_param
16
+ end
17
+
18
+ should_respond_with :redirect
19
+ should_redirect_to "project_url(@project)"
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class SomethingsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @something = somethings :one
6
+ end
7
+
8
+ context "actions specified" do
9
+ [:create, :edit, :update, :destroy, :new].each do |action|
10
+ should "not respond to #{action}" do
11
+ assert !@controller.respond_to?(action)
12
+ end
13
+ end
14
+ end
15
+
16
+ should_be_restful do |resource|
17
+ resource.formats = [:html]
18
+
19
+ resource.actions = [:index, :show]
20
+ end
21
+ end
@@ -0,0 +1,57 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class TagsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @tag = Tag.find 1
6
+ end
7
+
8
+ context "with photo as parent" do
9
+ context "get to :index" do
10
+ setup do
11
+ get :index, :photo_id => 1
12
+ end
13
+
14
+ should_assign_to :products
15
+ should_render_template "index"
16
+ should_respond_with :success
17
+
18
+ should "respond with html" do
19
+ assert_equal 'text/html', @response.content_type
20
+ end
21
+ end
22
+
23
+ context "xhr to :index" do
24
+ setup do
25
+ xhr :get, :index, :photo_id => 1
26
+ end
27
+
28
+ should_assign_to :products
29
+ should_respond_with :success
30
+
31
+ should "respond with rjs" do
32
+ assert_equal 'text/javascript', @response.content_type
33
+ end
34
+ end
35
+
36
+ context "post to create" do
37
+ setup do
38
+ post :create, :photo_id => 1, :tag => {:name => "Hello!"}
39
+ end
40
+
41
+ should "add tag to photo" do
42
+ assert assigns(:photo).tags.include?(assigns(:tag)), "photo does not include new tag"
43
+ end
44
+ end
45
+ end
46
+
47
+ context "without photo as parent" do
48
+ should_be_restful do |resource|
49
+ resource.formats = [:html]
50
+ end
51
+
52
+ should "render text for a missing object" do
53
+ get :show, :id => 50000
54
+ assert @response.body.match(/not found/i), @response.body
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class UsersControllerTest < ActionController::TestCase
4
+ def setup
5
+ @dude = accounts :one
6
+ end
7
+
8
+ should_be_restful do |resource|
9
+ resource.formats = [:html]
10
+ resource.klass = Account
11
+ resource.object = :dude
12
+
13
+ resource.create.redirect = 'dude_url(@dude)'
14
+ resource.update.redirect = 'dude_url(@dude)'
15
+ resource.destroy.redirect = 'dudes_url'
16
+ end
17
+ 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