/
responses_controller_spec.rb
125 lines (106 loc) · 3.88 KB
/
responses_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
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 ResponsesController do
def mock_response(stubs = {})
@mock_response ||= mock_model(Response, stubs).as_null_object
end
describe 'GET index' do
it 'assigns all responses as @responses' do
Response.stub(:all) { [mock_response] }
get :index
assigns(:responses).should eq([mock_response])
end
end
describe 'GET show' do
it 'assigns the requested response as @response' do
Response.stub(:find).with('37') { mock_response }
get :show, id: '37'
assigns(:response).should be(mock_response)
end
end
describe 'GET new' do
it 'assigns a new response as @response' do
Response.stub(:new) { mock_response }
get :new
assigns(:response).should be(mock_response)
end
end
describe 'GET edit' do
it 'assigns the requested response as @response' do
Response.stub(:find).with('37') { mock_response }
get :edit, id: '37'
assigns(:response).should be(mock_response)
end
end
describe 'POST create' do
describe 'with valid params' do
it 'assigns a newly created response as @response' do
Response.stub(:new).with({"these"=>"params"}, {}) { mock_response(save: true) }
post :create, response: { 'these' => 'params' }
assigns(:response).should be(mock_response)
end
it 'redirects to the created response' do
Response.stub(:new) { mock_response(save: true) }
post :create, response: {}
response.should redirect_to(response_url(mock_response))
end
end
describe 'with invalid params' do
it 'assigns a newly created but unsaved response as @response' do
Response.stub(:new).with({"these"=>"params"}, {}) { mock_response(save: false) }
post :create, response: { 'these' => 'params' }
assigns(:response).should be(mock_response)
end
it "re-renders the 'new' template" do
Response.stub(:new) { mock_response(save: false) }
post :create, response: {}
response.should render_template('new')
end
end
end
describe 'PUT update' do
describe 'with valid params' do
it 'updates the requested response' do
Response.stub(:find).with('37') { mock_response }
mock_response.should_receive(:update_attributes).with('these' => 'params')
put :update, id: '37', response: { 'these' => 'params' }
end
it 'assigns the requested response as @response' do
Response.stub(:find) { mock_response(update_attributes: true) }
put :update, id: '1'
assigns(:response).should be(mock_response)
end
it 'redirects to the response' do
Response.stub(:find) { mock_response(update_attributes: true) }
put :update, id: '1'
response.should redirect_to(response_url(mock_response))
end
end
describe 'with invalid params' do
it 'assigns the response as @response' do
Response.stub(:find) { mock_response(update_attributes: false) }
put :update, id: '1'
assigns(:response).should be(mock_response)
end
it "re-renders the 'edit' template" do
Response.stub(:find) { mock_response(update_attributes: false) }
put :update, id: '1'
response.should render_template('edit')
end
end
end
describe 'DELETE destroy' do
it 'destroys the requested response' do
Response.stub(:find).with('37') { mock_response }
mock_response.should_receive(:destroy)
delete :destroy, id: '37'
end
it 'redirects to the responses list' do
Response.stub(:find) { mock_response }
delete :destroy, id: '1'
response.should redirect_to(responses_url)
end
end
end