makandra_resource_controller 0.7.0

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 (251) hide show
  1. data/LICENSE +22 -0
  2. data/README.rdoc +343 -0
  3. data/TODO +0 -0
  4. data/VERSION.yml +5 -0
  5. data/generators/scaffold_resource/USAGE +29 -0
  6. data/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
  7. data/generators/scaffold_resource/templates/controller.rb +2 -0
  8. data/generators/scaffold_resource/templates/fixtures.yml +10 -0
  9. data/generators/scaffold_resource/templates/functional_test.rb +57 -0
  10. data/generators/scaffold_resource/templates/helper.rb +2 -0
  11. data/generators/scaffold_resource/templates/migration.rb +15 -0
  12. data/generators/scaffold_resource/templates/model.rb +2 -0
  13. data/generators/scaffold_resource/templates/old_migration.rb +13 -0
  14. data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
  15. data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
  16. data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
  17. data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
  18. data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
  19. data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
  20. data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
  21. data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
  22. data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
  23. data/generators/scaffold_resource/templates/unit_test.rb +7 -0
  24. data/generators/scaffold_resource/templates/view__form.erb +6 -0
  25. data/generators/scaffold_resource/templates/view__form.haml +5 -0
  26. data/generators/scaffold_resource/templates/view_edit.erb +16 -0
  27. data/generators/scaffold_resource/templates/view_edit.haml +11 -0
  28. data/generators/scaffold_resource/templates/view_index.erb +22 -0
  29. data/generators/scaffold_resource/templates/view_index.haml +19 -0
  30. data/generators/scaffold_resource/templates/view_new.erb +12 -0
  31. data/generators/scaffold_resource/templates/view_new.haml +9 -0
  32. data/generators/scaffold_resource/templates/view_show.erb +9 -0
  33. data/generators/scaffold_resource/templates/view_show.haml +9 -0
  34. data/lib/resource_controller.rb +37 -0
  35. data/lib/resource_controller/accessors.rb +77 -0
  36. data/lib/resource_controller/action_options.rb +40 -0
  37. data/lib/resource_controller/actions.rb +75 -0
  38. data/lib/resource_controller/base.rb +15 -0
  39. data/lib/resource_controller/class_methods.rb +25 -0
  40. data/lib/resource_controller/controller.rb +69 -0
  41. data/lib/resource_controller/failable_action_options.rb +25 -0
  42. data/lib/resource_controller/helpers.rb +34 -0
  43. data/lib/resource_controller/helpers/current_objects.rb +73 -0
  44. data/lib/resource_controller/helpers/internal.rb +80 -0
  45. data/lib/resource_controller/helpers/nested.rb +67 -0
  46. data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
  47. data/lib/resource_controller/helpers/urls.rb +132 -0
  48. data/lib/resource_controller/response_collector.rb +27 -0
  49. data/lib/resource_controller/singleton.rb +15 -0
  50. data/lib/urligence.rb +52 -0
  51. data/rails/init.rb +6 -0
  52. data/test/Gemfile +13 -0
  53. data/test/Gemfile.lock +95 -0
  54. data/test/Rakefile +10 -0
  55. data/test/app/controllers/accounts_controller.rb +6 -0
  56. data/test/app/controllers/application_controller.rb +5 -0
  57. data/test/app/controllers/cms/options_controller.rb +3 -0
  58. data/test/app/controllers/cms/personnel_controller.rb +2 -0
  59. data/test/app/controllers/cms/photos_controller.rb +6 -0
  60. data/test/app/controllers/cms/products_controller.rb +3 -0
  61. data/test/app/controllers/comments_controller.rb +3 -0
  62. data/test/app/controllers/images_controller.rb +4 -0
  63. data/test/app/controllers/options_controller.rb +8 -0
  64. data/test/app/controllers/people_controller.rb +9 -0
  65. data/test/app/controllers/photos_controller.rb +12 -0
  66. data/test/app/controllers/posts_controller.rb +10 -0
  67. data/test/app/controllers/projects_controller.rb +3 -0
  68. data/test/app/controllers/somethings_controller.rb +3 -0
  69. data/test/app/controllers/tags_controller.rb +13 -0
  70. data/test/app/controllers/users_controller.rb +12 -0
  71. data/test/app/helpers/accounts_helper.rb +2 -0
  72. data/test/app/helpers/application_helper.rb +3 -0
  73. data/test/app/helpers/cms/products_helper.rb +2 -0
  74. data/test/app/helpers/comments_helper.rb +2 -0
  75. data/test/app/helpers/images_helper.rb +2 -0
  76. data/test/app/helpers/options_helper.rb +2 -0
  77. data/test/app/helpers/people_helper.rb +2 -0
  78. data/test/app/helpers/photos_helper.rb +2 -0
  79. data/test/app/helpers/posts_helper.rb +2 -0
  80. data/test/app/helpers/projects_helper.rb +2 -0
  81. data/test/app/helpers/somethings_helper.rb +2 -0
  82. data/test/app/helpers/tags_helper.rb +2 -0
  83. data/test/app/helpers/users_helper.rb +2 -0
  84. data/test/app/models/account.rb +4 -0
  85. data/test/app/models/comment.rb +3 -0
  86. data/test/app/models/image.rb +3 -0
  87. data/test/app/models/option.rb +3 -0
  88. data/test/app/models/personnel.rb +3 -0
  89. data/test/app/models/photo.rb +5 -0
  90. data/test/app/models/post.rb +3 -0
  91. data/test/app/models/product.rb +3 -0
  92. data/test/app/models/project.rb +2 -0
  93. data/test/app/models/something.rb +2 -0
  94. data/test/app/models/tag.rb +3 -0
  95. data/test/app/models/user.rb +3 -0
  96. data/test/app/views/accounts/_form.html.erb +4 -0
  97. data/test/app/views/accounts/edit.html.erb +14 -0
  98. data/test/app/views/accounts/new.html.erb +12 -0
  99. data/test/app/views/accounts/show.html.erb +5 -0
  100. data/test/app/views/cms/options/edit.rhtml +17 -0
  101. data/test/app/views/cms/options/index.rhtml +20 -0
  102. data/test/app/views/cms/options/new.rhtml +16 -0
  103. data/test/app/views/cms/options/show.rhtml +8 -0
  104. data/test/app/views/cms/photos/edit.rhtml +17 -0
  105. data/test/app/views/cms/photos/index.rhtml +20 -0
  106. data/test/app/views/cms/photos/new.rhtml +16 -0
  107. data/test/app/views/cms/photos/show.rhtml +8 -0
  108. data/test/app/views/cms/products/edit.rhtml +17 -0
  109. data/test/app/views/cms/products/index.rhtml +20 -0
  110. data/test/app/views/cms/products/new.rhtml +16 -0
  111. data/test/app/views/cms/products/show.rhtml +8 -0
  112. data/test/app/views/comments/edit.rhtml +27 -0
  113. data/test/app/views/comments/index.rhtml +24 -0
  114. data/test/app/views/comments/new.rhtml +26 -0
  115. data/test/app/views/comments/show.rhtml +18 -0
  116. data/test/app/views/images/_form.html.erb +4 -0
  117. data/test/app/views/images/edit.html.erb +14 -0
  118. data/test/app/views/images/new.html.erb +12 -0
  119. data/test/app/views/layouts/application.rhtml +17 -0
  120. data/test/app/views/layouts/comments.rhtml +17 -0
  121. data/test/app/views/layouts/options.rhtml +17 -0
  122. data/test/app/views/layouts/people.rhtml +17 -0
  123. data/test/app/views/layouts/photos.rhtml +17 -0
  124. data/test/app/views/layouts/projects.rhtml +17 -0
  125. data/test/app/views/layouts/somethings.rhtml +17 -0
  126. data/test/app/views/layouts/tags.rhtml +17 -0
  127. data/test/app/views/options/_form.html.erb +8 -0
  128. data/test/app/views/options/edit.html.erb +16 -0
  129. data/test/app/views/options/index.html.erb +21 -0
  130. data/test/app/views/options/new.html.erb +12 -0
  131. data/test/app/views/options/show.html.erb +10 -0
  132. data/test/app/views/people/edit.rhtml +17 -0
  133. data/test/app/views/people/index.rhtml +20 -0
  134. data/test/app/views/people/new.rhtml +16 -0
  135. data/test/app/views/people/show.rhtml +8 -0
  136. data/test/app/views/photos/edit.rhtml +17 -0
  137. data/test/app/views/photos/index.rhtml +20 -0
  138. data/test/app/views/photos/new.rhtml +16 -0
  139. data/test/app/views/photos/show.rhtml +8 -0
  140. data/test/app/views/posts/edit.rhtml +22 -0
  141. data/test/app/views/posts/index.rhtml +22 -0
  142. data/test/app/views/posts/new.rhtml +21 -0
  143. data/test/app/views/posts/show.rhtml +13 -0
  144. data/test/app/views/projects/edit.rhtml +17 -0
  145. data/test/app/views/projects/index.rhtml +20 -0
  146. data/test/app/views/projects/new.rhtml +16 -0
  147. data/test/app/views/projects/show.rhtml +8 -0
  148. data/test/app/views/somethings/edit.rhtml +17 -0
  149. data/test/app/views/somethings/index.rhtml +20 -0
  150. data/test/app/views/somethings/new.rhtml +16 -0
  151. data/test/app/views/somethings/show.rhtml +8 -0
  152. data/test/app/views/tags/edit.rhtml +17 -0
  153. data/test/app/views/tags/index.rhtml +20 -0
  154. data/test/app/views/tags/index.rjs +0 -0
  155. data/test/app/views/tags/new.rhtml +16 -0
  156. data/test/app/views/tags/show.rhtml +8 -0
  157. data/test/app/views/users/edit.rhtml +17 -0
  158. data/test/app/views/users/index.rhtml +20 -0
  159. data/test/app/views/users/new.rhtml +16 -0
  160. data/test/app/views/users/show.rhtml +8 -0
  161. data/test/config.ru +4 -0
  162. data/test/config/application.rb +41 -0
  163. data/test/config/boot.rb +6 -0
  164. data/test/config/database.yml +9 -0
  165. data/test/config/environment.rb +5 -0
  166. data/test/config/environments/development.rb +19 -0
  167. data/test/config/environments/test.rb +34 -0
  168. data/test/config/initializers/inflections.rb +14 -0
  169. data/test/config/initializers/secret_token.rb +7 -0
  170. data/test/config/initializers/session_store.rb +8 -0
  171. data/test/config/routes.rb +35 -0
  172. data/test/db/migrate/001_create_posts.rb +12 -0
  173. data/test/db/migrate/002_create_products.rb +11 -0
  174. data/test/db/migrate/003_create_comments.rb +13 -0
  175. data/test/db/migrate/004_create_options.rb +13 -0
  176. data/test/db/migrate/005_create_photos.rb +11 -0
  177. data/test/db/migrate/006_create_tags.rb +17 -0
  178. data/test/db/migrate/007_create_somethings.rb +11 -0
  179. data/test/db/migrate/008_create_accounts.rb +11 -0
  180. data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
  181. data/test/db/migrate/010_create_projects.rb +11 -0
  182. data/test/db/migrate/011_create_images.rb +12 -0
  183. data/test/db/migrate/012_create_users.rb +11 -0
  184. data/test/db/migrate/013_create_personnel.rb +11 -0
  185. data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
  186. data/test/db/schema.rb +79 -0
  187. data/test/script/console +3 -0
  188. data/test/script/destroy +3 -0
  189. data/test/script/generate +3 -0
  190. data/test/script/rails +6 -0
  191. data/test/script/server +3 -0
  192. data/test/test/fixtures/accounts.yml +7 -0
  193. data/test/test/fixtures/comments.yml +11 -0
  194. data/test/test/fixtures/images.yml +6 -0
  195. data/test/test/fixtures/options.yml +9 -0
  196. data/test/test/fixtures/personnel.yml +5 -0
  197. data/test/test/fixtures/photos.yml +9 -0
  198. data/test/test/fixtures/photos_tags.yml +3 -0
  199. data/test/test/fixtures/posts.yml +9 -0
  200. data/test/test/fixtures/products.yml +7 -0
  201. data/test/test/fixtures/projects.yml +7 -0
  202. data/test/test/fixtures/somethings.yml +7 -0
  203. data/test/test/fixtures/tags.yml +7 -0
  204. data/test/test/fixtures/users.yml +5 -0
  205. data/test/test/functional/cms/options_controller_test.rb +140 -0
  206. data/test/test/functional/cms/photos_controller_test.rb +37 -0
  207. data/test/test/functional/cms/products_controller_test.rb +37 -0
  208. data/test/test/functional/comments_controller_test.rb +140 -0
  209. data/test/test/functional/images_controller_test.rb +30 -0
  210. data/test/test/functional/people_controller_test.rb +147 -0
  211. data/test/test/functional/photos_controller_test.rb +199 -0
  212. data/test/test/functional/posts_controller_test.rb +21 -0
  213. data/test/test/functional/projects_controller_test.rb +137 -0
  214. data/test/test/functional/somethings_controller_test.rb +15 -0
  215. data/test/test/functional/tags_controller_test.rb +53 -0
  216. data/test/test/functional/users_controller_test.rb +137 -0
  217. data/test/test/test_helper.rb +14 -0
  218. data/test/test/unit/accessors_test.rb +110 -0
  219. data/test/test/unit/account_test.rb +7 -0
  220. data/test/test/unit/action_options_test.rb +109 -0
  221. data/test/test/unit/base_test.rb +11 -0
  222. data/test/test/unit/comment_test.rb +10 -0
  223. data/test/test/unit/failable_action_options_test.rb +77 -0
  224. data/test/test/unit/helpers/current_objects_test.rb +133 -0
  225. data/test/test/unit/helpers/internal_test.rb +106 -0
  226. data/test/test/unit/helpers/nested_test.rb +86 -0
  227. data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
  228. data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
  229. data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
  230. data/test/test/unit/helpers/urls_test.rb +75 -0
  231. data/test/test/unit/helpers_test.rb +25 -0
  232. data/test/test/unit/image_test.rb +7 -0
  233. data/test/test/unit/option_test.rb +10 -0
  234. data/test/test/unit/photo_test.rb +10 -0
  235. data/test/test/unit/post_test.rb +10 -0
  236. data/test/test/unit/project_test.rb +10 -0
  237. data/test/test/unit/response_collector_test.rb +49 -0
  238. data/test/test/unit/something_test.rb +10 -0
  239. data/test/test/unit/tag_test.rb +10 -0
  240. data/test/test/unit/urligence_test.rb +205 -0
  241. data/test/vendor/plugins/d +1 -0
  242. data/test/vendor/plugins/dynamic_form/MIT-LICENSE +20 -0
  243. data/test/vendor/plugins/dynamic_form/README +13 -0
  244. data/test/vendor/plugins/dynamic_form/Rakefile +10 -0
  245. data/test/vendor/plugins/dynamic_form/init.rb +5 -0
  246. data/test/vendor/plugins/dynamic_form/lib/action_view/helpers/dynamic_form.rb +300 -0
  247. data/test/vendor/plugins/dynamic_form/lib/action_view/locale/en.yml +8 -0
  248. data/test/vendor/plugins/dynamic_form/test/dynamic_form_i18n_test.rb +42 -0
  249. data/test/vendor/plugins/dynamic_form/test/dynamic_form_test.rb +370 -0
  250. data/test/vendor/plugins/dynamic_form/test/test_helper.rb +9 -0
  251. metadata +427 -0
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ name: MyString
5
+ two:
6
+ id: 2
7
+ name: MyString
@@ -0,0 +1,11 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ post_id: 1
5
+ author: MyString
6
+ body: MyText
7
+ two:
8
+ id: 2
9
+ post_id: 1
10
+ author: MyString
11
+ body: MyText
@@ -0,0 +1,6 @@
1
+ one:
2
+ id: 1
3
+ user_id: 1
4
+ two:
5
+ id: 2
6
+ user_id: 1
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ product_id: 1
5
+ title: MyString
6
+ two:
7
+ id: 2
8
+ product_id: 2
9
+ title: MyString
@@ -0,0 +1,5 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ two:
5
+ id: 2
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ title: MyString
5
+ account_id: 1
6
+ two:
7
+ id: 2
8
+ title: MyString
9
+ account_id: 2
@@ -0,0 +1,3 @@
1
+ one_one:
2
+ photo_id: 1
3
+ tag_id: 1
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ title: MyString
5
+ body: MyText
6
+ two:
7
+ id: 2
8
+ title: MyString
9
+ body: MyText
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ name: MyString
5
+ two:
6
+ id: 2
7
+ name: MyString
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ title: MyString
5
+ two:
6
+ id: 2
7
+ title: MyString
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ title: MyString
5
+ two:
6
+ id: 2
7
+ title: MyString
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ name: MyString
5
+ two:
6
+ id: 2
7
+ name: MyString
@@ -0,0 +1,5 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ one:
3
+ id: 1
4
+ two:
5
+ id: 2
@@ -0,0 +1,140 @@
1
+ require 'test_helper'
2
+
3
+ class Cms::OptionsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @product = products :one
6
+ @option = options :one
7
+ end
8
+
9
+ context "on GET to :index" do
10
+ setup do
11
+ get :index, :product_id => 1
12
+ end
13
+
14
+ should assign_to(:options).with_kind_of(Array)
15
+ should assign_to(:product).with_kind_of(Product)
16
+ should respond_with :success
17
+ should render_with_layout
18
+ should render_template :index
19
+ should_not set_the_flash
20
+ end
21
+
22
+ context "on GET to :show" do
23
+ setup do
24
+ get :show, :id => 1, :product_id => 1
25
+ end
26
+
27
+ should assign_to(:option).with_kind_of(Option)
28
+ should assign_to(:product).with_kind_of(Product)
29
+ should respond_with(:success)
30
+ should render_template(:show)
31
+ should_not set_the_flash
32
+ end
33
+
34
+ context "on GET to :new" do
35
+ setup do
36
+ get :new, :product_id => 1
37
+ end
38
+
39
+ should assign_to(:option).with_kind_of(Option)
40
+ should assign_to(:product).with_kind_of(Product)
41
+ should respond_with :success
42
+ should render_with_layout :application
43
+ should render_template :new
44
+ should_not set_the_flash
45
+ end
46
+
47
+ context "on POST to :create" do
48
+ context "that succeeds" do
49
+ setup do
50
+ post :create, :product_id => @product.id, :option => {:title => "My option"}, :product_id => 1
51
+ end
52
+
53
+ should assign_to(:option).with_kind_of(Option)
54
+ should redirect_to("product options index") { cms_product_option_url(@product, assigns(:option)) }
55
+ should set_the_flash.to "Successfully created!"
56
+
57
+ should "create the record" do
58
+ assert Option.find_by_title("My option")
59
+ end
60
+ end
61
+
62
+ context "that fails" do
63
+ setup do
64
+ Option.any_instance.stubs(:save).returns(false)
65
+ post :create, :product_id => @product.id, :option => {}
66
+ end
67
+
68
+ should assign_to(:option).with_kind_of(Option)
69
+ should respond_with :success
70
+ should render_with_layout :application
71
+ should render_template :new
72
+ should_not set_the_flash
73
+ end
74
+ end
75
+
76
+ context "on GET to :edit" do
77
+ setup do
78
+ get :edit, :product_id => @product.id, :id => @option.id
79
+ end
80
+
81
+ should assign_to(:option).with(@option)
82
+ should respond_with :success
83
+ should render_with_layout :application
84
+ should render_template :edit
85
+ should_not set_the_flash
86
+ end
87
+
88
+ context "on PUT to :update" do
89
+ context "that succeeds" do
90
+ setup do
91
+ put :update, :product_id => @product.id, :id => @option.id, :option => {:title => 'My new option'}
92
+ end
93
+
94
+ should assign_to(:option){ @option }
95
+ should redirect_to("option page") { cms_product_option_path(assigns(:option)) }
96
+ should set_the_flash.to "Successfully updated!"
97
+
98
+ should "update the record" do
99
+ @option.reload
100
+ assert_equal 'My new option', @option.title
101
+ end
102
+ end
103
+
104
+ context "that fails" do
105
+ setup do
106
+ Option.any_instance.stubs(:update_attributes).returns(false)
107
+ put :update, :product_id => @product.id, :id => @option.id, :option => {:title => 'My new option'}
108
+ end
109
+
110
+ should assign_to(:object).with_kind_of(Option)
111
+ should assign_to(:option).with_kind_of(Option)
112
+ should respond_with :success
113
+ should render_with_layout :application
114
+ should render_template :edit
115
+ should_not set_the_flash
116
+ end
117
+ end
118
+
119
+ context "on DELETE to :destroy" do
120
+ context "that succeeds" do
121
+ setup do
122
+ delete :destroy, :product_id => @product.id, :id => @option.id
123
+ end
124
+
125
+ should assign_to(:option){ @option }
126
+ should redirect_to("options index"){ cms_product_options_url }
127
+ should set_the_flash.to "Successfully removed!"
128
+ end
129
+
130
+ context "that fails" do
131
+ setup do
132
+ Option.any_instance.stubs(:destroy).returns(false)
133
+ delete :destroy, :product_id => @product.id, :id => @option.to_param
134
+ end
135
+
136
+ should respond_with(:redirect)
137
+ should redirect_to("option url") { cms_product_option_url @option }
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class Cms::PhotosControllerTest < ActionController::TestCase
4
+ def setup
5
+ @person = personnel :one
6
+ @photo = photos :one
7
+ end
8
+
9
+ context "with personnel as parent" do
10
+ context "on get to :index" do
11
+ setup do
12
+ get :index, :personnel_id => 1
13
+ end
14
+
15
+ should respond_with :success
16
+ should render_template "index"
17
+ should assign_to :photos
18
+ should assign_to :personnel
19
+ should "scope photos to personnel" do
20
+ assert assigns(:photos).all? { |photo| photo.personnel.id == 1 }
21
+ end
22
+ end
23
+
24
+ context "on post to :create" do
25
+ setup do
26
+ post :create, :personnel_id => 1, :photo => {}
27
+ end
28
+
29
+ should redirect_to('cms_personnel_photo_path') { cms_personnel_photo_path(@person, assigns(:photo)) }
30
+ should assign_to :photo
31
+ should assign_to :personnel
32
+ should "scope photo to personel" do
33
+ assert personnel(:one), assigns(:photo).personnel
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class Cms::ProductsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @product = products :one
6
+ end
7
+
8
+ context "on POST to :create" do
9
+ context "that succeeds" do
10
+ setup do
11
+ post :create, :product => {:name => "My Product"}
12
+ end
13
+
14
+ should assign_to(:product).with_kind_of(Product)
15
+ should redirect_to("products page") { cms_product_url(assigns(:product)) }
16
+ should set_the_flash.to "something"
17
+
18
+ should "create the record" do
19
+ assert Product.find_by_name("My Product")
20
+ end
21
+ end
22
+
23
+ context "that fails" do
24
+ setup do
25
+ Product.any_instance.stubs(:save).returns(false)
26
+ post :create, :product => {}
27
+ end
28
+
29
+ should assign_to(:product).with_kind_of(Product)
30
+ should respond_with :success
31
+ should render_with_layout :application
32
+ should render_template :new
33
+ should_not set_the_flash
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,140 @@
1
+ require 'test_helper'
2
+
3
+ class CommentsControllerTest < ActionController::TestCase
4
+ def setup
5
+ @post = posts :one
6
+ @comment = Comment.find 1
7
+ end
8
+
9
+ context "on GET to :index" do
10
+ setup do
11
+ get :index, :post_id => 1
12
+ end
13
+
14
+ should assign_to(:comments).with_kind_of(Array)
15
+ should assign_to(:post).with_kind_of(Post)
16
+ should respond_with :success
17
+ should render_with_layout
18
+ should render_template :index
19
+ should_not set_the_flash
20
+ end
21
+
22
+ context "on GET to :show" do
23
+ setup do
24
+ get :show, :id => 1, :post_id => 1
25
+ end
26
+
27
+ should assign_to(:comment).with_kind_of(Comment)
28
+ should assign_to(:post).with_kind_of(Post)
29
+ should respond_with(:success)
30
+ should render_template(:show)
31
+ should_not set_the_flash
32
+ end
33
+
34
+ context "on GET to :new" do
35
+ setup do
36
+ get :new, :post_id => 1
37
+ end
38
+
39
+ should assign_to(:comment).with_kind_of(Comment)
40
+ should assign_to(:post).with_kind_of(Post)
41
+ should respond_with :success
42
+ should render_with_layout :comments
43
+ should render_template :new
44
+ should_not set_the_flash
45
+ end
46
+
47
+ context "on POST to :create" do
48
+ context "that succeeds" do
49
+ setup do
50
+ post :create, :comment => {:body => "My comment", :author => "Somebody"}, :post_id => 1
51
+ end
52
+
53
+ should assign_to(:comment).with_kind_of(Comment)
54
+ should redirect_to("post comments index") { post_comment_url(@post, assigns(:comment)) }
55
+ should set_the_flash.to "Successfully created!"
56
+
57
+ should "create the record" do
58
+ assert Comment.find_by_body("My comment")
59
+ end
60
+ end
61
+
62
+ context "that fails" do
63
+ setup do
64
+ Comment.any_instance.stubs(:save).returns(false)
65
+ post :create, :comment => {}
66
+ end
67
+
68
+ should assign_to(:comment).with_kind_of(Comment)
69
+ should respond_with :success
70
+ should render_with_layout :comments
71
+ should render_template :new
72
+ should_not set_the_flash
73
+ end
74
+ end
75
+
76
+ context "on GET to :edit" do
77
+ setup do
78
+ get :edit, :id => @comment.id
79
+ end
80
+
81
+ should assign_to(:comment).with(@comment)
82
+ should respond_with :success
83
+ should render_with_layout :comments
84
+ should render_template :edit
85
+ should_not set_the_flash
86
+ end
87
+
88
+ context "on PUT to :update" do
89
+ context "that succeeds" do
90
+ setup do
91
+ put :update, :id => @comment.id, :comment => {:body => 'My new comment'}
92
+ end
93
+
94
+ should assign_to(:comment){ @comment }
95
+ should redirect_to("comment page") { comment_path(assigns(:comment)) }
96
+ should set_the_flash.to "Successfully updated!"
97
+
98
+ should "update the record" do
99
+ @comment.reload
100
+ assert_equal 'My new comment', @comment.body
101
+ end
102
+ end
103
+
104
+ context "that fails" do
105
+ setup do
106
+ Comment.any_instance.stubs(:update_attributes).returns(false)
107
+ put :update, :id => @comment.id, :comment => {:body => 'My new comment'}
108
+ end
109
+
110
+ should assign_to(:object).with_kind_of(Comment)
111
+ should assign_to(:comment).with_kind_of(Comment)
112
+ should respond_with :success
113
+ should render_with_layout :comments
114
+ should render_template :edit
115
+ should_not set_the_flash
116
+ end
117
+ end
118
+
119
+ context "on DELETE to :destroy" do
120
+ context "that succeeds" do
121
+ setup do
122
+ delete :destroy, :id => @comment.id
123
+ end
124
+
125
+ should assign_to(:comment){ @comment }
126
+ should redirect_to("comments index"){ comments_path }
127
+ should set_the_flash.to "Successfully removed!"
128
+ end
129
+
130
+ context "that fails" do
131
+ setup do
132
+ Comment.any_instance.stubs(:destroy).returns(false)
133
+ delete :destroy, :id => @comment.to_param
134
+ end
135
+
136
+ should respond_with(:redirect)
137
+ should redirect_to("comment url") { comment_url @comment }
138
+ end
139
+ end
140
+ end