josevalim-inherited_resources 0.3 → 0.4
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/CHANGELOG +7 -0
- data/README +30 -1
- data/lib/inherited_resources/base.rb +1 -3
- data/lib/inherited_resources/belongs_to_helpers.rb +6 -30
- data/lib/inherited_resources/class_methods.rb +241 -4
- data/lib/inherited_resources/polymorphic_helpers.rb +47 -2
- data/lib/inherited_resources/url_helpers.rb +2 -1
- data/test/belongs_to_test.rb +66 -76
- data/test/class_methods_test.rb +111 -2
- data/test/optional_belongs_to_test.rb +190 -0
- data/test/polymorphic_test.rb +111 -0
- data/test/singleton_test.rb +83 -0
- data/test/url_helpers_test.rb +36 -4
- data/test/views/products/edit.html.erb +1 -0
- data/test/views/products/index.html.erb +1 -0
- data/test/views/products/new.html.erb +1 -0
- data/test/views/products/show.html.erb +1 -0
- metadata +10 -7
- data/lib/inherited_resources/belongs_to.rb +0 -227
- data/test/belongs_to_base_test.rb +0 -268
- data/test/polymorphic_base_test.rb +0 -282
- data/test/singleton_base_test.rb +0 -226
@@ -1,268 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
2
|
-
|
3
|
-
# This test file is instead to test the how controller flow and actions
|
4
|
-
# using a belongs_to association. This is done using mocks a la rspec.
|
5
|
-
#
|
6
|
-
class Post
|
7
|
-
end
|
8
|
-
|
9
|
-
class Comment
|
10
|
-
def self.human_name; 'Comment'; end
|
11
|
-
end
|
12
|
-
|
13
|
-
class CommentsController < InheritedResources::Base
|
14
|
-
belongs_to :post
|
15
|
-
end
|
16
|
-
|
17
|
-
# Create a TestHelper module with some helpers
|
18
|
-
module CommentTestHelper
|
19
|
-
def setup
|
20
|
-
@controller = CommentsController.new
|
21
|
-
@controller.request = @request = ActionController::TestRequest.new
|
22
|
-
@controller.response = @response = ActionController::TestResponse.new
|
23
|
-
end
|
24
|
-
|
25
|
-
protected
|
26
|
-
def mock_post(stubs={})
|
27
|
-
@mock_post ||= mock(stubs)
|
28
|
-
end
|
29
|
-
|
30
|
-
def mock_comment(stubs={})
|
31
|
-
@mock_comment ||= mock(stubs)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
class IndexActionBelongsToTest < TEST_CLASS
|
36
|
-
include CommentTestHelper
|
37
|
-
|
38
|
-
def test_expose_all_comments_as_instance_variable
|
39
|
-
Post.expects(:find).with('37').returns(mock_post)
|
40
|
-
mock_post.expects(:comments).returns(Comment)
|
41
|
-
Comment.expects(:find).with(:all).returns([mock_comment])
|
42
|
-
get :index, :post_id => '37'
|
43
|
-
assert_equal mock_post, assigns(:post)
|
44
|
-
assert_equal [mock_comment], assigns(:comments)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_controller_should_render_index
|
48
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
49
|
-
Comment.stubs(:find).returns([mock_comment])
|
50
|
-
get :index
|
51
|
-
assert_response :success
|
52
|
-
assert_equal 'Index HTML', @response.body.strip
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_render_all_comments_as_xml_when_mime_type_is_xml
|
56
|
-
@request.accept = 'application/xml'
|
57
|
-
Post.expects(:find).with('37').returns(mock_post)
|
58
|
-
mock_post.expects(:comments).returns(Comment)
|
59
|
-
Comment.expects(:find).with(:all).returns(mock_comment)
|
60
|
-
mock_comment.expects(:to_xml).returns('Generated XML')
|
61
|
-
get :index, :post_id => '37'
|
62
|
-
assert_response :success
|
63
|
-
assert_equal 'Generated XML', @response.body
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
class ShowActionBelongsToTest < TEST_CLASS
|
68
|
-
include CommentTestHelper
|
69
|
-
|
70
|
-
def test_expose_the_resquested_comment
|
71
|
-
Post.expects(:find).with('37').returns(mock_post)
|
72
|
-
mock_post.expects(:comments).returns(Comment)
|
73
|
-
Comment.expects(:find).with('42').returns(mock_comment)
|
74
|
-
get :show, :id => '42', :post_id => '37'
|
75
|
-
assert_equal mock_post, assigns(:post)
|
76
|
-
assert_equal mock_comment, assigns(:comment)
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_controller_should_render_show
|
80
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
81
|
-
Comment.stubs(:find).returns(mock_comment)
|
82
|
-
get :show
|
83
|
-
assert_response :success
|
84
|
-
assert_equal 'Show HTML', @response.body.strip
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_render_exposed_comment_as_xml_when_mime_type_is_xml
|
88
|
-
@request.accept = 'application/xml'
|
89
|
-
Post.expects(:find).with('37').returns(mock_post)
|
90
|
-
mock_post.expects(:comments).returns(Comment)
|
91
|
-
Comment.expects(:find).with('42').returns(mock_comment)
|
92
|
-
mock_comment.expects(:to_xml).returns("Generated XML")
|
93
|
-
get :show, :id => '42', :post_id => '37'
|
94
|
-
assert_response :success
|
95
|
-
assert_equal 'Generated XML', @response.body
|
96
|
-
end
|
97
|
-
end
|
98
|
-
|
99
|
-
class NewActionBelongsToTest < TEST_CLASS
|
100
|
-
include CommentTestHelper
|
101
|
-
|
102
|
-
def test_expose_a_new_comment
|
103
|
-
Post.expects(:find).with('37').returns(mock_post)
|
104
|
-
mock_post.expects(:comments).returns(Comment)
|
105
|
-
Comment.expects(:build).returns(mock_comment)
|
106
|
-
get :new, :post_id => '37'
|
107
|
-
assert_equal mock_post, assigns(:post)
|
108
|
-
assert_equal mock_comment, assigns(:comment)
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_controller_should_render_new
|
112
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
113
|
-
Comment.stubs(:build).returns(mock_comment)
|
114
|
-
get :new
|
115
|
-
assert_response :success
|
116
|
-
assert_equal 'New HTML', @response.body.strip
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_render_exposed_a_new_comment_as_xml_when_mime_type_is_xml
|
120
|
-
@request.accept = 'application/xml'
|
121
|
-
Post.expects(:find).with('37').returns(mock_post)
|
122
|
-
mock_post.expects(:comments).returns(Comment)
|
123
|
-
Comment.expects(:build).returns(mock_comment)
|
124
|
-
mock_comment.expects(:to_xml).returns("Generated XML")
|
125
|
-
get :new, :post_id => '37'
|
126
|
-
assert_equal 'Generated XML', @response.body
|
127
|
-
assert_response :success
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
class EditActionBelongsToTest < TEST_CLASS
|
132
|
-
include CommentTestHelper
|
133
|
-
|
134
|
-
def test_expose_the_resquested_comment
|
135
|
-
Post.expects(:find).with('37').returns(mock_post)
|
136
|
-
mock_post.expects(:comments).returns(Comment)
|
137
|
-
Comment.expects(:find).with('42').returns(mock_comment)
|
138
|
-
get :edit, :id => '42', :post_id => '37'
|
139
|
-
assert_equal mock_post, assigns(:post)
|
140
|
-
assert_equal mock_comment, assigns(:comment)
|
141
|
-
assert_response :success
|
142
|
-
end
|
143
|
-
|
144
|
-
def test_controller_should_render_edit
|
145
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
146
|
-
Comment.stubs(:find).returns(mock_comment)
|
147
|
-
get :edit
|
148
|
-
assert_response :success
|
149
|
-
assert_equal 'Edit HTML', @response.body.strip
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
class CreateActionBelongsToTest < TEST_CLASS
|
154
|
-
include CommentTestHelper
|
155
|
-
|
156
|
-
def test_expose_a_newly_create_comment_when_saved_with_success
|
157
|
-
Post.expects(:find).with('37').returns(mock_post)
|
158
|
-
mock_post.expects(:comments).returns(Comment)
|
159
|
-
Comment.expects(:build).with({'these' => 'params'}).returns(mock_comment(:save => true))
|
160
|
-
post :create, :post_id => '37', :comment => {:these => 'params'}
|
161
|
-
assert_equal mock_post, assigns(:post)
|
162
|
-
assert_equal mock_comment, assigns(:comment)
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_redirect_to_the_created_comment
|
166
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
167
|
-
Comment.stubs(:build).returns(mock_comment(:save => true))
|
168
|
-
@controller.expects(:resource_url).returns('http://test.host/').times(2)
|
169
|
-
post :create
|
170
|
-
assert_redirected_to 'http://test.host/'
|
171
|
-
end
|
172
|
-
|
173
|
-
def test_show_flash_message_when_success
|
174
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
175
|
-
Comment.stubs(:build).returns(mock_comment(:save => true))
|
176
|
-
post :create
|
177
|
-
assert_equal flash[:notice], 'Comment was successfully created.'
|
178
|
-
end
|
179
|
-
|
180
|
-
def test_render_new_template_when_comment_cannot_be_saved
|
181
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
182
|
-
Comment.stubs(:build).returns(mock_comment(:save => false, :errors => []))
|
183
|
-
post :create
|
184
|
-
assert_response :success
|
185
|
-
assert_template :new
|
186
|
-
end
|
187
|
-
|
188
|
-
def test_dont_show_flash_message_when_comment_cannot_be_saved
|
189
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
190
|
-
Comment.stubs(:build).returns(mock_comment(:save => false, :errors => []))
|
191
|
-
post :create
|
192
|
-
assert flash.empty?
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
class UpdateActionBelongsToTest < TEST_CLASS
|
197
|
-
include CommentTestHelper
|
198
|
-
|
199
|
-
def test_update_the_requested_object
|
200
|
-
Post.expects(:find).with('37').returns(mock_post)
|
201
|
-
mock_post.expects(:comments).returns(Comment)
|
202
|
-
Comment.expects(:find).with('42').returns(mock_comment)
|
203
|
-
mock_comment.expects(:update_attributes).with({'these' => 'params'}).returns(true)
|
204
|
-
put :update, :id => '42', :post_id => '37', :comment => {:these => 'params'}
|
205
|
-
assert_equal mock_post, assigns(:post)
|
206
|
-
assert_equal mock_comment, assigns(:comment)
|
207
|
-
end
|
208
|
-
|
209
|
-
def test_redirect_to_the_created_comment
|
210
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
211
|
-
Comment.stubs(:find).returns(mock_comment(:update_attributes => true))
|
212
|
-
@controller.expects(:resource_url).returns('http://test.host/')
|
213
|
-
put :update
|
214
|
-
assert_redirected_to 'http://test.host/'
|
215
|
-
end
|
216
|
-
|
217
|
-
def test_show_flash_message_when_success
|
218
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
219
|
-
Comment.stubs(:find).returns(mock_comment(:update_attributes => true))
|
220
|
-
put :update
|
221
|
-
assert_equal flash[:notice], 'Comment was successfully updated.'
|
222
|
-
end
|
223
|
-
|
224
|
-
def test_render_edit_template_when_comment_cannot_be_saved
|
225
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
226
|
-
Comment.stubs(:find).returns(mock_comment(:update_attributes => false, :errors => []))
|
227
|
-
put :update
|
228
|
-
assert_response :success
|
229
|
-
assert_template :edit
|
230
|
-
end
|
231
|
-
|
232
|
-
def test_dont_show_flash_message_when_comment_cannot_be_saved
|
233
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
234
|
-
Comment.stubs(:find).returns(mock_comment(:update_attributes => false, :errors => []))
|
235
|
-
put :update
|
236
|
-
assert flash.empty?
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
class DestroyActionBelongsToTest < TEST_CLASS
|
241
|
-
include CommentTestHelper
|
242
|
-
|
243
|
-
def test_the_resquested_comment_is_destroyed
|
244
|
-
Post.expects(:find).with('37').returns(mock_post)
|
245
|
-
mock_post.expects(:comments).returns(Comment)
|
246
|
-
Comment.expects(:find).with('42').returns(mock_comment)
|
247
|
-
mock_comment.expects(:destroy)
|
248
|
-
delete :destroy, :id => '42', :post_id => '37'
|
249
|
-
assert_equal mock_post, assigns(:post)
|
250
|
-
assert_equal mock_comment, assigns(:comment)
|
251
|
-
end
|
252
|
-
|
253
|
-
def test_show_flash_message
|
254
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
255
|
-
Comment.stubs(:find).returns(mock_comment(:destroy => true))
|
256
|
-
delete :destroy
|
257
|
-
assert_equal flash[:notice], 'Comment was successfully destroyed.'
|
258
|
-
end
|
259
|
-
|
260
|
-
def test_redirects_to_comments_list
|
261
|
-
Post.stubs(:find).returns(mock_post(:comments => Comment))
|
262
|
-
Comment.stubs(:find).returns(mock_comment(:destroy => true))
|
263
|
-
@controller.expects(:collection_url).returns('http://test.host/')
|
264
|
-
delete :destroy
|
265
|
-
assert_redirected_to 'http://test.host/'
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
@@ -1,282 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/test_helper'
|
2
|
-
|
3
|
-
class Factory; end
|
4
|
-
class Company; end
|
5
|
-
|
6
|
-
class Employee
|
7
|
-
def self.human_name; 'Employee'; end
|
8
|
-
end
|
9
|
-
|
10
|
-
class EmployeesController < InheritedResources::Base
|
11
|
-
belongs_to :factory, :company, :polymorphic => true
|
12
|
-
end
|
13
|
-
|
14
|
-
# Create a TestHelper module with some helpers
|
15
|
-
module EmployeeTestHelper
|
16
|
-
def setup
|
17
|
-
@controller = EmployeesController.new
|
18
|
-
@controller.request = @request = ActionController::TestRequest.new
|
19
|
-
@controller.response = @response = ActionController::TestResponse.new
|
20
|
-
end
|
21
|
-
|
22
|
-
protected
|
23
|
-
def mock_factory(stubs={})
|
24
|
-
@mock_factory ||= mock(stubs)
|
25
|
-
end
|
26
|
-
|
27
|
-
def mock_employee(stubs={})
|
28
|
-
@mock_employee ||= mock(stubs)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
class IndexActionPolymorphicTest < TEST_CLASS
|
33
|
-
include EmployeeTestHelper
|
34
|
-
|
35
|
-
def test_expose_all_employees_as_instance_variable
|
36
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
37
|
-
mock_factory.expects(:employees).returns(Employee)
|
38
|
-
Employee.expects(:find).with(:all).returns([mock_employee])
|
39
|
-
get :index, :factory_id => '37'
|
40
|
-
assert_equal mock_factory, assigns(:factory)
|
41
|
-
assert_equal [mock_employee], assigns(:employees)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_controller_should_render_index
|
45
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
46
|
-
Employee.stubs(:find).returns([mock_employee])
|
47
|
-
get :index, :factory_id => '37'
|
48
|
-
assert_response :success
|
49
|
-
assert_equal 'Index HTML', @response.body.strip
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_render_all_employees_as_xml_when_mime_type_is_xml
|
53
|
-
@request.accept = 'application/xml'
|
54
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
55
|
-
mock_factory.expects(:employees).returns(Employee)
|
56
|
-
Employee.expects(:find).with(:all).returns(mock_employee)
|
57
|
-
mock_employee.expects(:to_xml).returns('Generated XML')
|
58
|
-
get :index, :factory_id => '37'
|
59
|
-
assert_response :success
|
60
|
-
assert_equal 'Generated XML', @response.body
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
class ShowActionPolymorphicTest < TEST_CLASS
|
65
|
-
include EmployeeTestHelper
|
66
|
-
|
67
|
-
def test_expose_the_resquested_employee
|
68
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
69
|
-
mock_factory.expects(:employees).returns(Employee)
|
70
|
-
Employee.expects(:find).with('42').returns(mock_employee)
|
71
|
-
get :show, :id => '42', :factory_id => '37'
|
72
|
-
assert_equal mock_factory, assigns(:factory)
|
73
|
-
assert_equal mock_employee, assigns(:employee)
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_controller_should_render_show
|
77
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
78
|
-
Employee.stubs(:find).returns(mock_employee)
|
79
|
-
get :show, :factory_id => '37'
|
80
|
-
assert_response :success
|
81
|
-
assert_equal 'Show HTML', @response.body.strip
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_render_exposed_employee_as_xml_when_mime_type_is_xml
|
85
|
-
@request.accept = 'application/xml'
|
86
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
87
|
-
mock_factory.expects(:employees).returns(Employee)
|
88
|
-
Employee.expects(:find).with('42').returns(mock_employee)
|
89
|
-
mock_employee.expects(:to_xml).returns("Generated XML")
|
90
|
-
get :show, :id => '42', :factory_id => '37'
|
91
|
-
assert_response :success
|
92
|
-
assert_equal 'Generated XML', @response.body
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
class NewActionPolymorphicTest < TEST_CLASS
|
97
|
-
include EmployeeTestHelper
|
98
|
-
|
99
|
-
def test_expose_a_new_employee
|
100
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
101
|
-
mock_factory.expects(:employees).returns(Employee)
|
102
|
-
Employee.expects(:build).returns(mock_employee)
|
103
|
-
get :new, :factory_id => '37'
|
104
|
-
assert_equal mock_factory, assigns(:factory)
|
105
|
-
assert_equal mock_employee, assigns(:employee)
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_controller_should_render_new
|
109
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
110
|
-
Employee.stubs(:build).returns(mock_employee)
|
111
|
-
get :new, :factory_id => '37'
|
112
|
-
assert_response :success
|
113
|
-
assert_equal 'New HTML', @response.body.strip
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_render_exposed_a_new_employee_as_xml_when_mime_type_is_xml
|
117
|
-
@request.accept = 'application/xml'
|
118
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
119
|
-
mock_factory.expects(:employees).returns(Employee)
|
120
|
-
Employee.expects(:build).returns(mock_employee)
|
121
|
-
mock_employee.expects(:to_xml).returns("Generated XML")
|
122
|
-
get :new, :factory_id => '37'
|
123
|
-
assert_equal 'Generated XML', @response.body
|
124
|
-
assert_response :success
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
class EditActionPolymorphicTest < TEST_CLASS
|
129
|
-
include EmployeeTestHelper
|
130
|
-
|
131
|
-
def test_expose_the_resquested_employee
|
132
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
133
|
-
mock_factory.expects(:employees).returns(Employee)
|
134
|
-
Employee.expects(:find).with('42').returns(mock_employee)
|
135
|
-
get :edit, :id => '42', :factory_id => '37'
|
136
|
-
assert_equal mock_factory, assigns(:factory)
|
137
|
-
assert_equal mock_employee, assigns(:employee)
|
138
|
-
assert_response :success
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_controller_should_render_edit
|
142
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
143
|
-
Employee.stubs(:find).returns(mock_employee)
|
144
|
-
get :edit, :factory_id => '37'
|
145
|
-
assert_response :success
|
146
|
-
assert_equal 'Edit HTML', @response.body.strip
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
class CreateActionPolymorphicTest < TEST_CLASS
|
151
|
-
include EmployeeTestHelper
|
152
|
-
|
153
|
-
def test_expose_a_newly_create_employee_when_saved_with_success
|
154
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
155
|
-
mock_factory.expects(:employees).returns(Employee)
|
156
|
-
Employee.expects(:build).with({'these' => 'params'}).returns(mock_employee(:save => true))
|
157
|
-
post :create, :factory_id => '37', :employee => {:these => 'params'}
|
158
|
-
assert_equal mock_factory, assigns(:factory)
|
159
|
-
assert_equal mock_employee, assigns(:employee)
|
160
|
-
end
|
161
|
-
|
162
|
-
def test_redirect_to_the_created_employee
|
163
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
164
|
-
Employee.stubs(:build).returns(mock_employee(:save => true))
|
165
|
-
@controller.expects(:resource_url).returns('http://test.host/').times(2)
|
166
|
-
post :create, :factory_id => '37'
|
167
|
-
assert_redirected_to 'http://test.host/'
|
168
|
-
end
|
169
|
-
|
170
|
-
def test_show_flash_message_when_success
|
171
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
172
|
-
Employee.stubs(:build).returns(mock_employee(:save => true))
|
173
|
-
post :create, :factory_id => '37'
|
174
|
-
assert_equal flash[:notice], 'Employee was successfully created.'
|
175
|
-
end
|
176
|
-
|
177
|
-
def test_render_new_template_when_employee_cannot_be_saved
|
178
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
179
|
-
Employee.stubs(:build).returns(mock_employee(:save => false, :errors => []))
|
180
|
-
post :create, :factory_id => '37'
|
181
|
-
assert_response :success
|
182
|
-
assert_template :new
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_dont_show_flash_message_when_employee_cannot_be_saved
|
186
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
187
|
-
Employee.stubs(:build).returns(mock_employee(:save => false, :errors => []))
|
188
|
-
post :create, :factory_id => '37'
|
189
|
-
assert flash.empty?
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
class UpdateActionPolymorphicTest < TEST_CLASS
|
194
|
-
include EmployeeTestHelper
|
195
|
-
|
196
|
-
def test_update_the_requested_object
|
197
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
198
|
-
mock_factory.expects(:employees).returns(Employee)
|
199
|
-
Employee.expects(:find).with('42').returns(mock_employee)
|
200
|
-
mock_employee.expects(:update_attributes).with({'these' => 'params'}).returns(true)
|
201
|
-
put :update, :id => '42', :factory_id => '37', :employee => {:these => 'params'}
|
202
|
-
assert_equal mock_factory, assigns(:factory)
|
203
|
-
assert_equal mock_employee, assigns(:employee)
|
204
|
-
end
|
205
|
-
|
206
|
-
def test_redirect_to_the_created_employee
|
207
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
208
|
-
Employee.stubs(:find).returns(mock_employee(:update_attributes => true))
|
209
|
-
@controller.expects(:resource_url).returns('http://test.host/')
|
210
|
-
put :update, :factory_id => '37'
|
211
|
-
assert_redirected_to 'http://test.host/'
|
212
|
-
end
|
213
|
-
|
214
|
-
def test_show_flash_message_when_success
|
215
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
216
|
-
Employee.stubs(:find).returns(mock_employee(:update_attributes => true))
|
217
|
-
put :update, :factory_id => '37'
|
218
|
-
assert_equal flash[:notice], 'Employee was successfully updated.'
|
219
|
-
end
|
220
|
-
|
221
|
-
def test_render_edit_template_when_employee_cannot_be_saved
|
222
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
223
|
-
Employee.stubs(:find).returns(mock_employee(:update_attributes => false, :errors => []))
|
224
|
-
put :update, :factory_id => '37'
|
225
|
-
assert_response :success
|
226
|
-
assert_template :edit
|
227
|
-
end
|
228
|
-
|
229
|
-
def test_dont_show_flash_message_when_employee_cannot_be_saved
|
230
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
231
|
-
Employee.stubs(:find).returns(mock_employee(:update_attributes => false, :errors => []))
|
232
|
-
put :update, :factory_id => '37'
|
233
|
-
assert flash.empty?
|
234
|
-
end
|
235
|
-
end
|
236
|
-
|
237
|
-
class DestroyActionPolymorphicTest < TEST_CLASS
|
238
|
-
include EmployeeTestHelper
|
239
|
-
|
240
|
-
def test_the_resquested_employee_is_destroyed
|
241
|
-
Factory.expects(:find).with('37').returns(mock_factory)
|
242
|
-
mock_factory.expects(:employees).returns(Employee)
|
243
|
-
Employee.expects(:find).with('42').returns(mock_employee)
|
244
|
-
mock_employee.expects(:destroy)
|
245
|
-
delete :destroy, :id => '42', :factory_id => '37'
|
246
|
-
assert_equal mock_factory, assigns(:factory)
|
247
|
-
assert_equal mock_employee, assigns(:employee)
|
248
|
-
end
|
249
|
-
|
250
|
-
def test_show_flash_message
|
251
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
252
|
-
Employee.stubs(:find).returns(mock_employee(:destroy => true))
|
253
|
-
delete :destroy, :factory_id => '37'
|
254
|
-
assert_equal flash[:notice], 'Employee was successfully destroyed.'
|
255
|
-
end
|
256
|
-
|
257
|
-
def test_redirects_to_employees_list
|
258
|
-
Factory.stubs(:find).returns(mock_factory(:employees => Employee))
|
259
|
-
Employee.stubs(:find).returns(mock_employee(:destroy => true))
|
260
|
-
@controller.expects(:collection_url).returns('http://test.host/')
|
261
|
-
delete :destroy, :factory_id => '37'
|
262
|
-
assert_redirected_to 'http://test.host/'
|
263
|
-
end
|
264
|
-
end
|
265
|
-
class PolymorphicHelpersTest < TEST_CLASS
|
266
|
-
include EmployeeTestHelper
|
267
|
-
|
268
|
-
def test_polymorphic_helpers
|
269
|
-
new_factory = Factory.new
|
270
|
-
Factory.expects(:find).with('37').returns(new_factory)
|
271
|
-
new_factory.expects(:employees).returns(Employee)
|
272
|
-
Employee.expects(:find).with(:all).returns([mock_employee])
|
273
|
-
get :index, :factory_id => '37'
|
274
|
-
|
275
|
-
assert @controller.send(:parent?)
|
276
|
-
assert_equal :factory, assigns(:parent_type)
|
277
|
-
assert_equal :factory, @controller.send(:parent_type)
|
278
|
-
assert_equal Factory, @controller.send(:parent_class)
|
279
|
-
assert_equal new_factory, assigns(:factory)
|
280
|
-
assert_equal new_factory, @controller.send(:parent)
|
281
|
-
end
|
282
|
-
end
|