rc_rails 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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