karsthammer-inherited_resources 1.2.1 → 1.2.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -30,12 +30,10 @@ GEM
30
30
  activesupport (3.0.3)
31
31
  arel (2.0.6)
32
32
  builder (2.1.2)
33
- columnize (0.3.1)
34
33
  erubis (2.6.6)
35
34
  abstract (>= 1.0.0)
36
35
  has_scope (0.5.0)
37
36
  i18n (0.5.0)
38
- linecache (0.43)
39
37
  mail (2.2.14)
40
38
  activesupport (>= 2.3.6)
41
39
  i18n (>= 0.4.0)
@@ -65,11 +63,7 @@ GEM
65
63
  thor (~> 0.14.4)
66
64
  rake (0.8.7)
67
65
  responders (0.6.2)
68
- ruby-debug (0.10.3)
69
- columnize (>= 0.1)
70
- ruby-debug-base (~> 0.10.3.0)
71
- ruby-debug-base (0.10.3)
72
- linecache (>= 0.3)
66
+ test-unit (2.2.0)
73
67
  thor (0.14.6)
74
68
  treetop (1.4.9)
75
69
  polyglot (>= 0.3.1)
@@ -83,4 +77,4 @@ DEPENDENCIES
83
77
  mocha
84
78
  rails (= 3.0.3)
85
79
  responders (~> 0.6.0)
86
- ruby-debug
80
+ test-unit
@@ -1,3 +1,3 @@
1
1
  module InheritedResources
2
- VERSION = '1.2.1'.freeze
2
+ VERSION = '1.2.1.1'.freeze
3
3
  end
@@ -0,0 +1,369 @@
1
+ require File.expand_path('test_helper', File.dirname(__FILE__))
2
+
3
+ class Student; end
4
+ class Manager; end
5
+ class Employee; end
6
+
7
+ class Project
8
+ def self.human_name; "Project"; end
9
+ end
10
+
11
+ class ProjectsController < InheritedResources::Base
12
+ belongs_to :student, :manager, :employee, :optional => true
13
+ end
14
+
15
+ class MultipleNestedOptionalTest < ActionController::TestCase
16
+ tests ProjectsController
17
+
18
+ def setup
19
+ @controller.stubs(:resource_url).returns('/')
20
+ @controller.stubs(:collection_url).returns('/')
21
+ end
22
+
23
+ # INDEX
24
+ def test_expose_all_projects_as_instance_variable_with_student
25
+ Student.expects(:find).with('37').returns(mock_student)
26
+ mock_student.expects(:projects).returns(Project)
27
+ Project.expects(:scoped).returns([mock_project])
28
+ get :index, :student_id => '37'
29
+ assert_equal mock_student, assigns(:student)
30
+ assert_equal [mock_project], assigns(:projects)
31
+ end
32
+
33
+ def test_expose_all_projects_as_instance_variable_with_manager
34
+ Manager.expects(:find).with('38').returns(mock_manager)
35
+ mock_manager.expects(:projects).returns(Project)
36
+ Project.expects(:scoped).returns([mock_project])
37
+ get :index, :manager_id => '38'
38
+ assert_equal mock_manager, assigns(:manager)
39
+ assert_equal [mock_project], assigns(:projects)
40
+ end
41
+
42
+ def test_expose_all_projects_as_instance_variable_with_employee
43
+ Employee.expects(:find).with('666').returns(mock_employee)
44
+ mock_employee.expects(:projects).returns(Project)
45
+ Project.expects(:scoped).returns([mock_project])
46
+ get :index, :employee_id => '666'
47
+ assert_equal mock_employee, assigns(:employee)
48
+ assert_equal [mock_project], assigns(:projects)
49
+ end
50
+
51
+ def test_expose_all_projects_as_instance_variable_with_manager_and_employee
52
+ Manager.expects(:find).with('37').returns(mock_manager)
53
+ mock_manager.expects(:employees).returns(Employee)
54
+ Employee.expects(:find).with('42').returns(mock_employee)
55
+ mock_employee.expects(:projects).returns(Project)
56
+ Project.expects(:scoped).returns([mock_project])
57
+ get :index, :manager_id => '37', :employee_id => '42'
58
+ assert_equal mock_manager, assigns(:manager)
59
+ assert_equal mock_employee, assigns(:employee)
60
+ assert_equal [mock_project], assigns(:projects)
61
+ end
62
+
63
+ def test_expose_all_projects_as_instance_variable_without_parents
64
+ Project.expects(:scoped).returns([mock_project])
65
+ get :index
66
+ assert_equal [mock_project], assigns(:projects)
67
+ end
68
+
69
+ # SHOW
70
+ def test_expose_the_requested_project_with_student
71
+ Student.expects(:find).with('37').returns(mock_student)
72
+ mock_student.expects(:projects).returns(Project)
73
+ Project.expects(:find).with('42').returns(mock_project)
74
+ get :show, :id => '42', :student_id => '37'
75
+ assert_equal mock_student, assigns(:student)
76
+ assert_equal mock_project, assigns(:project)
77
+ end
78
+
79
+ def test_expose_the_requested_project_with_manager
80
+ Manager.expects(:find).with('37').returns(mock_manager)
81
+ mock_manager.expects(:projects).returns(Project)
82
+ Project.expects(:find).with('42').returns(mock_project)
83
+ get :show, :id => '42', :manager_id => '37'
84
+ assert_equal mock_manager, assigns(:manager)
85
+ assert_equal mock_project, assigns(:project)
86
+ end
87
+
88
+ def test_expose_the_requested_project_with_employee
89
+ Employee.expects(:find).with('37').returns(mock_employee)
90
+ mock_employee.expects(:projects).returns(Project)
91
+ Project.expects(:find).with('42').returns(mock_project)
92
+ get :show, :id => '42', :employee_id => '37'
93
+ assert_equal mock_employee, assigns(:employee)
94
+ assert_equal mock_project, assigns(:project)
95
+ end
96
+
97
+ def test_expose_the_requested_project_with_manager_and_employee
98
+ Manager.expects(:find).with('37').returns(mock_manager)
99
+ mock_manager.expects(:employees).returns(Employee)
100
+ Employee.expects(:find).with('42').returns(mock_employee)
101
+ mock_employee.expects(:projects).returns(Project)
102
+ Project.expects(:find).with('13').returns(mock_project)
103
+ get :show, :id => '13', :manager_id => '37', :employee_id => '42'
104
+ assert_equal mock_manager, assigns(:manager)
105
+ assert_equal mock_employee, assigns(:employee)
106
+ assert_equal mock_project, assigns(:project)
107
+ end
108
+
109
+ def test_expose_the_requested_project_without_parents
110
+ Project.expects(:find).with('13').returns(mock_project)
111
+ get :show, :id => '13'
112
+ assert_equal mock_project, assigns(:project)
113
+ end
114
+
115
+ # NEW
116
+ def test_expose_a_new_project_with_student
117
+ Student.expects(:find).with('37').returns(mock_student)
118
+ mock_student.expects(:projects).returns(Project)
119
+ Project.expects(:build).returns(mock_project)
120
+ get :new, :student_id => '37'
121
+ assert_equal mock_student, assigns(:student)
122
+ assert_equal mock_project, assigns(:project)
123
+ end
124
+
125
+ def test_expose_a_new_project_with_manager
126
+ Manager.expects(:find).with('37').returns(mock_manager)
127
+ mock_manager.expects(:projects).returns(Project)
128
+ Project.expects(:build).returns(mock_project)
129
+ get :new, :manager_id => '37'
130
+ assert_equal mock_manager, assigns(:manager)
131
+ assert_equal mock_project, assigns(:project)
132
+ end
133
+
134
+ def test_expose_a_new_project_with_employee
135
+ Employee.expects(:find).with('37').returns(mock_employee)
136
+ mock_employee.expects(:projects).returns(Project)
137
+ Project.expects(:build).returns(mock_project)
138
+ get :new, :employee_id => '37'
139
+ assert_equal mock_employee, assigns(:employee)
140
+ assert_equal mock_project, assigns(:project)
141
+ end
142
+
143
+ def test_expose_a_new_project_with_manager_and_employee
144
+ Manager.expects(:find).with('37').returns(mock_manager)
145
+ mock_manager.expects(:employees).returns(Employee)
146
+ Employee.expects(:find).with('42').returns(mock_employee)
147
+ mock_employee.expects(:projects).returns(Project)
148
+ Project.expects(:build).returns(mock_project)
149
+ get :new, :manager_id => '37', :employee_id => '42'
150
+ assert_equal mock_manager, assigns(:manager)
151
+ assert_equal mock_employee, assigns(:employee)
152
+ assert_equal mock_project, assigns(:project)
153
+ end
154
+
155
+ def test_expose_a_new_project_without_parents
156
+ Project.expects(:new).returns(mock_project)
157
+ get :new
158
+ assert_equal mock_project, assigns(:project)
159
+ end
160
+
161
+ # EDIT
162
+ def test_expose_the_requested_project_for_edition_with_student
163
+ Student.expects(:find).with('37').returns(mock_student)
164
+ mock_student.expects(:projects).returns(Project)
165
+ Project.expects(:find).with('42').returns(mock_project)
166
+ get :edit, :id => '42', :student_id => '37'
167
+ assert_equal mock_student, assigns(:student)
168
+ assert_equal mock_project, assigns(:project)
169
+ end
170
+
171
+ def test_expose_the_requested_project_for_edition_with_manager
172
+ Manager.expects(:find).with('37').returns(mock_manager)
173
+ mock_manager.expects(:projects).returns(Project)
174
+ Project.expects(:find).with('42').returns(mock_project)
175
+ get :edit, :id => '42', :manager_id => '37'
176
+ assert_equal mock_manager, assigns(:manager)
177
+ assert_equal mock_project, assigns(:project)
178
+ end
179
+
180
+ def test_expose_the_requested_project_for_edition_with_employee
181
+ Employee.expects(:find).with('37').returns(mock_employee)
182
+ mock_employee.expects(:projects).returns(Project)
183
+ Project.expects(:find).with('42').returns(mock_project)
184
+ get :edit, :id => '42', :employee_id => '37'
185
+ assert_equal mock_employee, assigns(:employee)
186
+ assert_equal mock_project, assigns(:project)
187
+ end
188
+
189
+ def test_expose_the_requested_project_for_edition_with_manager_and_employee
190
+ Manager.expects(:find).with('37').returns(mock_manager)
191
+ mock_manager.expects(:employees).returns(Employee)
192
+ Employee.expects(:find).with('42').returns(mock_employee)
193
+ mock_employee.expects(:projects).returns(Project)
194
+ Project.expects(:find).with('13').returns(mock_project)
195
+ get :edit, :id => '13', :manager_id => '37', :employee_id => '42'
196
+ assert_equal mock_manager, assigns(:manager)
197
+ assert_equal mock_employee, assigns(:employee)
198
+ assert_equal mock_project, assigns(:project)
199
+ end
200
+
201
+ def test_expose_the_requested_project_for_edition_without_parents
202
+ Project.expects(:find).with('13').returns(mock_project)
203
+ get :edit, :id => '13'
204
+ assert_equal mock_project, assigns(:project)
205
+ end
206
+
207
+ # CREATE
208
+ def test_expose_a_newly_created_project_with_student
209
+ Student.expects(:find).with('37').returns(mock_student)
210
+ mock_student.expects(:projects).returns(Project)
211
+ Project.expects(:build).with({ 'these' => 'params' }).returns(mock_project(:save => true))
212
+ post :create, :student_id => '37', :project => { :these => 'params' }
213
+ assert_equal mock_student, assigns(:student)
214
+ assert_equal mock_project, assigns(:project)
215
+ end
216
+
217
+ def test_expose_a_newly_created_project_with_manager
218
+ Manager.expects(:find).with('37').returns(mock_manager)
219
+ mock_manager.expects(:projects).returns(Project)
220
+ Project.expects(:build).with({ 'these' => 'params' }).returns(mock_project(:save => true))
221
+ post :create, :manager_id => '37', :project => { :these => 'params' }
222
+ assert_equal mock_manager, assigns(:manager)
223
+ assert_equal mock_project, assigns(:project)
224
+ end
225
+
226
+ def test_expose_a_newly_created_project_with_employee
227
+ Employee.expects(:find).with('37').returns(mock_employee)
228
+ mock_employee.expects(:projects).returns(Project)
229
+ Project.expects(:build).with({ 'these' => 'params' }).returns(mock_project(:save => true))
230
+ post :create, :employee_id => '37', :project => { :these => 'params' }
231
+ assert_equal mock_employee, assigns(:employee)
232
+ assert_equal mock_project, assigns(:project)
233
+ end
234
+
235
+ def test_expose_a_newly_created_project_with_manager_and_employee
236
+ Manager.expects(:find).with('37').returns(mock_manager)
237
+ mock_manager.expects(:employees).returns(Employee)
238
+ Employee.expects(:find).with('42').returns(mock_employee)
239
+ mock_employee.expects(:projects).returns(Project)
240
+ Project.expects(:build).with({ 'these' => 'params' }).returns(mock_project(:save => true))
241
+ post :create, :manager_id => '37', :employee_id => '42', :project => { :these => 'params' }
242
+ assert_equal mock_manager, assigns(:manager)
243
+ assert_equal mock_employee, assigns(:employee)
244
+ assert_equal mock_project, assigns(:project)
245
+ end
246
+
247
+ def test_expose_a_newly_created_project_without_parents
248
+ Project.expects(:new).with({ 'these' => 'params' }).returns(mock_project(:save => true))
249
+ post :create, :project => { :these => 'params' }
250
+ assert_equal mock_project, assigns(:project)
251
+ end
252
+
253
+ # UPDATE
254
+ def test_update_the_requested_project_with_student
255
+ Student.expects(:find).with('37').returns(mock_student)
256
+ mock_student.expects(:projects).returns(Project)
257
+ Project.expects(:find).with('42').returns(mock_project)
258
+ mock_project.expects(:update_attributes).with({ 'these' => 'params' }).returns(true)
259
+ put :update, :id => '42', :student_id => '37', :project => { :these => 'params' }
260
+ assert_equal mock_student, assigns(:student)
261
+ assert_equal mock_project, assigns(:project)
262
+ end
263
+
264
+ def test_update_the_requested_project_with_manager
265
+ Manager.expects(:find).with('37').returns(mock_manager)
266
+ mock_manager.expects(:projects).returns(Project)
267
+ Project.expects(:find).with('42').returns(mock_project)
268
+ mock_project.expects(:update_attributes).with({ 'these' => 'params' }).returns(true)
269
+ put :update, :id => '42', :manager_id => '37', :project => { :these => 'params' }
270
+ assert_equal mock_manager, assigns(:manager)
271
+ assert_equal mock_project, assigns(:project)
272
+ end
273
+
274
+ def test_update_the_requested_project_with_employee
275
+ Employee.expects(:find).with('37').returns(mock_employee)
276
+ mock_employee.expects(:projects).returns(Project)
277
+ Project.expects(:find).with('42').returns(mock_project)
278
+ mock_project.expects(:update_attributes).with({ 'these' => 'params' }).returns(true)
279
+ put :update, :id => '42', :employee_id => '37', :project => { :these => 'params' }
280
+ assert_equal mock_employee, assigns(:employee)
281
+ assert_equal mock_project, assigns(:project)
282
+ end
283
+
284
+ def test_update_the_requested_project_with_manager_and_employee
285
+ Manager.expects(:find).with('37').returns(mock_manager)
286
+ mock_manager.expects(:employees).returns(Employee)
287
+ Employee.expects(:find).with('13').returns(mock_employee)
288
+ mock_employee.expects(:projects).returns(Project)
289
+ Project.expects(:find).with('42').returns(mock_project)
290
+ mock_project.expects(:update_attributes).with({ 'these' => 'params' }).returns(true)
291
+ put :update, :id => '42', :manager_id => '37', :employee_id => '13', :project => { :these => 'params' }
292
+ assert_equal mock_manager, assigns(:manager)
293
+ assert_equal mock_employee, assigns(:employee)
294
+ assert_equal mock_project, assigns(:project)
295
+ end
296
+
297
+ # DESTROY
298
+ def test_the_requested_project_is_destroyed_with_student
299
+ Student.expects(:find).with('37').returns(mock_student)
300
+ mock_student.expects(:projects).returns(Project)
301
+ Project.expects(:find).with('42').returns(mock_project)
302
+ mock_project.expects(:destroy).returns(true)
303
+
304
+ delete :destroy, :id => '42', :student_id => '37'
305
+ assert_equal mock_student, assigns(:student)
306
+ assert_equal mock_project, assigns(:project)
307
+ end
308
+
309
+ def test_the_requested_project_is_destroyed_with_manager
310
+ Manager.expects(:find).with('37').returns(mock_manager)
311
+ mock_manager.expects(:projects).returns(Project)
312
+ Project.expects(:find).with('42').returns(mock_project)
313
+ mock_project.expects(:destroy).returns(true)
314
+
315
+ delete :destroy, :id => '42', :manager_id => '37'
316
+ assert_equal mock_manager, assigns(:manager)
317
+ assert_equal mock_project, assigns(:project)
318
+ end
319
+
320
+ def test_the_requested_project_is_destroyed_with_employee
321
+ Employee.expects(:find).with('37').returns(mock_employee)
322
+ mock_employee.expects(:projects).returns(Project)
323
+ Project.expects(:find).with('42').returns(mock_project)
324
+ mock_project.expects(:destroy).returns(true)
325
+
326
+ delete :destroy, :id => '42', :employee_id => '37'
327
+ assert_equal mock_employee, assigns(:employee)
328
+ assert_equal mock_project, assigns(:project)
329
+ end
330
+
331
+ def test_the_requested_project_is_destroyed_with_manager_and_employee
332
+ Manager.expects(:find).with('37').returns(mock_manager)
333
+ mock_manager.expects(:employees).returns(Employee)
334
+ Employee.expects(:find).with('13').returns(mock_employee)
335
+ mock_employee.expects(:projects).returns(Project)
336
+ Project.expects(:find).with('42').returns(mock_project)
337
+ mock_project.expects(:destroy).returns(true)
338
+
339
+ delete :destroy, :id => '42', :manager_id => '37', :employee_id => '13'
340
+ assert_equal mock_manager, assigns(:manager)
341
+ assert_equal mock_employee, assigns(:employee)
342
+ assert_equal mock_project, assigns(:project)
343
+ end
344
+
345
+ def test_the_requested_project_is_destroyed_without_parents
346
+ Project.expects(:find).with('42').returns(mock_project)
347
+ mock_project.expects(:destroy).returns(true)
348
+
349
+ delete :destroy, :id => '42'
350
+ assert_equal mock_project, assigns(:project)
351
+ end
352
+
353
+ protected
354
+ def mock_manager(stubs={})
355
+ @mock_manager ||= mock(stubs)
356
+ end
357
+
358
+ def mock_employee(stubs={})
359
+ @mock_employee ||= mock(stubs)
360
+ end
361
+
362
+ def mock_student(stubs={})
363
+ @mock_student ||= mock(stubs)
364
+ end
365
+
366
+ def mock_project(stubs={})
367
+ @mock_project ||= mock(stubs)
368
+ end
369
+ end
data/test/test_helper.rb CHANGED
@@ -21,7 +21,7 @@ class ApplicationController < ActionController::Base; end
21
21
 
22
22
  # Add IR to load path and load the main file
23
23
  $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
24
- require 'inherited_resources'
24
+ require 'karsthammer-inherited_resources'
25
25
 
26
26
  ActionController::Base.view_paths = File.join(File.dirname(__FILE__), 'views')
27
27
 
@@ -0,0 +1 @@
1
+ Edit HTML
@@ -0,0 +1 @@
1
+ New HTML
@@ -0,0 +1 @@
1
+ Show HTML
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: karsthammer-inherited_resources
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.2.1
5
+ version: 1.2.1.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Karst Hammer
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-03-15 00:00:00 +01:00
14
+ date: 2011-03-16 00:00:00 +01:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -81,6 +81,7 @@ files:
81
81
  - test/customized_redirect_to_test.rb
82
82
  - test/defaults_test.rb
83
83
  - test/locales/en.yml
84
+ - test/multiple_nested_optional_belongs_to_test.rb
84
85
  - test/nested_belongs_to_test.rb
85
86
  - test/nested_belongs_to_with_shallow_test.rb
86
87
  - test/nested_model_with_shallow_test.rb
@@ -131,10 +132,13 @@ files:
131
132
  - test/views/professors/index.html.erb
132
133
  - test/views/professors/new.html.erb
133
134
  - test/views/professors/show.html.erb
