Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2015
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.53 KB | None | 0 0
  1. require 'rails_helper'
  2.  
  3. RSpec.describe ProjectsController, :type => :controller do
  4.  
  5. describe 'GET #show' do
  6. it 'assigns the requested project to @project' do
  7. project = create(:public_project)
  8. user = create(:user)
  9. get :show, user_name: user.name, project_name: project.name
  10. expect(assigns(:project)).to eq project
  11. end
  12.  
  13. it 'renders the :show template' do
  14. project = create(:public_project)
  15. user = create(:user)
  16. get :show, user_name: user.name, project_name: project.name
  17. expect(response).to render_template :show
  18. end
  19. end
  20.  
  21. describe 'GET #new' do
  22. it 'renders the :new template' do
  23. user = create(:user)
  24. sign_in user
  25. get :new, user_name: user.name
  26. expect(response).to render_template :new
  27. end
  28. end
  29.  
  30. describe 'GET #edit' do
  31. it 'renders the :edit template' do
  32. project = create(:public_project)
  33. user = create(:user)
  34. sign_in user
  35. get :edit, user_name: user.name, project_name: project.name
  36. expect(response).to render_template :edit
  37. end
  38. end
  39.  
  40. describe 'POST #create' do
  41. before :each do
  42. @user = create(:user)
  43. sign_in @user
  44. end
  45.  
  46. context 'with valid attributes' do
  47. it 'saves new project to database' do
  48. expect {
  49. post :create, user_name: @user.name, project: attributes_for(:project)
  50. }.to change(Project, :count).by(1)
  51. end
  52.  
  53. it 'redirects to projects path ' do
  54. post :create, user_name: @user.name, project: attributes_for(:project)
  55. expect(response).to redirect_to project_path(@user.name, assigns(:project).name)
  56. end
  57. end
  58.  
  59. context 'with invalid attributes' do
  60. it 'doesnt save invalid project to database' do
  61. expect {
  62. post :create, user_name: @user.name, project: attributes_for(:invalid_project)
  63. }.to_not change(Project, :count)
  64. end
  65.  
  66. it 'redirects to :new template ' do
  67. post :create, user_name: @user.name, project: attributes_for(:invalid_project)
  68. expect(response).to render_template :new
  69. end
  70. end
  71. end
  72.  
  73. describe 'PATCH #update' do
  74. before :each do
  75. @project = create(:public_project)
  76. @user = create(:user)
  77. sign_in @user
  78. end
  79.  
  80. context 'with valid attributes' do
  81. it 'locates project' do
  82. patch :update, user_name: @user.name, project_name: @project.name, project: attributes_for(:public_project)
  83. expect(assigns(:project)).to eq (@project)
  84. end
  85.  
  86. it 'changes project' do
  87. patch :update, user_name: @user.name, project_name: @project.name,
  88. project: attributes_for(:public_project,
  89. title: 'New Title',
  90. description: 'Test desc')
  91. @project.reload
  92. expect(@project.title).to eq('New Title')
  93. expect(@project.description).to eq('Test desc')
  94. end
  95.  
  96. it 'redirects to projects' do
  97. patch :update, user_name: @user.name, project_name: @project.name, project: attributes_for(:public_project)
  98. expect(response).to redirect_to project_path(@user.name, @project.name)
  99. end
  100. end
  101.  
  102. context 'with invalid attributes' do
  103. it 'doesnt change project' do
  104. patch :update, user_name: @user.name, project_name: @project.name,
  105. project: attributes_for(:public_project,
  106. title: nil,
  107. description: 'Test desc')
  108. @project.reload
  109. expect(@project.description).to_not eq('Test desc')
  110. end
  111.  
  112. it 'render :edit template' do
  113. patch :update, user_name: @user.name, project_name: @project.name, project: attributes_for(:invalid_project)
  114. expect(response).to render_template :edit
  115. end
  116. end
  117. end
  118.  
  119. describe 'DELETE #destroy' do
  120. before :each do
  121. @project = create(:public_project)
  122. @user = create(:user)
  123. sign_in @user
  124. end
  125.  
  126. it 'deletes the project' do
  127. expect{
  128. delete :destroy, user_name: @user.name, project_name: @project.name
  129. }.to change(Project, :count).by(-1)
  130. end
  131.  
  132. it 'redirects to user projects' do
  133. delete :destroy, user_name: @user.name, project_name: @project.name
  134. expect(response).to redirect_to user_path(@user.name)
  135. end
  136. end
  137.  
  138. describe 'PATCH #archive' do
  139. before :each do
  140. @project = create(:project)
  141. @user = create(:user)
  142. sign_in @user
  143. end
  144.  
  145. it 'archives current project' do
  146. patch :archive, user_name: @user.name, project_name: @project.name
  147. @project.reload
  148. expect(@project.archived).to eq true
  149. end
  150.  
  151. it 'redirects to project view' do
  152. patch :archive, user_name: @user.name, project_name: @project.name
  153. expect(response).to redirect_to project_path(@user.name, @project.name)
  154. end
  155. end
  156.  
  157. describe 'PATCH #unarchive' do
  158. before :each do
  159. @project = create(:archived_project)
  160. @user = create(:user)
  161. sign_in @user
  162. end
  163.  
  164. it 'unarchives current project' do
  165. patch :unarchive, user_name: @user.name, project_name: @project.name
  166. @project.reload
  167. expect(@project.archived).to eq false
  168. end
  169. it 'redirects to project view' do
  170. patch :unarchive, user_name: @user.name, project_name: @project.name
  171. expect(response).to redirect_to project_path(@user.name, @project.name)
  172. end
  173. end
  174.  
  175. describe 'PATCH #trash' do
  176. before :each do
  177. @project = create(:project)
  178. @user = create(:user)
  179. sign_in @user
  180. end
  181.  
  182. it 'moves project to trash' do
  183. patch :move_to_trash, project_id: @project.id
  184. @project.reload
  185. expect(@project.deleted).to eq true
  186. end
  187.  
  188. it 'redirects to user projects' do
  189. patch :move_to_trash, project_id: @project.id
  190. expect(response).to redirect_to user_path(@user.name)
  191. end
  192. end
  193.  
  194. describe 'PATCH #restore' do
  195. before :each do
  196. @deleted_project = create(:deleted_project)
  197. @user = create(:user)
  198. sign_in @user
  199. end
  200.  
  201. it 'restores project from trash' do
  202. patch :restore_from_trash, project_id: @deleted_project.id
  203. @deleted_project.reload
  204. expect(@deleted_project.deleted).to eq false
  205. end
  206. it 'change name if project with such name exists' do
  207. @project = create(:project)
  208. patch :restore_from_trash, project_id: @deleted_project.id
  209. @deleted_project.reload
  210. expect(@deleted_project.name).to eq 'lorem_ipsum1'
  211. expect(@deleted_project.deleted).to eq false
  212. end
  213. it 'redirects to user projects' do
  214. patch :restore_from_trash, project_id: @deleted_project.id
  215. expect(response).to redirect_to user_path(@user.name)
  216. end
  217. end
  218. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement