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.
Files changed (98) hide show
  1. data/.gitignore +7 -0
  2. data/CHANGELOG +355 -0
  3. data/Gemfile +5 -0
  4. data/Gemfile.lock.development +117 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.rdoc +71 -0
  7. data/Rakefile +33 -0
  8. data/Todo.txt +1 -0
  9. data/lib/rc_rails.rb +9 -0
  10. data/lib/resources_controller/actions.rb +147 -0
  11. data/lib/resources_controller/active_record/saved.rb +15 -0
  12. data/lib/resources_controller/helper.rb +123 -0
  13. data/lib/resources_controller/include_actions.rb +37 -0
  14. data/lib/resources_controller/named_route_helper.rb +154 -0
  15. data/lib/resources_controller/railtie.rb +14 -0
  16. data/lib/resources_controller/request_path_introspection.rb +83 -0
  17. data/lib/resources_controller/resource_methods.rb +32 -0
  18. data/lib/resources_controller/singleton_actions.rb +21 -0
  19. data/lib/resources_controller/specification.rb +119 -0
  20. data/lib/resources_controller/version.rb +3 -0
  21. data/lib/resources_controller.rb +849 -0
  22. data/resources_controller.gemspec +29 -0
  23. data/spec/app/database.yml +5 -0
  24. data/spec/app/views/accounts/show.html.erb +0 -0
  25. data/spec/app/views/addresses/edit.html.erb +0 -0
  26. data/spec/app/views/addresses/index.html.erb +0 -0
  27. data/spec/app/views/addresses/new.html.erb +0 -0
  28. data/spec/app/views/addresses/show.html.erb +0 -0
  29. data/spec/app/views/admin/forums/create.html.erb +0 -0
  30. data/spec/app/views/admin/forums/destroy.html.erb +0 -0
  31. data/spec/app/views/admin/forums/edit.html.erb +0 -0
  32. data/spec/app/views/admin/forums/index.html.erb +0 -0
  33. data/spec/app/views/admin/forums/new.html.erb +0 -0
  34. data/spec/app/views/admin/forums/show.html.erb +0 -0
  35. data/spec/app/views/admin/forums/update.html.erb +0 -0
  36. data/spec/app/views/comments/edit.html.erb +0 -0
  37. data/spec/app/views/comments/index.html.erb +0 -0
  38. data/spec/app/views/comments/new.html.erb +0 -0
  39. data/spec/app/views/comments/show.html.erb +0 -0
  40. data/spec/app/views/forum_posts/edit.html.erb +0 -0
  41. data/spec/app/views/forum_posts/index.html.erb +0 -0
  42. data/spec/app/views/forum_posts/new.html.erb +0 -0
  43. data/spec/app/views/forum_posts/show.html.erb +0 -0
  44. data/spec/app/views/forums/create.html.erb +0 -0
  45. data/spec/app/views/forums/destroy.html.erb +0 -0
  46. data/spec/app/views/forums/edit.html.erb +0 -0
  47. data/spec/app/views/forums/index.html.erb +0 -0
  48. data/spec/app/views/forums/new.html.erb +0 -0
  49. data/spec/app/views/forums/show.html.erb +0 -0
  50. data/spec/app/views/forums/update.html.erb +0 -0
  51. data/spec/app/views/infos/edit.html.erb +0 -0
  52. data/spec/app/views/infos/show.html.erb +0 -0
  53. data/spec/app/views/interests/index.html.erb +0 -0
  54. data/spec/app/views/interests/show.html.erb +0 -0
  55. data/spec/app/views/owners/edit.html.erb +0 -0
  56. data/spec/app/views/owners/new.html.erb +0 -0
  57. data/spec/app/views/owners/show.html.erb +0 -0
  58. data/spec/app/views/tags/index.html.erb +0 -0
  59. data/spec/app/views/tags/new.html.erb +0 -0
  60. data/spec/app/views/tags/show.html.erb +0 -0
  61. data/spec/app/views/users/edit.html.erb +0 -0
  62. data/spec/app/views/users/index.html.erb +0 -0
  63. data/spec/app/views/users/show.html.erb +0 -0
  64. data/spec/app.rb +315 -0
  65. data/spec/controllers/accounts_controller_spec.rb +77 -0
  66. data/spec/controllers/addresses_controller_spec.rb +346 -0
  67. data/spec/controllers/admin_forums_controller_spec.rb +638 -0
  68. data/spec/controllers/comments_controller_spec.rb +380 -0
  69. data/spec/controllers/comments_controller_with_models_spec.rb +202 -0
  70. data/spec/controllers/forum_posts_controller_spec.rb +426 -0
  71. data/spec/controllers/forums_controller_spec.rb +694 -0
  72. data/spec/controllers/infos_controller_spec.rb +71 -0
  73. data/spec/controllers/interests_controller_via_forum_spec.rb +80 -0
  74. data/spec/controllers/interests_controller_via_user_spec.rb +114 -0
  75. data/spec/controllers/owners_controller_spec.rb +277 -0
  76. data/spec/controllers/resource_saved_spec.rb +47 -0
  77. data/spec/controllers/resource_service_in_forums_controller_spec.rb +37 -0
  78. data/spec/controllers/resource_service_in_infos_controller_spec.rb +36 -0
  79. data/spec/controllers/resource_service_in_interests_controller_via_forum_spec.rb +51 -0
  80. data/spec/controllers/tags_controller_spec.rb +83 -0
  81. data/spec/controllers/tags_controller_via_account_info_spec.rb +131 -0
  82. data/spec/controllers/tags_controller_via_forum_post_comment_spec.rb +144 -0
  83. data/spec/controllers/tags_controller_via_forum_post_spec.rb +133 -0
  84. data/spec/controllers/tags_controller_via_forum_spec.rb +173 -0
  85. data/spec/controllers/tags_controller_via_user_address_spec.rb +130 -0
  86. data/spec/controllers/users_controller_spec.rb +248 -0
  87. data/spec/lib/action_view_helper_spec.rb +143 -0
  88. data/spec/lib/bug_0001_spec.rb +22 -0
  89. data/spec/lib/include_actions_spec.rb +35 -0
  90. data/spec/lib/load_enclosing_resources_spec.rb +245 -0
  91. data/spec/lib/request_path_introspection_spec.rb +130 -0
  92. data/spec/lib/resource_methods_spec.rb +204 -0
  93. data/spec/lib/resources_controller_spec.rb +57 -0
  94. data/spec/models/comment_saved_spec.rb +24 -0
  95. data/spec/rspec_generator_task.rb +105 -0
  96. data/spec/spec_helper.rb +17 -0
  97. data/spec/verify_rcov.rb +52 -0
  98. metadata +193 -0
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ module InfosControllerSpecHelper
4
+ def setup_mocks
5
+ @current_user = mock('user')
6
+ @current_user.stub!(:id).and_return('1')
7
+ @controller.stub!(:current_user).and_return(@current_user)
8
+ @info = mock('info')
9
+ @info.stub!(:id).and_return('3')
10
+ @current_user.stub!(:info).and_return(@info)
11
+ end
12
+ end
13
+
14
+ describe InfosController do
15
+ describe "Routing shortcuts for Infos should map" do
16
+ include InfosControllerSpecHelper
17
+
18
+ before(:each) do
19
+ setup_mocks
20
+ get :show
21
+ end
22
+
23
+ it "resource_path to /account/info" do
24
+ controller.resource_path.should == '/account/info'
25
+ end
26
+
27
+ it "resource_tags_path to /account/info/tags" do
28
+ controller.resource_tags_path.should == "/account/info/tags"
29
+ end
30
+ end
31
+
32
+ describe InfosController, " (its actions)" do
33
+ include InfosControllerSpecHelper
34
+
35
+ before do
36
+ setup_mocks
37
+ end
38
+
39
+ it "should not have ['new', 'index', 'destroy', 'create'] in action_methods" do
40
+ (@controller.class.send(:action_methods) & Set.new(['new', 'index', 'destroy', 'create'])).should be_empty
41
+ end
42
+
43
+ it "GET /account/info should be successful" do
44
+ get :show
45
+ response.should be_success
46
+ end
47
+
48
+ it "GET /account/info/edit should be successful" do
49
+ get :edit
50
+ response.should be_success
51
+ end
52
+
53
+ it "PUT /account/info should be successful" do
54
+ @info.stub!(:update_attributes).and_return(true)
55
+ put :update
56
+ response.should be_redirect
57
+ end
58
+
59
+ it "GET /account/info/new should raise ActionNotFound" do
60
+ lambda { get :new }.should raise_error(::AbstractController::ActionNotFound)
61
+ end
62
+
63
+ it "POST /account/info should raise ActionNotFound" do
64
+ lambda { post :create }.should raise_error(::AbstractController::ActionNotFound)
65
+ end
66
+
67
+ it "DELETE /account/info/new should raise ActionNotFound" do
68
+ lambda { delete :destroy }.should raise_error(::AbstractController::ActionNotFound)
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,80 @@
1
+ require 'spec_helper'
2
+
3
+ module InterestsViaForumSpecHelper
4
+ def setup_mocks
5
+ @forum = mock('Forum')
6
+ @forum_interests = mock('forum_interests assoc')
7
+ Forum.stub!(:find).and_return(@forum)
8
+ @forum.stub!(:interests).and_return(@forum_interests)
9
+ @forum.stub!(:to_param).and_return('1')
10
+ end
11
+ end
12
+
13
+ describe InterestsController do
14
+ describe "Routing shortcuts for Interests via Forum (forums/1/interests/2) should map" do
15
+ include InterestsViaForumSpecHelper
16
+
17
+ before(:each) do
18
+ setup_mocks
19
+ @interest = mock('Interest')
20
+ @interest.stub!(:to_param).and_return('2')
21
+ @forum_interests.stub!(:find).and_return(@interest)
22
+
23
+ get :show, :forum_id => "1", :id => "2"
24
+ end
25
+
26
+ it "resources_path to /forums/1/interests" do
27
+ controller.resources_path.should == '/forums/1/interests'
28
+ end
29
+
30
+ it "resource_path to /forums/1/interests/2" do
31
+ controller.resource_path.should == '/forums/1/interests/2'
32
+ end
33
+
34
+ it "resource_path(9) to /forums/1/interests/9" do
35
+ controller.resource_path(9).should == '/forums/1/interests/9'
36
+ end
37
+
38
+ it "edit_resource_path to /forums/1/interests/2/edit" do
39
+ controller.edit_resource_path.should == '/forums/1/interests/2/edit'
40
+ end
41
+
42
+ it "edit_resource_path(9) to /forums/1/interests/9/edit" do
43
+ controller.edit_resource_path(9).should == '/forums/1/interests/9/edit'
44
+ end
45
+
46
+ it "new_resource_path to /forums/1/interests/new" do
47
+ controller.new_resource_path.should == '/forums/1/interests/new'
48
+ end
49
+ end
50
+
51
+ describe "Requesting /forums/1/interests using GET" do
52
+ include InterestsViaForumSpecHelper
53
+
54
+ before(:each) do
55
+ setup_mocks
56
+ @interests = mock('Interests')
57
+ @forum_interests.stub!(:all).and_return(@interests)
58
+ end
59
+
60
+ def do_get
61
+ get :index, :forum_id => '1'
62
+ end
63
+
64
+ it "should find the forum" do
65
+ Forum.should_receive(:find).with('1').and_return(@forum)
66
+ do_get
67
+ end
68
+
69
+ it "should assign the found forum as :interested_in for the view" do
70
+ do_get
71
+ assigns[:interested_in].should == @forum
72
+ end
73
+
74
+ it "should assign the forum_interests association as the interests resource_service" do
75
+ @forum.should_receive(:interests).and_return(@forum_interests)
76
+ do_get
77
+ @controller.resource_service.should == @forum_interests
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,114 @@
1
+ require 'spec_helper'
2
+
3
+ module InterestsViaUserSpecHelper
4
+ def setup_mocks
5
+ @user = mock('User')
6
+ @user_interests = mock('user_interests assoc')
7
+ User.stub!(:find_by_login).and_return(@user)
8
+ @user.stub!(:interests).and_return(@user_interests)
9
+ @user.stub!(:to_param).and_return('dave')
10
+ end
11
+ end
12
+
13
+ describe InterestsController do
14
+ describe "Routing shortcuts for Interests via User (users/dave/interests/2) should map" do
15
+ include InterestsViaUserSpecHelper
16
+
17
+ before(:each) do
18
+ setup_mocks
19
+ @interest = mock('Interest')
20
+ @interest.stub!(:to_param).and_return('2')
21
+ @user_interests.stub!(:find).and_return(@interest)
22
+
23
+ get :show, :user_id => "dave", :id => "2"
24
+ end
25
+
26
+ it "resources_path to /users/dave/interests" do
27
+ controller.resources_path.should == '/users/dave/interests'
28
+ end
29
+
30
+ it "resource_path to /users/dave/interests/2" do
31
+ controller.resource_path.should == '/users/dave/interests/2'
32
+ end
33
+
34
+ it "resource_path(9) to /users/dave/interests/9" do
35
+ controller.resource_path(9).should == '/users/dave/interests/9'
36
+ end
37
+
38
+ it "edit_resource_path to /users/dave/interests/2/edit" do
39
+ controller.edit_resource_path.should == '/users/dave/interests/2/edit'
40
+ end
41
+
42
+ it "edit_resource_path(9) to /users/dave/interests/9/edit" do
43
+ controller.edit_resource_path(9).should == '/users/dave/interests/9/edit'
44
+ end
45
+
46
+ it "new_resource_path to /users/dave/interests/new" do
47
+ controller.new_resource_path.should == '/users/dave/interests/new'
48
+ end
49
+ end
50
+
51
+ describe "resource_service in InterestsController via Forum" do
52
+
53
+ before(:each) do
54
+ @user = User.create :login => 'dave'
55
+ @interest = Interest.create :interested_in_id => @user.id, :interested_in_type => 'User'
56
+ @other_user = User.create
57
+ @other_interest = Interest.create :interested_in_id => @other_user.id, :interested_in_type => 'User'
58
+
59
+ get :index, :user_id => @user.login
60
+ @resource_service = controller.send :resource_service
61
+ end
62
+
63
+ it "should build new interest with @user fk and type with new" do
64
+ resource = @resource_service.new
65
+ resource.should be_kind_of(Interest)
66
+ resource.interested_in_id.should == @user.id
67
+ resource.interested_in_type.should == 'User'
68
+ end
69
+
70
+ it "should find @interest with find(@interest.id)" do
71
+ resource = @resource_service.find(@interest.id)
72
+ resource.should == @interest
73
+ end
74
+
75
+ it "should raise RecordNotFound with find(@other_interest.id)" do
76
+ lambda{ @resource_service.find(@other_interest.id) }.should raise_error(ActiveRecord::RecordNotFound)
77
+ end
78
+
79
+ it "should find only interests belonging to @user with find(:all)" do
80
+ resources = @resource_service.find(:all)
81
+ resources.should be == Interest.find(:all, :conditions => "interested_in_id = #{@user.id} AND interested_in_type = 'User'")
82
+ end
83
+ end
84
+
85
+ describe "Requesting /users/dave/interests using GET" do
86
+ include InterestsViaUserSpecHelper
87
+
88
+ before(:each) do
89
+ setup_mocks
90
+ @interests = mock('Interests')
91
+ @user_interests.stub!(:all).and_return(@interests)
92
+ end
93
+
94
+ def do_get
95
+ get :index, :user_id => "dave"
96
+ end
97
+
98
+ it "should find the user" do
99
+ User.should_receive(:find_by_login).with('dave').and_return(@user)
100
+ do_get
101
+ end
102
+
103
+ it "should assign the found user as :interested_in for the view" do
104
+ do_get
105
+ assigns[:interested_in].should == @user
106
+ end
107
+
108
+ it "should assign the user_interests association as the interests resource_service" do
109
+ @user.should_receive(:interests).and_return(@user_interests)
110
+ do_get
111
+ @controller.resource_service.should == @user_interests
112
+ end
113
+ end
114
+ end
@@ -0,0 +1,277 @@
1
+ require 'spec_helper'
2
+
3
+ module OwnersControllerSpecHelper
4
+ def setup_mocks
5
+ @forum = mock('forum')
6
+ @forum.stub!(:id).and_return(2)
7
+ @forum.stub!(:to_param).and_return('2')
8
+ Forum.stub!(:find).and_return(@forum)
9
+ @owner = mock_model(User)
10
+ @forum.stub!(:owner).and_return(@owner)
11
+ end
12
+ end
13
+
14
+ describe OwnersController do
15
+ describe "Routing shortcuts for ForumOwner should map" do
16
+ include OwnersControllerSpecHelper
17
+
18
+ before(:each) do
19
+ setup_mocks
20
+ get :show, :forum_id => "2"
21
+ end
22
+
23
+ it "resource_path to /forums/2/owner" do
24
+ controller.resource_path.should == '/forums/2/owner'
25
+ end
26
+
27
+ it "resource_path(:foo => 'bar') to /forums/2/owner?foo=bar" do
28
+ controller.resource_path(:foo => 'bar').should == '/forums/2/owner?foo=bar'
29
+ end
30
+
31
+ it "edit_resource_path to /forums/2/owner/edit" do
32
+ controller.edit_resource_path.should == '/forums/2/owner/edit'
33
+ end
34
+
35
+ it "new_resource_path to /forums/2/owner/new" do
36
+ controller.new_resource_path.should == '/forums/2/owner/new'
37
+ end
38
+
39
+ it "resource_posts_path to /forums/2/owner/posts" do
40
+ controller.resource_posts_path.should == "/forums/2/owner/posts"
41
+ end
42
+
43
+ it "resource_posts_path(:foo => 'bar') to /forums/2/owner/posts?foo=bar" do
44
+ controller.resource_posts_path(:foo => 'bar').should == '/forums/2/owner/posts?foo=bar'
45
+ end
46
+
47
+ it "resource_post_path(5) to /forums/2/owner/posts/5" do
48
+ controller.resource_post_path(5).should == "/forums/2/owner/posts/5"
49
+ end
50
+
51
+ it "enclosing_resource_path to /forums/2" do
52
+ controller.enclosing_resource_path.should == "/forums/2"
53
+ end
54
+ end
55
+
56
+ describe OwnersController, "#resource_service" do
57
+ include OwnersControllerSpecHelper
58
+
59
+ before(:each) do
60
+ setup_mocks
61
+ get :show, :forum_id => "2"
62
+ @resource_service = controller.send :resource_service
63
+ end
64
+
65
+ it ".new should call :build_owner on @forum" do
66
+ @forum.should_receive(:build_owner).with(:args => 'args')
67
+ @resource_service.new :args => 'args'
68
+ end
69
+
70
+ it ".find should call :owner on @forum" do
71
+ @forum.should_receive(:owner)
72
+ @resource_service.find
73
+ end
74
+ end
75
+
76
+ describe "Requesting /forums/2/owner using GET" do
77
+ include OwnersControllerSpecHelper
78
+
79
+ before(:each) do
80
+ setup_mocks
81
+ end
82
+
83
+ def do_get
84
+ get :show, :forum_id => "2"
85
+ end
86
+
87
+ it "should be successful" do
88
+ do_get
89
+ response.should be_success
90
+ end
91
+
92
+ it "should render show.rhtml" do
93
+ do_get
94
+ response.should render_template(:show)
95
+ end
96
+
97
+ it "should find the forum requested" do
98
+ Forum.should_receive(:find).with("2").and_return(@forum)
99
+ do_get
100
+ end
101
+
102
+ it "should assign the found forum for the view" do
103
+ do_get
104
+ assigns[:forum].should == @forum
105
+ end
106
+
107
+ it "should find the owner from forum.owner" do
108
+ @forum.should_receive(:owner).and_return(@owner)
109
+ do_get
110
+ end
111
+
112
+ it "should assign the found owner for the view" do
113
+ do_get
114
+ assigns[:owner].should == @owner
115
+ end
116
+ end
117
+
118
+ describe "Requesting /forums/2/owner/new using GET" do
119
+ include OwnersControllerSpecHelper
120
+
121
+ before(:each) do
122
+ setup_mocks
123
+ @forum.stub!(:build_owner).and_return(@owner)
124
+ end
125
+
126
+ def do_get
127
+ get :new, :forum_id => "2"
128
+ end
129
+
130
+ it "should be successful" do
131
+ do_get
132
+ response.should be_success
133
+ end
134
+
135
+ it "should render new.rhtml" do
136
+ do_get
137
+ response.should render_template(:new)
138
+ end
139
+
140
+ it "should build a new owner" do
141
+ @forum.should_receive(:build_owner).and_return(@owner)
142
+ do_get
143
+ end
144
+ end
145
+
146
+ describe "Requesting /forums/2/owner/edit using GET" do
147
+ include OwnersControllerSpecHelper
148
+
149
+ before(:each) do
150
+ setup_mocks
151
+ end
152
+
153
+ def do_get
154
+ get :edit, :forum_id => "2"
155
+ end
156
+
157
+ it "should be successful" do
158
+ do_get
159
+ response.should be_success
160
+ end
161
+
162
+ it "should render edit.rhtml" do
163
+ do_get
164
+ response.should render_template(:edit)
165
+ end
166
+
167
+ it "should find the owner from forum.owner" do
168
+ @forum.should_receive(:owner).and_return(@owner)
169
+ do_get
170
+ end
171
+ end
172
+
173
+ describe "Requesting /forums/2/owner using POST" do
174
+ include OwnersControllerSpecHelper
175
+
176
+ before(:each) do
177
+ setup_mocks
178
+ @owner.stub!(:save).and_return(true)
179
+ @owner.stub!(:to_param).and_return("1")
180
+ @forum.stub!(:build_owner).and_return(@owner)
181
+ end
182
+
183
+ def do_post
184
+ post :create, :forum_id => 2, :owner => {:name => 'Fred'}
185
+ end
186
+
187
+ it "should build a new owner" do
188
+ @forum.should_receive(:build_owner).with({'name' => 'Fred'}).and_return(@owner)
189
+ do_post
190
+ end
191
+
192
+ it "should set the flash notice" do
193
+ do_post
194
+ flash[:notice].should == "Owner was successfully created."
195
+ end
196
+
197
+ it "should redirect to the new owner" do
198
+ do_post
199
+ response.should be_redirect
200
+ response.redirect_url.should == "http://test.host/forums/2/owner"
201
+ end
202
+
203
+ it "should render new when post unsuccesful" do
204
+ @owner.stub!(:save).and_return(false)
205
+ do_post
206
+ response.should render_template('new')
207
+ end
208
+ end
209
+
210
+
211
+ describe "Requesting /forums/2/owner using PUT" do
212
+ include OwnersControllerSpecHelper
213
+
214
+ before(:each) do
215
+ setup_mocks
216
+ @owner.stub!(:update_attributes).and_return(true)
217
+ end
218
+
219
+ def do_update
220
+ put :update, :forum_id => "2", :owner => {:name => 'Fred'}
221
+ end
222
+
223
+ it "should find the owner from forum.owner" do
224
+ @forum.should_receive(:owner).and_return(@owner)
225
+ do_update
226
+ end
227
+
228
+ it "should set the flash notice" do
229
+ do_update
230
+ flash[:notice].should == "Owner was successfully updated."
231
+ end
232
+
233
+ it "should update the owner" do
234
+ @owner.should_receive(:update_attributes).with('name' => 'Fred')
235
+ do_update
236
+ end
237
+
238
+ it "should redirect to the owner" do
239
+ do_update
240
+ response.should redirect_to("http://test.host/forums/2/owner")
241
+ end
242
+ end
243
+
244
+
245
+ describe "Requesting /forums/2/owner using DELETE" do
246
+ include OwnersControllerSpecHelper
247
+
248
+ before(:each) do
249
+ setup_mocks
250
+ @owner.stub!(:destroy).and_return(@owner)
251
+ end
252
+
253
+ def do_delete
254
+ delete :destroy, :forum_id => "2"
255
+ end
256
+
257
+ it "should find the owner from forum.owner" do
258
+ @forum.should_receive(:owner).and_return(@owner)
259
+ do_delete
260
+ end
261
+
262
+ it "should call destroy on the owner" do
263
+ @owner.should_receive(:destroy).and_return(@owner)
264
+ do_delete
265
+ end
266
+
267
+ it "should set the flash notice" do
268
+ do_delete
269
+ flash[:notice].should == 'Owner was successfully destroyed.'
270
+ end
271
+
272
+ it "should redirect to forums/2" do
273
+ do_delete
274
+ response.should redirect_to("http://test.host/forums/2")
275
+ end
276
+ end
277
+ end
@@ -0,0 +1,47 @@
1
+ require 'spec_helper'
2
+
3
+ describe CommentsController, "#resource_saved" do
4
+ describe "Comment.new(<invalid attrs>)" do
5
+ before { @controller.resource = Comment.new }
6
+
7
+ it { @controller.should_not be_resource_saved }
8
+
9
+ describe ".save" do
10
+ before { @controller.resource.save }
11
+
12
+ it { @controller.should_not be_resource_saved }
13
+
14
+ describe "then update_attributes(<valid attrs>)" do
15
+ before { @controller.resource.update_attributes :user => User.create!, :post => Post.create! }
16
+
17
+ it { @controller.should be_resource_saved }
18
+ end
19
+ end
20
+ end
21
+
22
+ describe "Comment.find(<id>)" do
23
+ before do
24
+ Comment.create! :user => User.create!, :post => Post.create!
25
+ @controller.resource = Comment.find(:first)
26
+ end
27
+
28
+ it { @controller.should be_resource_saved }
29
+
30
+ it ".save should be saved" do
31
+ @controller.resource.save
32
+ @controller.should be_resource_saved
33
+ end
34
+
35
+ describe "then update_attributes(<invalid attrs>)" do
36
+ before { @controller.resource.update_attributes :user => nil }
37
+
38
+ it { @controller.should_not be_resource_saved }
39
+ end
40
+
41
+ describe "then update_attributes(<new valid attrs>)" do
42
+ before { @controller.resource.update_attributes :user => User.create! }
43
+
44
+ it { @controller.should be_resource_saved }
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe ForumsController do
4
+ describe "resource_service in ForumsController" do
5
+
6
+ before(:each) do
7
+ @forum = Forum.create
8
+
9
+ get :index
10
+ @resource_service = controller.send :resource_service
11
+ end
12
+
13
+ it "should build new forum with new" do
14
+ resource = @resource_service.new
15
+ resource.should be_kind_of(Forum)
16
+ end
17
+
18
+ it "should find @forum with find(@forum.id)" do
19
+ resource = @resource_service.find(@forum.id)
20
+ resource.should == @forum
21
+ end
22
+
23
+ it "should find all forums with find(:all)" do
24
+ resources = @resource_service.find(:all)
25
+ resources.should == Forum.find(:all)
26
+ end
27
+
28
+ it "should destroy the forum with destroy(@forum.id)" do
29
+ lambda { @resource_service.destroy(@forum.id) }.should change(Forum, :count).by(-1)
30
+ lambda { Forum.find(@forum.id) }.should raise_error(ActiveRecord::RecordNotFound)
31
+ end
32
+
33
+ it "should return the destroyed forum with destroy(@forum.id)" do
34
+ @resource_service.destroy(@forum.id).should == @forum
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe InfosController do
4
+ describe "resource_service in InfosController via Account(a user)" do
5
+
6
+ before(:each) do
7
+ @account = User.create!
8
+ @info = Info.create! :user_id => @account.id
9
+
10
+ @controller.stub!(:current_user).and_return(@account)
11
+
12
+ get :show, :resource_path => '/account/info'
13
+ @resource_service = controller.send :resource_service
14
+ end
15
+
16
+ it "should build new interest on the account" do
17
+ resource = @resource_service.new
18
+ resource.should be_kind_of(Info)
19
+ resource.user_id.should == @account.id
20
+ end
21
+
22
+ it "should find @info with find" do
23
+ resource = @resource_service.find
24
+ resource.should == @info
25
+ end
26
+
27
+ it "should destroy the info with destroy" do
28
+ lambda { @resource_service.destroy }.should change(Info, :count).by(-1)
29
+ lambda { Info.find(@info.id) }.should raise_error(ActiveRecord::RecordNotFound)
30
+ end
31
+
32
+ it "should return the destroyed info with destroy" do
33
+ @resource_service.destroy.should == @info
34
+ end
35
+ end
36
+ end