135
+ - test/views/projects/edit.html.erb
134
136
  - test/views/projects/index.html.erb
135
137
  - test/views/projects/index.json.erb
138
+ - test/views/projects/new.html.erb
136
139
  - test/views/projects/respond_to_skip_default_template.html.erb
137
140
  - test/views/projects/respond_with_resource.html.erb
141
+ - test/views/projects/show.html.erb
138
142
  - test/views/students/edit.html.erb
139
143
  - test/views/students/new.html.erb
140
144
  - test/views/tags/edit.html.erb
@@ -196,6 +200,7 @@ test_files:
196
200
  - test/customized_redirect_to_test.rb
197
201
  - test/defaults_test.rb
198
202
  - test/locales/en.yml
203
+ - test/multiple_nested_optional_belongs_to_test.rb
199
204
  - test/nested_belongs_to_test.rb
200
205
  - test/nested_belongs_to_with_shallow_test.rb
201
206
  - test/nested_model_with_shallow_test.rb
@@ -246,10 +251,13 @@ test_files:
246
251
  - test/views/professors/index.html.erb
247
252
  - test/views/professors/new.html.erb
248
253
  - test/views/professors/show.html.erb
254
+ - test/views/projects/edit.html.erb
249
255
  - test/views/projects/index.html.erb
250
256
  - test/views/projects/index.json.erb
257
+ - test/views/projects/new.html.erb
251
258
  - test/views/projects/respond_to_skip_default_template.html.erb
252
259
  - test/views/projects/respond_with_resource.html.erb
260
+ - test/views/projects/show.html.erb
253
261
  - test/views/students/edit.html.erb
254
262
  - test/views/students/new.html.erb
255
263
  - test/views/tags/edit.html.erb