PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/test/functional/posts_controller_test.rb

https://github.com/newrooky/lftwb
Ruby | 235 lines | 17 code | 4 blank | 214 comment | 0 complexity | 8c44ff864cdf46420f59668acb07d028 MD5 | raw file
Possible License(s): MIT
  1. require File.dirname(__FILE__) + '/../test_helper'
  2. class PostsControllerTest < Test::Unit::TestCase
  3. def setup
  4. @controller = PostsController.new
  5. @request = ActionController::TestRequest.new
  6. @response = ActionController::TestResponse.new
  7. end
  8. # TODO get all the post tests working
  9. # should "create reply" do
  10. # counts = lambda { [Post.count, forums(:rails).posts_count, users(:aaron).posts_count, topics(:pdi).posts_count] }
  11. # equal = lambda { [forums(:rails).topics_count] }
  12. # old_counts = counts.call
  13. # old_equal = equal.call
  14. #
  15. # login_as :aaron
  16. # post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :post => { :body => 'blah' }
  17. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => topics(:pdi).id, :anchor => assigns(:post).dom_id, :page => '1', :per_page => '1')
  18. # assert_equal topics(:pdi), assigns(:topic)
  19. # [forums(:rails), users(:aaron), topics(:pdi)].each &:reload
  20. #
  21. # assert_equal old_counts.collect { |n| n + 1}, counts.call
  22. # assert_equal old_equal, equal.call
  23. # end
  24. #
  25. # should "update topic replied at upon replying" do
  26. # old=topics(:pdi).replied_at
  27. # login_as :aaron
  28. # post :create, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :post => { :body => 'blah' }
  29. # assert_not_equal(old, topics(:pdi).reload.replied_at)
  30. # assert old < topics(:pdi).reload.replied_at
  31. # end
  32. #
  33. # should "reply with no body" do
  34. # assert_difference "Post.count", 0 do
  35. # login_as :aaron
  36. # post :create, :forum_id => forums(:rails).id, :topic_id => posts(:pdi).id, :post => {}
  37. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => posts(:pdi).id, :anchor => 'reply-form', :page => '1', :per_page => '1')
  38. # end
  39. # end
  40. #
  41. # should "delete reply" do
  42. # counts = lambda { [Post.count, forums(:rails).posts_count, users(:sam).posts_count, topics(:pdi).posts_count] }
  43. # equal = lambda { [forums(:rails).topics_count] }
  44. # old_counts = counts.call
  45. # old_equal = equal.call
  46. #
  47. # login_as :admin
  48. # delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_reply).id
  49. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => topics(:pdi), :page => '1', :per_page => '1')
  50. # [forums(:rails), users(:sam), topics(:pdi)].each &:reload
  51. #
  52. # assert_equal old_counts.collect { |n| n - 1}, counts.call
  53. # assert_equal old_equal, equal.call
  54. # end
  55. #
  56. # should "delete reply with xml" do
  57. # content_type 'application/xml'
  58. # authorize_as :admin
  59. # delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_reply).id, :format => 'xml'
  60. # assert_response :success
  61. # end
  62. #
  63. # should "delete reply as moderator" do
  64. # assert_difference "Post.count", -1 do
  65. # login_as :sam
  66. # delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id
  67. # end
  68. # end
  69. #
  70. # should "delete topic if deleting the last reply" do
  71. # assert_difference "Post.count", -1 do
  72. # assert_difference "Topic.count", -1 do
  73. # login_as :admin
  74. # delete :destroy, :forum_id => forums(:rails).id, :topic_id => topics(:il8n).id, :id => posts(:il8n).id
  75. # assert_redirected_to forum_path(forums(:rails).id)
  76. # assert_raise(ActiveRecord::RecordNotFound) { topics(:il8n).reload }
  77. # end
  78. # end
  79. # end
  80. #
  81. # should "be ablet to add new post" do
  82. # login_as :sam
  83. # get :new
  84. # end
  85. # should "be able to edit own post" do
  86. # login_as :sam
  87. # put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:silver_surfer).id, :post => {}
  88. # assert_redirected_to forum_topic_path(:forum_id => forums(:comics).id, :id => topics(:galactus), :anchor => posts(:silver_surfer).dom_id, :page => '1', :per_page => '1')
  89. # end
  90. #
  91. # should "be able to edit own post with xml" do
  92. # content_type 'application/xml'
  93. # authorize_as :sam
  94. # put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:silver_surfer).id, :post => {}, :format => 'xml'
  95. # assert_response :success
  96. # end
  97. #
  98. # should "be able to edit other post as moderator" do
  99. # login_as :sam
  100. # put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id, :post => {}
  101. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => posts(:pdi), :anchor => posts(:pdi_rebuttal).dom_id, :page => '1', :per_page => '1')
  102. # end
  103. #
  104. # should "not be able to edit other post" do
  105. # login_as :sam
  106. # put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:galactus).id, :post => {}
  107. # assert_redirected_to login_path
  108. # end
  109. #
  110. # should "not be able to edit_other_post_with_xml" do
  111. # content_type 'application/xml'
  112. # authorize_as :sam
  113. # put :update, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :id => posts(:galactus).id, :post => {}, :format => 'xml'
  114. # assert_response 401
  115. # end
  116. #
  117. # should "not be able to edit own post user id" do
  118. # login_as :sam
  119. # put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_reply).id, :post => { :user_id => 32 }
  120. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => posts(:pdi), :anchor => posts(:pdi_reply).dom_id, :page => '1', :per_page => '1')
  121. # assert_equal users(:sam).id, posts(:pdi_reply).reload.user_id
  122. # end
  123. #
  124. # should "be able to edit other post as admin" do
  125. # login_as :admin
  126. # put :update, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id, :post => {}
  127. # assert_redirected_to forum_topic_path(:forum_id => forums(:rails).id, :id => posts(:pdi), :anchor => posts(:pdi_rebuttal).dom_id, :page => '1', :per_page => '1')
  128. # end
  129. #
  130. # should "view post as xml" do
  131. # get :show, :forum_id => forums(:rails).id, :topic_id => topics(:pdi).id, :id => posts(:pdi_rebuttal).id, :format => 'xml'
  132. # assert_response :success
  133. # assert_select 'post'
  134. # end
  135. #
  136. # should "view recent posts" do
  137. # get :index, :per_page => 20
  138. # assert_response :success
  139. # assert_models_equal [posts(:il8n), posts(:shield_reply), posts(:shield), posts(:silver_surfer),
  140. # posts(:galactus), posts(:ponies), posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi), posts(:sticky)],
  141. # assigns(:posts)
  142. # assert_select 'html>head'
  143. # end
  144. #
  145. # should "view posts by forum" do
  146. # get :index, :forum_id => forums(:comics).id, :per_page => 20
  147. # assert_response :success
  148. # assert_models_equal [posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus)], assigns(:posts)
  149. # assert_select 'html>head'
  150. # end
  151. #
  152. # should "view posts by user" do
  153. # get :index, :user_id => users(:sam).id, :per_page => 20
  154. # assert_response :success
  155. # assert_models_equal [posts(:shield), posts(:silver_surfer), posts(:ponies), posts(:pdi_reply), posts(:sticky)], assigns(:posts)
  156. # assert_select 'html>head'
  157. # end
  158. #
  159. # should "view recent posts with xml" do
  160. # content_type 'application/xml'
  161. # get :index, :format => 'xml', :per_page => 20
  162. # assert_response :success
  163. # assert_models_equal [posts(:il8n), posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus), posts(:ponies), posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi), posts(:sticky)], assigns(:posts)
  164. # assert_select 'posts>post'
  165. # end
  166. #
  167. # should "view posts by forum with xml" do
  168. # content_type 'application/xml'
  169. # get :index, :forum_id => forums(:comics).id, :format => 'xml', :per_page => 20
  170. # assert_response :success
  171. # assert_models_equal [posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus)], assigns(:posts)
  172. # assert_select 'posts>post'
  173. # end
  174. #
  175. # should "view posts by user with xml" do
  176. # content_type 'application/xml'
  177. # get :index, :user_id => users(:sam).id, :format => 'xml', :per_page => 20
  178. # assert_response :success
  179. # assert_models_equal [posts(:shield), posts(:silver_surfer), posts(:ponies), posts(:pdi_reply), posts(:sticky)], assigns(:posts)
  180. # assert_select 'posts>post'
  181. # end
  182. #
  183. # should "view monitored posts" do
  184. # get :monitored, :user_id => users(:aaron).id
  185. # assert_models_equal [posts(:pdi_reply)], assigns(:posts)
  186. # end
  187. #
  188. # should "not view unmonitored posts" do
  189. # get :monitored, :user_id => users(:sam).id
  190. # assert_models_equal [], assigns(:posts)
  191. # end
  192. #
  193. # should "search recent posts" do
  194. # get :search, :q => 'pdi', :per_page => 20
  195. # assert_response :success
  196. # assert_models_equal [posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi)], assigns(:posts)
  197. # end
  198. #
  199. # should "search posts by forum" do
  200. # get :search, :forum_id => forums(:comics).id, :q => 'galactus', :per_page => 20
  201. # assert_response :success
  202. # assert_models_equal [posts(:silver_surfer), posts(:galactus)], assigns(:posts)
  203. # end
  204. #
  205. # should "view recent posts as rss" do
  206. # get :index, :format => 'rss', :per_page => 20
  207. # assert_response :success
  208. # assert_models_equal [posts(:il8n), posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus), posts(:ponies), posts(:pdi_rebuttal), posts(:pdi_reply), posts(:pdi), posts(:sticky)], assigns(:posts)
  209. # end
  210. #
  211. # should "view posts by forum as rss" do
  212. # get :index, :forum_id => forums(:comics).id, :format => 'rss', :per_page => 20
  213. # assert_response :success
  214. # assert_models_equal [posts(:shield_reply), posts(:shield), posts(:silver_surfer), posts(:galactus)], assigns(:posts)
  215. # end
  216. #
  217. # should "view posts by user as rss" do
  218. # get :index, :user_id => users(:sam).id, :format => 'rss', :per_page => 20
  219. # assert_response :success
  220. # assert_models_equal [posts(:shield), posts(:silver_surfer), posts(:ponies), posts(:pdi_reply), posts(:sticky)], assigns(:posts)
  221. # end
  222. should "disallow new post to locked topic" do
  223. galactus = topics(:galactus)
  224. galactus.locked = 1
  225. galactus.save
  226. login_as :aaron
  227. post :create, :forum_id => forums(:comics).id, :topic_id => topics(:galactus).id, :post => { :body => 'blah' }
  228. assert_redirected_to forum_topic_path(:forum_id => forums(:comics).id, :id => topics(:galactus))
  229. assert_equal 'This topic is locked.', flash[:notice]
  230. end
  231. end