Advertisement
Guest User

Untitled

a guest
Apr 16th, 2014
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. require 'spec_helper'
  2.  
  3. describe JobsController do
  4. let!(:user) { FactoryGirl.create(:user) }
  5. let!(:job) { FactoryGirl.create(:job, user: user) }
  6. let!(:wrong_user) { FactoryGirl.create(:user, email: "wrong@example.com") }
  7. let!(:wrong_job) { FactoryGirl.create(:job, user: wrong_user) }
  8.  
  9. [...]
  10.  
  11. describe "correct user control" do
  12. before { sign_in user }
  13. describe "users can only delete their own jobs" do
  14. it "should not change job count" do
  15. expect do
  16. delete :destroy, id: wrong_job.id
  17. end.to_not change(Job, :count)
  18. end
  19. end
  20. describe "users can delete their own jobs" do
  21. it "should decrease job count" do
  22. expect do
  23. delete :destroy, id: job.id
  24. end.to change(Job, :count).by(-1)
  25. end
  26. end
  27. end
  28. end
  29.  
  30. 1) JobsController correct user control users can delete their own jobs should decrease job count
  31. Failure/Error: expect do
  32. count should have been changed by -1, but was changed by 0
  33. # ./spec/controllers/jobs_controller_spec.rb:41:in `block (4 levels) in <top (required)>'
  34.  
  35. class JobsController < ApplicationController
  36. skip_before_action :require_signin, only: [:index, :show]
  37. skip_before_action :correct_user, only: [:index, :show, :new, :create]
  38. before_action :set_job, only: [:show, :edit, :update, :destroy]
  39.  
  40. [...]
  41.  
  42. def destroy
  43. @job.destroy
  44. respond_to do |format|
  45. format.html { redirect_to jobs_url }
  46. format.json { head :no_content }
  47. end
  48. end
  49.  
  50. private
  51. def set_job
  52. @job = Job.find(params[:id])
  53. end
  54.  
  55. def job_params
  56. params.require(:job).permit(:title, :org, :internship, :postdate, :filldate, :location, :link, :description)
  57. end
  58. end
  59.  
  60. class ApplicationController < ActionController::Base
  61. protect_from_forgery with: :exception
  62. before_filter :require_signin
  63. before_filter :correct_user
  64.  
  65. include SessionsHelper
  66.  
  67. private
  68. def require_signin
  69. unless signed_in?
  70. store_location
  71. redirect_to signin_url, notice: "Please sign in."
  72. end
  73. end
  74.  
  75. def correct_user
  76. @job = current_user.jobs.find_by(id: params[:id])
  77. redirect_to root_url if @job.nil?
  78. end
  79. end
  80.  
  81. Prefix Verb URI Pattern Controller#Action
  82. jobs GET /jobs(.:format) jobs#index
  83. POST /jobs(.:format) jobs#create
  84. new_job GET /jobs/new(.:format) jobs#new
  85. edit_job GET /jobs/:id/edit(.:format) jobs#edit
  86. job GET /jobs/:id(.:format) jobs#show
  87. PATCH /jobs/:id(.:format) jobs#update
  88. PUT /jobs/:id(.:format) jobs#update
  89. DELETE /jobs/:id(.:format) jobs#destroy
  90. [...]
  91.  
  92. ...
  93. let(:some_user) { User.create }
  94.  
  95. def valid_session
  96. { user_id: some_user.id }
  97. end
  98.  
  99. describe "DELETE destroy" do
  100. it "destroys the requested job" do
  101. job = Job.create! valid_attributes
  102. expect {
  103. delete :destroy, { :id => job.to_param }, valid_session
  104. }.to change(Job, :count).by(-1)
  105. end
  106. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement