Skip to content

Commit 2e76966

Browse files
committed
Make #update specs consistent
* Use expect syntax * Avoid lets * Stub Guardian method used in the controller
1 parent 7a567d7 commit 2e76966

1 file changed

Lines changed: 27 additions & 25 deletions

File tree

spec/controllers/users_controller_spec.rb

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -824,40 +824,43 @@ def post_user
824824

825825
end
826826

827-
describe '.update' do
828-
829-
context 'not logged in' do
830-
it 'raises an error when not logged in' do
827+
describe '#update' do
828+
context 'with guest' do
829+
it 'raises an error' do
831830
expect do
832-
xhr :put, :update, username: 'somename'
831+
xhr :put, :update, username: 'guest'
833832
end.to raise_error(Discourse::NotLoggedIn)
834833
end
835834
end
836835

837-
context 'logged in' do
838-
let!(:user) { log_in }
836+
context 'with authenticated user' do
837+
context 'with permission to update' do
838+
it 'allows the update' do
839+
user = Fabricate(:user, name: 'Billy Bob')
840+
log_in_user(user)
841+
guardian = Guardian.new(user)
842+
guardian.stubs(:ensure_can_edit!)
843+
Guardian.stubs(new: guardian).with(user)
839844

840-
context 'without a token' do
841-
it 'should ensure you can update the user' do
842-
Guardian.any_instance.expects(:can_edit?).with(user).returns(false)
843-
put :update, username: user.username
844-
response.should be_forbidden
845-
end
845+
put :update, username: user.username, name: 'Jim Tom'
846846

847-
context 'as a user who can edit the user' do
847+
expect(response).to be_success
848+
expect(user.reload.name).to eq 'Jim Tom'
849+
end
850+
end
848851

849-
before do
850-
put :update, username: user.username, bio_raw: 'brand new bio'
851-
user.reload
852-
end
852+
context 'without permission to update' do
853+
it 'does not allow the update' do
854+
user = Fabricate(:user, name: 'Billy Bob')
855+
log_in_user(user)
856+
guardian = Guardian.new(user)
857+
guardian.stubs(:ensure_can_edit!).raises(Discourse::InvalidAccess.new)
858+
Guardian.stubs(new: guardian).with(user)
853859

854-
it 'updates the user' do
855-
user.bio_raw.should == 'brand new bio'
856-
end
860+
put :update, username: user.username, name: 'Jim Tom'
857861

858-
it 'returns json success' do
859-
response.should be_success
860-
end
862+
expect(response).to be_forbidden
863+
expect(user.reload.name).not_to eq 'Jim Tom'
861864
end
862865
end
863866
end
@@ -1102,5 +1105,4 @@ def post_user
11021105
end
11031106

11041107
end
1105-
11061108
end

0 commit comments

Comments
 (0)