rc_rails 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +7 -0
- data/CHANGELOG +355 -0
- data/Gemfile +5 -0
- data/Gemfile.lock.development +117 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +71 -0
- data/Rakefile +33 -0
- data/Todo.txt +1 -0
- data/lib/rc_rails.rb +9 -0
- data/lib/resources_controller/actions.rb +147 -0
- data/lib/resources_controller/active_record/saved.rb +15 -0
- data/lib/resources_controller/helper.rb +123 -0
- data/lib/resources_controller/include_actions.rb +37 -0
- data/lib/resources_controller/named_route_helper.rb +154 -0
- data/lib/resources_controller/railtie.rb +14 -0
- data/lib/resources_controller/request_path_introspection.rb +83 -0
- data/lib/resources_controller/resource_methods.rb +32 -0
- data/lib/resources_controller/singleton_actions.rb +21 -0
- data/lib/resources_controller/specification.rb +119 -0
- data/lib/resources_controller/version.rb +3 -0
- data/lib/resources_controller.rb +849 -0
- data/resources_controller.gemspec +29 -0
- data/spec/app/database.yml +5 -0
- data/spec/app/views/accounts/show.html.erb +0 -0
- data/spec/app/views/addresses/edit.html.erb +0 -0
- data/spec/app/views/addresses/index.html.erb +0 -0
- data/spec/app/views/addresses/new.html.erb +0 -0
- data/spec/app/views/addresses/show.html.erb +0 -0
- data/spec/app/views/admin/forums/create.html.erb +0 -0
- data/spec/app/views/admin/forums/destroy.html.erb +0 -0
- data/spec/app/views/admin/forums/edit.html.erb +0 -0
- data/spec/app/views/admin/forums/index.html.erb +0 -0
- data/spec/app/views/admin/forums/new.html.erb +0 -0
- data/spec/app/views/admin/forums/show.html.erb +0 -0
- data/spec/app/views/admin/forums/update.html.erb +0 -0
- data/spec/app/views/comments/edit.html.erb +0 -0
- data/spec/app/views/comments/index.html.erb +0 -0
- data/spec/app/views/comments/new.html.erb +0 -0
- data/spec/app/views/comments/show.html.erb +0 -0
- data/spec/app/views/forum_posts/edit.html.erb +0 -0
- data/spec/app/views/forum_posts/index.html.erb +0 -0
- data/spec/app/views/forum_posts/new.html.erb +0 -0
- data/spec/app/views/forum_posts/show.html.erb +0 -0
- data/spec/app/views/forums/create.html.erb +0 -0
- data/spec/app/views/forums/destroy.html.erb +0 -0
- data/spec/app/views/forums/edit.html.erb +0 -0
- data/spec/app/views/forums/index.html.erb +0 -0
- data/spec/app/views/forums/new.html.erb +0 -0
- data/spec/app/views/forums/show.html.erb +0 -0
- data/spec/app/views/forums/update.html.erb +0 -0
- data/spec/app/views/infos/edit.html.erb +0 -0
- data/spec/app/views/infos/show.html.erb +0 -0
- data/spec/app/views/interests/index.html.erb +0 -0
- data/spec/app/views/interests/show.html.erb +0 -0
- data/spec/app/views/owners/edit.html.erb +0 -0
- data/spec/app/views/owners/new.html.erb +0 -0
- data/spec/app/views/owners/show.html.erb +0 -0
- data/spec/app/views/tags/index.html.erb +0 -0
- data/spec/app/views/tags/new.html.erb +0 -0
- data/spec/app/views/tags/show.html.erb +0 -0
- data/spec/app/views/users/edit.html.erb +0 -0
- data/spec/app/views/users/index.html.erb +0 -0
- data/spec/app/views/users/show.html.erb +0 -0
- data/spec/app.rb +315 -0
- data/spec/controllers/accounts_controller_spec.rb +77 -0
- data/spec/controllers/addresses_controller_spec.rb +346 -0
- data/spec/controllers/admin_forums_controller_spec.rb +638 -0
- data/spec/controllers/comments_controller_spec.rb +380 -0
- data/spec/controllers/comments_controller_with_models_spec.rb +202 -0
- data/spec/controllers/forum_posts_controller_spec.rb +426 -0
- data/spec/controllers/forums_controller_spec.rb +694 -0
- data/spec/controllers/infos_controller_spec.rb +71 -0
- data/spec/controllers/interests_controller_via_forum_spec.rb +80 -0
- data/spec/controllers/interests_controller_via_user_spec.rb +114 -0
- data/spec/controllers/owners_controller_spec.rb +277 -0
- data/spec/controllers/resource_saved_spec.rb +47 -0
- data/spec/controllers/resource_service_in_forums_controller_spec.rb +37 -0
- data/spec/controllers/resource_service_in_infos_controller_spec.rb +36 -0
- data/spec/controllers/resource_service_in_interests_controller_via_forum_spec.rb +51 -0
- data/spec/controllers/tags_controller_spec.rb +83 -0
- data/spec/controllers/tags_controller_via_account_info_spec.rb +131 -0
- data/spec/controllers/tags_controller_via_forum_post_comment_spec.rb +144 -0
- data/spec/controllers/tags_controller_via_forum_post_spec.rb +133 -0
- data/spec/controllers/tags_controller_via_forum_spec.rb +173 -0
- data/spec/controllers/tags_controller_via_user_address_spec.rb +130 -0
- data/spec/controllers/users_controller_spec.rb +248 -0
- data/spec/lib/action_view_helper_spec.rb +143 -0
- data/spec/lib/bug_0001_spec.rb +22 -0
- data/spec/lib/include_actions_spec.rb +35 -0
- data/spec/lib/load_enclosing_resources_spec.rb +245 -0
- data/spec/lib/request_path_introspection_spec.rb +130 -0
- data/spec/lib/resource_methods_spec.rb +204 -0
- data/spec/lib/resources_controller_spec.rb +57 -0
- data/spec/models/comment_saved_spec.rb +24 -0
- data/spec/rspec_generator_task.rb +105 -0
- data/spec/spec_helper.rb +17 -0
- data/spec/verify_rcov.rb +52 -0
- metadata +193 -0
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
module ForumPostsSpecHelper
|
|
4
|
+
def setup_mocks
|
|
5
|
+
@forum = mock('Forum')
|
|
6
|
+
@forum_posts = mock('Assoc: forum_posts')
|
|
7
|
+
@forum.stub!(:posts).and_return(@forum_posts)
|
|
8
|
+
@forum.stub!(:to_param).and_return("2")
|
|
9
|
+
|
|
10
|
+
Forum.stub!(:find).and_return(@forum)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
describe ForumPostsController do
|
|
15
|
+
describe "Routing shortcuts for ForumPosts (forums/2/posts/1) should map" do
|
|
16
|
+
include ForumPostsSpecHelper
|
|
17
|
+
|
|
18
|
+
before(:each) do
|
|
19
|
+
setup_mocks
|
|
20
|
+
@post = mock('Post')
|
|
21
|
+
@post.stub!(:to_param).and_return('1')
|
|
22
|
+
@forum_posts.stub!(:find).and_return(@post)
|
|
23
|
+
|
|
24
|
+
get :show, :forum_id => "2", :id => "1"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "resources_path to /forums/2/posts" do
|
|
28
|
+
controller.resources_path.should == '/forums/2/posts'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "resource_path to /forums/2/posts/1" do
|
|
32
|
+
controller.resource_path.should == '/forums/2/posts/1'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
it "resource_path(9) to /forums/2/posts/9" do
|
|
36
|
+
controller.resource_path(9).should == '/forums/2/posts/9'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "edit_resource_path to /forums/2/posts/1/edit" do
|
|
40
|
+
controller.edit_resource_path.should == '/forums/2/posts/1/edit'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "edit_resource_path(9) to /forums/2/posts/9/edit" do
|
|
44
|
+
controller.edit_resource_path(9).should == '/forums/2/posts/9/edit'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "new_resource_path to /forums/2/posts/new" do
|
|
48
|
+
controller.new_resource_path.should == '/forums/2/posts/new'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
it "resource_tags_path to /forums/2/posts/1/tags" do
|
|
52
|
+
controller.resource_tags_path.should == "/forums/2/posts/1/tags"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "resource_tags_path(9) to /forums/2/posts/9/tags" do
|
|
56
|
+
controller.resource_tags_path(9).should == "/forums/2/posts/9/tags"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "resource_tag_path(5) to /forums/2/posts/1/tags/5" do
|
|
60
|
+
controller.resource_tag_path(5).should == "/forums/2/posts/1/tags/5"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "resource_tag_path(9,5) to /forums/2/posts/9/tags/5" do
|
|
64
|
+
controller.resource_tag_path(9,5).should == "/forums/2/posts/9/tags/5"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "enclosing_resource_path to /forums/2" do
|
|
68
|
+
controller.enclosing_resource_path.should == '/forums/2'
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "enclosing_resource_path(9) to /forums/9" do
|
|
72
|
+
controller.enclosing_resource_path(9).should == '/forums/9'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "enclosing_resources_path to /forums" do
|
|
76
|
+
controller.enclosing_resources_path.should == '/forums'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "new_enclosing_resource_path to /forums/new" do
|
|
80
|
+
controller.new_enclosing_resource_path.should == '/forums/new'
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "enclosing_resource_tags_path to /forums/2/tags" do
|
|
84
|
+
controller.enclosing_resource_tags_path.should == '/forums/2/tags'
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "enclosing_resource_tag_path(9) to /forums/2/tags/9" do
|
|
88
|
+
controller.enclosing_resource_tag_path(9).should == '/forums/2/tags/9'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "enclosing_resource_tag_path(8,9) to /forums/8/tags/9" do
|
|
92
|
+
controller.enclosing_resource_tag_path(8,9).should == '/forums/8/tags/9'
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe ForumPostsController, " errors" do
|
|
97
|
+
|
|
98
|
+
it "should raise ResourceMismatch for /posts" do
|
|
99
|
+
lambda{ get :index }.should raise_error(ResourcesController::ResourceMismatch)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "should raise ResourceMismatch, when route does not contain the resource segment" do
|
|
103
|
+
lambda{ get :index, :foo_id => 1}.should raise_error(ResourcesController::ResourceMismatch)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
describe "resource_service in ForumPostsController" do
|
|
108
|
+
|
|
109
|
+
before(:each) do
|
|
110
|
+
@forum = Forum.create
|
|
111
|
+
@post = Post.create :forum_id => @forum.id
|
|
112
|
+
@other_forum = Forum.create
|
|
113
|
+
@other_post = Post.create :forum_id => @other_forum.id
|
|
114
|
+
|
|
115
|
+
get :index, :forum_id => @forum.id
|
|
116
|
+
@resource_service = controller.send :resource_service
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
it "should build new post with @forum foreign key with new" do
|
|
120
|
+
resource = @resource_service.new
|
|
121
|
+
resource.should be_kind_of(Post)
|
|
122
|
+
resource.forum_id.should == @forum.id
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
it "should find @post with find(@post.id)" do
|
|
126
|
+
resource = @resource_service.find(@post.id)
|
|
127
|
+
resource.should == @post
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "should raise RecordNotFound with find(@other_post.id)" do
|
|
131
|
+
lambda{ @resource_service.find(@other_post.id) }.should raise_error(ActiveRecord::RecordNotFound)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it "should find only posts belonging to @forum with find(:all)" do
|
|
135
|
+
resources = @resource_service.find(:all)
|
|
136
|
+
resources.should be == Post.find(:all, :conditions => "forum_id = #{@forum.id}")
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
describe ForumPostsController, ' order of before_filters' do
|
|
141
|
+
before do
|
|
142
|
+
@forum = Forum.create
|
|
143
|
+
get :index, :forum_id => @forum.id
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it { @controller.filter_trace.should == [:abstract, :posts, :load_enclosing, :forum_posts] }
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
describe "Requesting /forums/2/posts (testing the before filters)" do
|
|
150
|
+
include ForumPostsSpecHelper
|
|
151
|
+
|
|
152
|
+
before(:each) do
|
|
153
|
+
setup_mocks
|
|
154
|
+
@posts = mock('Posts')
|
|
155
|
+
@forum_posts.stub!(:find).and_return(@posts)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
def do_get
|
|
159
|
+
get :index, :forum_id => '2'
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "should find the forum" do
|
|
163
|
+
Forum.should_receive(:find).with('2').and_return(@forum)
|
|
164
|
+
do_get
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
it "should assign the form as other_name_for_forum" do
|
|
168
|
+
do_get
|
|
169
|
+
assigns[:other_name_for_forum].should == assigns[:forum]
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "should assign the found forum for the view" do
|
|
173
|
+
do_get
|
|
174
|
+
assigns[:forum].should == @forum
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "should assign the forum_posts association as the posts resource_service" do
|
|
178
|
+
@forum.should_receive(:posts).and_return(@forum_posts)
|
|
179
|
+
do_get
|
|
180
|
+
@controller.resource_service.should == @forum_posts
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
describe "Requesting /forums/2/posts using GET" do
|
|
185
|
+
include ForumPostsSpecHelper
|
|
186
|
+
|
|
187
|
+
before(:each) do
|
|
188
|
+
setup_mocks
|
|
189
|
+
@posts = mock('Posts')
|
|
190
|
+
@forum_posts.stub!(:find).and_return(@posts)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def do_get
|
|
194
|
+
get :index, :forum_id => '2'
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "should be successful" do
|
|
198
|
+
do_get
|
|
199
|
+
response.should be_success
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
it "should render index.rhtml" do
|
|
203
|
+
do_get
|
|
204
|
+
response.should render_template(:index)
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
it "should find all posts, in reverse order (because of AbstractPostsController)" do
|
|
208
|
+
@forum_posts.should_receive(:find).with(:all, :order => 'id DESC').and_return(@posts)
|
|
209
|
+
do_get
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
it "should assign the found posts for the view" do
|
|
213
|
+
do_get
|
|
214
|
+
assigns[:posts].should == @posts
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
describe "Requesting /forums/2/posts/1 using GET" do
|
|
219
|
+
include ForumPostsSpecHelper
|
|
220
|
+
|
|
221
|
+
before(:each) do
|
|
222
|
+
setup_mocks
|
|
223
|
+
@post = mock('a post')
|
|
224
|
+
@forum_posts.stub!(:find).and_return(@post)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
def do_get
|
|
228
|
+
get :show, :id => "1", :forum_id => "2"
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
it "should be successful" do
|
|
232
|
+
do_get
|
|
233
|
+
response.should be_success
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
it "should render show.rhtml" do
|
|
237
|
+
do_get
|
|
238
|
+
response.should render_template(:show)
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
it "should find the thing requested" do
|
|
242
|
+
@forum_posts.should_receive(:find).with("1").and_return(@post)
|
|
243
|
+
do_get
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
it "should assign the found thing for the view" do
|
|
247
|
+
do_get
|
|
248
|
+
assigns[:post].should == @post
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
describe "Requesting /forums/2/posts/new using GET" do
|
|
253
|
+
include ForumPostsSpecHelper
|
|
254
|
+
|
|
255
|
+
before(:each) do
|
|
256
|
+
setup_mocks
|
|
257
|
+
@post = mock('new Post')
|
|
258
|
+
@forum_posts.stub!(:build).and_return(@post)
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
def do_get
|
|
262
|
+
get :new, :forum_id => "2"
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
it "should be successful" do
|
|
266
|
+
do_get
|
|
267
|
+
response.should be_success
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
it "should render new.rhtml" do
|
|
271
|
+
do_get
|
|
272
|
+
response.should render_template(:new)
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
it "should build an new thing" do
|
|
276
|
+
@forum_posts.should_receive(:build).and_return(@post)
|
|
277
|
+
do_get
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
it "should not save the new thing" do
|
|
281
|
+
@post.should_not_receive(:save)
|
|
282
|
+
do_get
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
it "should assign the new thing for the view" do
|
|
286
|
+
do_get
|
|
287
|
+
assigns[:post].should == @post
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
describe "Requesting /forums/2/posts/1/edit using GET" do
|
|
292
|
+
include ForumPostsSpecHelper
|
|
293
|
+
|
|
294
|
+
before(:each) do
|
|
295
|
+
setup_mocks
|
|
296
|
+
@post = mock('Post')
|
|
297
|
+
@forum_posts.stub!(:find).and_return(@post)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
def do_get
|
|
301
|
+
get :edit, :id => "1", :forum_id => "2"
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
it "should be successful" do
|
|
305
|
+
do_get
|
|
306
|
+
response.should be_success
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
it "should render edit.rhtml" do
|
|
310
|
+
do_get
|
|
311
|
+
response.should render_template(:edit)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
it "should find the thing requested" do
|
|
315
|
+
@forum_posts.should_receive(:find).with("1").and_return(@post)
|
|
316
|
+
do_get
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
it "should assign the found Thing for the view" do
|
|
320
|
+
do_get
|
|
321
|
+
assigns(:post).should equal(@post)
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
describe "Requesting /forums/2/posts using POST" do
|
|
326
|
+
include ForumPostsSpecHelper
|
|
327
|
+
|
|
328
|
+
before(:each) do
|
|
329
|
+
setup_mocks
|
|
330
|
+
@post = mock('Post')
|
|
331
|
+
@post.stub!(:save).and_return(true)
|
|
332
|
+
@post.stub!(:to_param).and_return("1")
|
|
333
|
+
@forum_posts.stub!(:build).and_return(@post)
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def do_post
|
|
337
|
+
post :create, :post => {:name => 'Post'}, :forum_id => "2"
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
it "should build a new post" do
|
|
341
|
+
@forum_posts.should_receive(:build).with({'name' => 'Post'}).and_return(@post)
|
|
342
|
+
do_post
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
it "should attempt to save the new post" do
|
|
346
|
+
@post.should_receive(:save).and_return(true)
|
|
347
|
+
do_post
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
it "should redirect to the new post.save == true" do
|
|
351
|
+
do_post
|
|
352
|
+
response.should be_redirect
|
|
353
|
+
response.redirect_url.should == "http://test.host/forums/2/posts/1"
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
it "should render new when post.save == false" do
|
|
357
|
+
@post.stub!(:save).and_return(false)
|
|
358
|
+
do_post
|
|
359
|
+
response.should render_template(:new)
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
describe "Requesting /forums/2/posts/1 using PUT" do
|
|
364
|
+
include ForumPostsSpecHelper
|
|
365
|
+
|
|
366
|
+
before(:each) do
|
|
367
|
+
setup_mocks
|
|
368
|
+
@post = mock('Post').as_null_object
|
|
369
|
+
@post.stub!(:to_param).and_return("1")
|
|
370
|
+
@forum_posts.stub!(:find).and_return(@post)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def do_update
|
|
374
|
+
put :update, :id => "1", :forum_id => "2"
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
it "should find the post requested" do
|
|
378
|
+
@forum_posts.should_receive(:find).with("1").and_return(@post)
|
|
379
|
+
do_update
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
it "should update the found post" do
|
|
383
|
+
@post.should_receive(:update_attributes)
|
|
384
|
+
do_update
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
it "should assign the found post for the view" do
|
|
388
|
+
do_update
|
|
389
|
+
assigns(:post).should == @post
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
it "should redirect to the post" do
|
|
393
|
+
do_update
|
|
394
|
+
response.should be_redirect
|
|
395
|
+
response.redirect_url.should == "http://test.host/forums/2/posts/1"
|
|
396
|
+
end
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
describe "Requesting /forums/2/posts/1 using DELETE" do
|
|
400
|
+
include ForumPostsSpecHelper
|
|
401
|
+
|
|
402
|
+
before(:each) do
|
|
403
|
+
setup_mocks
|
|
404
|
+
@post = mock('Post').as_null_object
|
|
405
|
+
@forum_posts.stub!(:find).and_return(@post)
|
|
406
|
+
@forum_posts.stub!(:destroy)
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
def do_delete
|
|
410
|
+
delete :destroy, :id => "1", :forum_id => "2"
|
|
411
|
+
end
|
|
412
|
+
|
|
413
|
+
it "should find and destroy the post requested" do
|
|
414
|
+
@forum_posts.should_receive(:find).with("1").and_return(@post)
|
|
415
|
+
@forum_posts.should_receive(:destroy).with("1")
|
|
416
|
+
do_delete
|
|
417
|
+
assigns['post'].should == @post
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
it "should redirect to the things list" do
|
|
421
|
+
do_delete
|
|
422
|
+
response.should be_redirect
|
|
423
|
+
response.redirect_url.should == "http://test.host/forums/2/posts"
|
|
424
|
+
end
|
|
425
|
+
end
|
|
426
|
+
end
|