/
users_controller_spec.rb
132 lines (114 loc) · 3.77 KB
/
users_controller_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
require 'spec_helper'
# This spec was generated by rspec-rails when you ran the scaffold generator.
# It demonstrates how one might use RSpec to specify the controller code that
# was generated by the Rails when you ran the scaffold generator.
describe UsersController do
def mock_user(stubs = {})
@mock_user ||= mock_model(User, stubs).as_null_object
end
describe 'mark completed' do
params = {participant_id: 5, group: 3}
u = User.find_or_create_by_id(params[:participant_id], group: params[:group])
it 'sets participant_id' do
u.id.should eq 5
u.group.should eq '3'
end
end
describe 'GET index' do
it 'assigns all users as @users' do
User.stub(:all) { [mock_user] }
get :index
assigns(:users).should eq([mock_user])
end
end
describe 'GET show' do
it 'assigns the requested user as @user' do
User.stub(:find).with('37') { mock_user }
get :show, id: '37'
assigns(:user).should be(mock_user)
end
end
describe 'GET new' do
it 'assigns a new user as @user' do
User.stub(:new) { mock_user }
get :new
assigns(:user).should be(mock_user)
end
end
describe 'GET edit' do
it 'assigns the requested user as @user' do
User.stub(:find).with('37') { mock_user }
get :edit, id: '37'
assigns(:user).should be(mock_user)
end
end
describe 'POST create' do
describe 'with valid params' do
it 'assigns a newly created user as @user' do
User.stub(:new).with({"group"=>nil}, {}) { mock_user(save: true) }
post :create, user: { "group"=>nil }
assigns(:user).should be(mock_user)
end
it 'redirects to the created user' do
User.stub(:new) { mock_user(save: true) }
post :create, user: {}
response.should redirect_to(user_url(mock_user))
end
end
describe 'with invalid params' do
it 'assigns a newly created but unsaved user as @user' do
User.stub(:new).with({"group"=>nil}, {}) { mock_user(save: false) }
post :create, user: { "group"=>nil }
assigns(:user).should be(mock_user)
end
it "re-renders the 'new' template" do
User.stub(:new) { mock_user(save: false) }
post :create, user: {}
response.should render_template('new')
end
end
end
describe 'PUT update' do
describe 'with valid params' do
it 'updates the requested user' do
User.stub(:find).with('37') { mock_user }
mock_user.should_receive(:update_attributes).with({"group"=>nil})
put :update, id: '37', user: { "group"=>nil }
end
it 'assigns the requested user as @user' do
User.stub(:find) { mock_user(update_attributes: true) }
put :update, id: '1'
assigns(:user).should be(mock_user)
end
it 'redirects to the user' do
User.stub(:find) { mock_user(update_attributes: true) }
put :update, id: '1'
response.should redirect_to(user_url(mock_user))
end
end
describe 'with invalid params' do
it 'assigns the user as @user' do
User.stub(:find) { mock_user(update_attributes: false) }
put :update, id: '1'
assigns(:user).should be(mock_user)
end
it "re-renders the 'edit' template" do
User.stub(:find) { mock_user(update_attributes: false) }
put :update, id: '1'
response.should render_template('edit')
end
end
end
describe 'DELETE destroy' do
it 'destroys the requested user' do
User.stub(:find).with('37') { mock_user }
mock_user.should_receive(:destroy)
delete :destroy, id: '37'
end
it 'redirects to the users list' do
User.stub(:find) { mock_user }
delete :destroy, id: '1'
response.should redirect_to(users_url)
end
end
end