Updated Rails to 2.1.0
[gitorious:georgyos-clone.git] / vendor / plugins / rspec_on_rails / generators / rspec_scaffold / templates / controller_spec.rb
1 require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../spec_helper'
2
3 describe <%= controller_class_name %>Controller do
4   describe "handling GET /<%= table_name %>" do
5
6     before(:each) do
7       @<%= file_name %> = mock_model(<%= class_name %>)
8       <%= class_name %>.stub!(:find).and_return([@<%= file_name %>])
9     end
10   
11     def do_get
12       get :index
13     end
14   
15     it "should be successful" do
16       do_get
17       response.should be_success
18     end
19
20     it "should render index template" do
21       do_get
22       response.should render_template('index')
23     end
24   
25     it "should find all <%= table_name %>" do
26       <%= class_name %>.should_receive(:find).with(:all).and_return([@<%= file_name %>])
27       do_get
28     end
29   
30     it "should assign the found <%= table_name %> for the view" do
31       do_get
32       assigns[:<%= table_name %>].should == [@<%= file_name %>]
33     end
34   end
35
36   describe "handling GET /<%= table_name %>.xml" do
37
38     before(:each) do
39       @<%= file_name.pluralize %> = mock("Array of <%= class_name.pluralize %>", :to_xml => "XML")
40       <%= class_name %>.stub!(:find).and_return(@<%= file_name.pluralize %>)
41     end
42   
43     def do_get
44       @request.env["HTTP_ACCEPT"] = "application/xml"
45       get :index
46     end
47   
48     it "should be successful" do
49       do_get
50       response.should be_success
51     end
52
53     it "should find all <%= table_name %>" do
54       <%= class_name %>.should_receive(:find).with(:all).and_return(@<%= file_name.pluralize %>)
55       do_get
56     end
57   
58     it "should render the found <%= table_name %> as xml" do
59       @<%= file_name.pluralize %>.should_receive(:to_xml).and_return("XML")
60       do_get
61       response.body.should == "XML"
62     end
63   end
64
65   describe "handling GET /<%= table_name %>/1" do
66
67     before(:each) do
68       @<%= file_name %> = mock_model(<%= class_name %>)
69       <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
70     end
71   
72     def do_get
73       get :show, :id => "1"
74     end
75
76     it "should be successful" do
77       do_get
78       response.should be_success
79     end
80   
81     it "should render show template" do
82       do_get
83       response.should render_template('show')
84     end
85   
86     it "should find the <%= file_name %> requested" do
87       <%= class_name %>.should_receive(:find).with("1").and_return(@<%= file_name %>)
88       do_get
89     end
90   
91     it "should assign the found <%= file_name %> for the view" do
92       do_get
93       assigns[:<%= file_name %>].should equal(@<%= file_name %>)
94     end
95   end
96
97   describe "handling GET /<%= table_name %>/1.xml" do
98
99     before(:each) do
100       @<%= file_name %> = mock_model(<%= class_name %>, :to_xml => "XML")
101       <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
102     end
103   
104     def do_get
105       @request.env["HTTP_ACCEPT"] = "application/xml"
106       get :show, :id => "1"
107     end
108
109     it "should be successful" do
110       do_get
111       response.should be_success
112     end
113   
114     it "should find the <%= file_name %> requested" do
115       <%= class_name %>.should_receive(:find).with("1").and_return(@<%= file_name %>)
116       do_get
117     end
118   
119     it "should render the found <%= file_name %> as xml" do
120       @<%= file_name %>.should_receive(:to_xml).and_return("XML")
121       do_get
122       response.body.should == "XML"
123     end
124   end
125
126   describe "handling GET /<%= table_name %>/new" do
127
128     before(:each) do
129       @<%= file_name %> = mock_model(<%= class_name %>)
130       <%= class_name %>.stub!(:new).and_return(@<%= file_name %>)
131     end
132   
133     def do_get
134       get :new
135     end
136
137     it "should be successful" do
138       do_get
139       response.should be_success
140     end
141   
142     it "should render new template" do
143       do_get
144       response.should render_template('new')
145     end
146   
147     it "should create an new <%= file_name %>" do
148       <%= class_name %>.should_receive(:new).and_return(@<%= file_name %>)
149       do_get
150     end
151   
152     it "should not save the new <%= file_name %>" do
153       @<%= file_name %>.should_not_receive(:save)
154       do_get
155     end
156   
157     it "should assign the new <%= file_name %> for the view" do
158       do_get
159       assigns[:<%= file_name %>].should equal(@<%= file_name %>)
160     end
161   end
162
163   describe "handling GET /<%= table_name %>/1/edit" do
164
165     before(:each) do
166       @<%= file_name %> = mock_model(<%= class_name %>)
167       <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
168     end
169   
170     def do_get
171       get :edit, :id => "1"
172     end
173
174     it "should be successful" do
175       do_get
176       response.should be_success
177     end
178   
179     it "should render edit template" do
180       do_get
181       response.should render_template('edit')
182     end
183   
184     it "should find the <%= file_name %> requested" do
185       <%= class_name %>.should_receive(:find).and_return(@<%= file_name %>)
186       do_get
187     end
188   
189     it "should assign the found <%= class_name %> for the view" do
190       do_get
191       assigns[:<%= file_name %>].should equal(@<%= file_name %>)
192     end
193   end
194
195   describe "handling POST /<%= table_name %>" do
196
197     before(:each) do
198       @<%= file_name %> = mock_model(<%= class_name %>, :to_param => "1")
199       <%= class_name %>.stub!(:new).and_return(@<%= file_name %>)
200     end
201     
202     describe "with successful save" do
203   
204       def do_post
205         @<%= file_name %>.should_receive(:save).and_return(true)
206         post :create, :<%= file_name %> => {}
207       end
208   
209       it "should create a new <%= file_name %>" do
210         <%= class_name %>.should_receive(:new).with({}).and_return(@<%= file_name %>)
211         do_post
212       end
213
214       it "should redirect to the new <%= file_name %>" do
215         do_post
216         response.should redirect_to(<%= table_name.singularize %>_url("1"))
217       end
218       
219     end
220     
221     describe "with failed save" do
222
223       def do_post
224         @<%= file_name %>.should_receive(:save).and_return(false)
225         post :create, :<%= file_name %> => {}
226       end
227   
228       it "should re-render 'new'" do
229         do_post
230         response.should render_template('new')
231       end
232       
233     end
234   end
235
236   describe "handling PUT /<%= table_name %>/1" do
237
238     before(:each) do
239       @<%= file_name %> = mock_model(<%= class_name %>, :to_param => "1")
240       <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
241     end
242     
243     describe "with successful update" do
244
245       def do_put
246         @<%= file_name %>.should_receive(:update_attributes).and_return(true)
247         put :update, :id => "1"
248       end
249
250       it "should find the <%= file_name %> requested" do
251         <%= class_name %>.should_receive(:find).with("1").and_return(@<%= file_name %>)
252         do_put
253       end
254
255       it "should update the found <%= file_name %>" do
256         do_put
257         assigns(:<%= file_name %>).should equal(@<%= file_name %>)
258       end
259
260       it "should assign the found <%= file_name %> for the view" do
261         do_put
262         assigns(:<%= file_name %>).should equal(@<%= file_name %>)
263       end
264
265       it "should redirect to the <%= file_name %>" do
266         do_put
267         response.should redirect_to(<%= table_name.singularize %>_url("1"))
268       end
269
270     end
271     
272     describe "with failed update" do
273
274       def do_put
275         @<%= file_name %>.should_receive(:update_attributes).and_return(false)
276         put :update, :id => "1"
277       end
278
279       it "should re-render 'edit'" do
280         do_put
281         response.should render_template('edit')
282       end
283
284     end
285   end
286
287   describe "handling DELETE /<%= table_name %>/1" do
288
289     before(:each) do
290       @<%= file_name %> = mock_model(<%= class_name %>, :destroy => true)
291       <%= class_name %>.stub!(:find).and_return(@<%= file_name %>)
292     end
293   
294     def do_delete
295       delete :destroy, :id => "1"
296     end
297
298     it "should find the <%= file_name %> requested" do
299       <%= class_name %>.should_receive(:find).with("1").and_return(@<%= file_name %>)
300       do_delete
301     end
302   
303     it "should call destroy on the found <%= file_name %>" do
304       @<%= file_name %>.should_receive(:destroy)
305       do_delete
306     end
307   
308     it "should redirect to the <%= table_name %> list" do
309       do_delete
310       response.should redirect_to(<%= table_name %>_url)
311     end
312   end
313 end