/test/functional/admin/cf_forums_controller_test.rb

http://github.com/ckruse/cforum · Ruby · 331 lines · 251 code · 78 blank · 2 comment · 0 complexity · 3242dd739c53aae4468fda0440d3e90b MD5 · raw file

  1. # -*- coding: utf-8 -*-
  2. require 'test_helper'
  3. class Admin::CfForumsControllerTest < ActionController::TestCase
  4. test "index: should not answer because of anonymous" do
  5. assert_raise CForum::ForbiddenException do
  6. get :index
  7. end
  8. end
  9. test "index: should not answer because of not an admin" do
  10. usr = FactoryGirl.create(:cf_user, admin: false)
  11. sign_in usr
  12. assert_raise CForum::ForbiddenException do
  13. get :index
  14. end
  15. end
  16. test "index: should answer with empty list" do
  17. usr = FactoryGirl.create(:cf_user, admin: true)
  18. sign_in usr
  19. get :index
  20. assert_not_nil assigns(:forums)
  21. assert_blank assigns(:forums)
  22. assert_response :success
  23. end
  24. test "index: should answer with non-empty list" do
  25. forum = FactoryGirl.create(:cf_write_forum)
  26. forum1 = FactoryGirl.create(:cf_forum)
  27. usr = FactoryGirl.create(:cf_user, admin: true)
  28. sign_in usr
  29. get :index
  30. assert_not_nil assigns(:forums)
  31. assert_equal 2, assigns(:forums).length
  32. assert_response :success
  33. end
  34. test "edit: should not show forum because of anonymous" do
  35. forum = FactoryGirl.create(:cf_forum)
  36. assert_raise CForum::ForbiddenException do
  37. get :edit, {id: forum.forum_id}
  38. end
  39. end
  40. test "edit: should not answer because of not an admin" do
  41. forum = FactoryGirl.create(:cf_forum)
  42. usr = FactoryGirl.create(:cf_user, admin: false)
  43. sign_in usr
  44. assert_raise CForum::ForbiddenException do
  45. get :edit, {id: forum.forum_id}
  46. end
  47. end
  48. test "edit: should answer" do
  49. forum = FactoryGirl.create(:cf_forum)
  50. usr = FactoryGirl.create(:cf_user, admin: true)
  51. sign_in usr
  52. get :edit, {id: forum.forum_id}
  53. assert_not_nil assigns(:cf_forum)
  54. assert_response :success
  55. end
  56. test "edit: should not edit non-existant" do
  57. usr = FactoryGirl.create(:cf_user, admin: true)
  58. sign_in usr
  59. assert_raise ActiveRecord::RecordNotFound do
  60. get :edit, {id: 3324}
  61. end
  62. end
  63. test "new: should not show forum because of anonymous" do
  64. assert_raise CForum::ForbiddenException do
  65. get :new
  66. end
  67. end
  68. test "new: should not answer because of not an admin" do
  69. usr = FactoryGirl.create(:cf_user, admin: false)
  70. sign_in usr
  71. assert_raise CForum::ForbiddenException do
  72. get :new
  73. end
  74. end
  75. test "new: should answer" do
  76. usr = FactoryGirl.create(:cf_user, admin: true)
  77. sign_in usr
  78. get :new
  79. assert_not_nil assigns(:cf_forum)
  80. assert_response :success
  81. end
  82. test "create: should not answer because of anonymous" do
  83. assert_raise CForum::ForbiddenException do
  84. post :create, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  85. end
  86. end
  87. test "create: should not answer because of not an admin" do
  88. usr = FactoryGirl.create(:cf_user, admin: false)
  89. sign_in usr
  90. assert_raise CForum::ForbiddenException do
  91. post :create, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  92. end
  93. end
  94. test "create: should not answer because of invalid" do
  95. usr = FactoryGirl.create(:cf_user, admin: true)
  96. sign_in usr
  97. assert_no_difference 'CfForum.count' do
  98. post :create, cf_forum: {name: '', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  99. end
  100. assert_not_nil assigns(:cf_forum)
  101. assert !assigns(:cf_forum).valid?
  102. assert_response :success
  103. end
  104. test "create: should create forum" do
  105. usr = FactoryGirl.create(:cf_user, admin: true)
  106. sign_in usr
  107. assert_difference 'CfForum.count' do
  108. post :create, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  109. end
  110. assert_not_nil assigns(:cf_forum)
  111. assert_redirected_to edit_admin_forum_url(assigns(:cf_forum).forum_id)
  112. end
  113. test "update: should not answer because of anonymous" do
  114. f = FactoryGirl.create(:cf_forum)
  115. assert_raise CForum::ForbiddenException do
  116. post :update, id: f.forum_id, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  117. end
  118. end
  119. test "update: should not answer because of not an admin" do
  120. f = FactoryGirl.create(:cf_forum)
  121. usr = FactoryGirl.create(:cf_user, admin: false)
  122. sign_in usr
  123. assert_raise CForum::ForbiddenException do
  124. post :update, id: f.forum_id, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  125. end
  126. end
  127. test "update: should not answer because of invalid" do
  128. f = FactoryGirl.create(:cf_forum)
  129. usr = FactoryGirl.create(:cf_user, admin: true)
  130. sign_in usr
  131. post :update, id: f.forum_id, cf_forum: {name: '', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  132. f1 = CfForum.find f.forum_id
  133. assert_not_nil assigns(:cf_forum)
  134. assert !assigns(:cf_forum).valid?
  135. assert_equal f.name, f1.name
  136. assert_response :success
  137. end
  138. test "update: should create forum" do
  139. f = FactoryGirl.create(:cf_forum)
  140. usr = FactoryGirl.create(:cf_user, admin: true)
  141. sign_in usr
  142. post :update, id: f.forum_id, cf_forum: {name: 'Test', short_name: 'Test', slug: 'test', :public => false, description: 'lala'}
  143. f1 = CfForum.find f.forum_id
  144. assert_not_nil assigns(:cf_forum)
  145. assert_not_equal f.attributes, f1.attributes
  146. assert_redirected_to edit_admin_forum_url(assigns(:cf_forum).forum_id)
  147. end
  148. test "destroy: should not answer because of anonymous" do
  149. f = FactoryGirl.create(:cf_forum)
  150. assert_raise CForum::ForbiddenException do
  151. delete :destroy, id: f.forum_id
  152. end
  153. end
  154. test "destroy: should not answer because of not an admin" do
  155. f = FactoryGirl.create(:cf_forum)
  156. usr = FactoryGirl.create(:cf_user, admin: false)
  157. sign_in usr
  158. assert_raise CForum::ForbiddenException do
  159. delete :destroy, id: f.forum_id
  160. end
  161. end
  162. test "destroy: should not answer because of non-existant" do
  163. usr = FactoryGirl.create(:cf_user, admin: true)
  164. sign_in usr
  165. assert_raise ActiveRecord::RecordNotFound do
  166. delete :destroy, id: 33312
  167. end
  168. end
  169. test "destroy: should destroy forum" do
  170. f = FactoryGirl.create(:cf_forum)
  171. usr = FactoryGirl.create(:cf_user, admin: true)
  172. sign_in usr
  173. assert_difference 'CfForum.count', -1 do
  174. delete :destroy, id: f.forum_id
  175. end
  176. assert_not_nil assigns(:cf_forum)
  177. assert_redirected_to admin_forums_url()
  178. end
  179. test "merge: should not show forum because of anonymous" do
  180. f1 = FactoryGirl.create(:cf_forum)
  181. f2 = FactoryGirl.create(:cf_forum)
  182. assert_raise CForum::ForbiddenException do
  183. get :merge, id: f1.forum_id
  184. end
  185. end
  186. test "merge: should not answer because of not an admin" do
  187. f1 = FactoryGirl.create(:cf_forum)
  188. f2 = FactoryGirl.create(:cf_forum)
  189. usr = FactoryGirl.create(:cf_user, admin: false)
  190. sign_in usr
  191. assert_raise CForum::ForbiddenException do
  192. get :merge, id: f1.forum_id
  193. end
  194. end
  195. test "merge: should answer" do
  196. f1 = FactoryGirl.create(:cf_forum)
  197. f2 = FactoryGirl.create(:cf_forum)
  198. usr = FactoryGirl.create(:cf_user, admin: true)
  199. sign_in usr
  200. get :merge, id: f1.forum_id
  201. assert_not_nil assigns(:forums)
  202. assert_response :success
  203. end
  204. test "do_merge: should not show forum because of anonymous" do
  205. f1 = FactoryGirl.create(:cf_forum)
  206. f2 = FactoryGirl.create(:cf_forum)
  207. assert_raise CForum::ForbiddenException do
  208. post :do_merge, id: f1.forum_id, merge_with: f2.forum_id
  209. end
  210. end
  211. test "do_merge: should not answer because of not an admin" do
  212. f1 = FactoryGirl.create(:cf_forum)
  213. f2 = FactoryGirl.create(:cf_forum)
  214. usr = FactoryGirl.create(:cf_user, admin: false)
  215. sign_in usr
  216. assert_raise CForum::ForbiddenException do
  217. post :do_merge, id: f1.forum_id, merge_with: f2.forum_id
  218. end
  219. end
  220. test "do_merge: should answer" do
  221. f1 = FactoryGirl.create(:cf_forum)
  222. f2 = FactoryGirl.create(:cf_forum)
  223. usr = FactoryGirl.create(:cf_user, admin: true)
  224. sign_in usr
  225. assert_difference 'CfForum.count', -1 do
  226. post :do_merge, id: f1.forum_id, merge_with: f2.forum_id
  227. end
  228. assert_not_nil assigns(:cf_forum)
  229. assert_redirected_to admin_forums_url
  230. end
  231. test "do_merge: should not merge because of invalid merge_with param" do
  232. f1 = FactoryGirl.create(:cf_forum)
  233. usr = FactoryGirl.create(:cf_user, admin: true)
  234. sign_in usr
  235. assert_no_difference 'CfForum.count' do
  236. post :do_merge, id: f1.forum_id, merge_with: 33333
  237. end
  238. assert_not_nil assigns(:cf_forum)
  239. assert_not_nil assigns(:merge_with)
  240. assert_response :success
  241. end
  242. test "do_merge: should not merge because of missing merge_with param" do
  243. f1 = FactoryGirl.create(:cf_forum)
  244. usr = FactoryGirl.create(:cf_user, admin: true)
  245. sign_in usr
  246. assert_no_difference 'CfForum.count' do
  247. post :do_merge, id: f1.forum_id
  248. end
  249. assert_not_nil assigns(:cf_forum)
  250. assert_response :success
  251. end
  252. end
  253. # eof