rails_best_practices 1.9.0 → 1.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/.travis.yml +4 -1
  2. data/Gemfile +0 -3
  3. data/Gemfile.lock +10 -9
  4. data/README.md +2 -0
  5. data/lib/rails_best_practices/analyzer.rb +40 -21
  6. data/lib/rails_best_practices/core.rb +1 -0
  7. data/lib/rails_best_practices/core/check.rb +12 -0
  8. data/lib/rails_best_practices/core/configs.rb +7 -0
  9. data/lib/rails_best_practices/core/error.rb +2 -1
  10. data/lib/rails_best_practices/core/routes.rb +11 -5
  11. data/lib/rails_best_practices/core/runner.rb +6 -2
  12. data/lib/rails_best_practices/core_ext/sexp.rb +3 -1
  13. data/lib/rails_best_practices/prepares.rb +5 -0
  14. data/lib/rails_best_practices/prepares/config_prepare.rb +21 -0
  15. data/lib/rails_best_practices/prepares/route_prepare.rb +24 -7
  16. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +11 -3
  17. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +7 -3
  18. data/lib/rails_best_practices/version.rb +1 -1
  19. data/rails_best_practices.gemspec +1 -0
  20. data/spec/rails_best_practices/analyzer_spec.rb +52 -32
  21. data/spec/rails_best_practices/core/check_spec.rb +64 -45
  22. data/spec/rails_best_practices/core/checking_visitor_spec.rb +65 -64
  23. data/spec/rails_best_practices/core/configs_spec.rb +7 -0
  24. data/spec/rails_best_practices/core/controllers_spec.rb +4 -2
  25. data/spec/rails_best_practices/core/error_spec.rb +28 -22
  26. data/spec/rails_best_practices/core/helpers_spec.rb +4 -2
  27. data/spec/rails_best_practices/core/klasses_spec.rb +8 -6
  28. data/spec/rails_best_practices/core/mailers_spec.rb +4 -2
  29. data/spec/rails_best_practices/core/methods_spec.rb +37 -35
  30. data/spec/rails_best_practices/core/model_associations_spec.rb +17 -15
  31. data/spec/rails_best_practices/core/model_attributes_spec.rb +17 -15
  32. data/spec/rails_best_practices/core/models_spec.rb +4 -2
  33. data/spec/rails_best_practices/core/modules_spec.rb +21 -19
  34. data/spec/rails_best_practices/core/nil_spec.rb +23 -21
  35. data/spec/rails_best_practices/core/routes_spec.rb +21 -14
  36. data/spec/rails_best_practices/core/runner_spec.rb +17 -15
  37. data/spec/rails_best_practices/core_ext/sexp_spec.rb +32 -7
  38. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +35 -31
  39. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +35 -31
  40. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +24 -0
  41. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +122 -123
  42. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +36 -32
  43. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +12 -8
  44. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +326 -322
  45. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +619 -573
  46. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +25 -21
  47. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +85 -87
  48. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +224 -222
  49. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +30 -26
  50. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +79 -75
  51. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +76 -72
  52. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +138 -140
  53. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +38 -34
  54. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +22 -18
  55. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +57 -53
  56. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +62 -63
  57. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +51 -50
  58. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +140 -136
  59. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +48 -44
  60. data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +42 -38
  61. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +151 -149
  62. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +86 -55
  63. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +23 -19
  64. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +290 -286
  65. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +76 -72
  66. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +601 -597
  67. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +55 -54
  68. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +34 -30
  69. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +288 -289
  70. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +59 -55
  71. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +73 -69
  72. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +89 -98
  73. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +52 -52
  74. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +192 -190
  75. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +114 -121
  76. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +189 -190
  77. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +97 -93
  78. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +146 -151
  79. data/spec/spec_helper.rb +11 -20
  80. metadata +42 -26
  81. data/.watchr.example +0 -65
@@ -1,27 +1,31 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RailsBestPractices::Reviews::RemoveEmptyHelpersReview do
4
- let(:runner) { RailsBestPractices::Core::Runner.new(:reviews => RailsBestPractices::Reviews::RemoveEmptyHelpersReview.new) }
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe RemoveEmptyHelpersReview do
6
+ let(:runner) { Core::Runner.new(:reviews => RemoveEmptyHelpersReview.new) }
5
7
 
6
- it "should remove empty helpers" do
7
- content =<<-EOF
8
- module PostsHelper
9
- end
10
- EOF
11
- runner.review('app/helpers/posts_helper.rb', content)
12
- runner.should have(1).errors
13
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:1 - remove empty helpers"
14
- end
8
+ it "should remove empty helpers" do
9
+ content =<<-EOF
10
+ module PostsHelper
11
+ end
12
+ EOF
13
+ runner.review('app/helpers/posts_helper.rb', content)
14
+ runner.should have(1).errors
15
+ runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:1 - remove empty helpers"
16
+ end
15
17
 
16
- it "should not remove empty helpers" do
17
- content =<<-EOF
18
- module PostsHelper
19
- def post_link(post)
20
- post_path(post)
18
+ it "should not remove empty helpers" do
19
+ content =<<-EOF
20
+ module PostsHelper
21
+ def post_link(post)
22
+ post_path(post)
23
+ end
24
+ end
25
+ EOF
26
+ runner.review('app/helpers/posts_helper.rb', content)
27
+ runner.should have(0).errors
21
28
  end
22
29
  end
23
- EOF
24
- runner.review('app/helpers/posts_helper.rb', content)
25
- runner.should have(0).errors
26
30
  end
27
31
  end
@@ -1,314 +1,318 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe RailsBestPractices::Reviews::RemoveUnusedMethodsInControllersReview do
4
- let(:runner) { RailsBestPractices::Core::Runner.new(
5
- :prepares => [RailsBestPractices::Prepares::ControllerPrepare.new, RailsBestPractices::Prepares::RoutePrepare.new],
6
- :reviews => RailsBestPractices::Reviews::RemoveUnusedMethodsInControllersReview.new({'except_methods' => ["ExceptableController#*"]})
7
- ) }
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe RemoveUnusedMethodsInControllersReview do
6
+ let(:runner) { Core::Runner.new(
7
+ :prepares => [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
8
+ :reviews => RemoveUnusedMethodsInControllersReview.new({'except_methods' => ["ExceptableController#*"]})
9
+ ) }
8
10
 
9
- context "private/protected" do
10
- it "should remove unused methods" do
11
- content =<<-EOF
12
- RailsBestPracticesCom::Application.routes.draw do
13
- resources :posts
14
- end
15
- EOF
16
- runner.prepare('config/routes.rb', content)
17
- content =<<-EOF
18
- class PostsController < ActiveRecord::Base
19
- def show; end
20
- protected
21
- def load_post; end
22
- private
23
- def load_user; end
24
- end
25
- EOF
26
- runner.prepare('app/controllers/posts_controller.rb', content)
27
- runner.review('app/controllers/posts_controller.rb', content)
28
- runner.after_review
29
- runner.should have(2).errors
30
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#load_post)"
31
- runner.errors[1].to_s.should == "app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_user)"
32
- end
33
-
34
- it "should not remove unused methods for before_filter" do
35
- content =<<-EOF
36
- RailsBestPracticesCom::Application.routes.draw do
37
- resources :posts
38
- end
39
- EOF
40
- runner.prepare('config/routes.rb', content)
41
- content =<<-EOF
42
- class PostsController < ActiveRecord::Base
43
- before_filter :load_post, :load_user
44
- def show; end
45
- protected
46
- def load_post; end
47
- def load_user; end
48
- end
49
- EOF
50
- runner.prepare('app/controllers/posts_controller.rb', content)
51
- runner.review('app/controllers/posts_controller.rb', content)
52
- runner.after_review
53
- runner.should have(0).errors
54
- end
11
+ context "private/protected" do
12
+ it "should remove unused methods" do
13
+ content =<<-EOF
14
+ RailsBestPracticesCom::Application.routes.draw do
15
+ resources :posts
16
+ end
17
+ EOF
18
+ runner.prepare('config/routes.rb', content)
19
+ content =<<-EOF
20
+ class PostsController < ActiveRecord::Base
21
+ def show; end
22
+ protected
23
+ def load_post; end
24
+ private
25
+ def load_user; end
26
+ end
27
+ EOF
28
+ runner.prepare('app/controllers/posts_controller.rb', content)
29
+ runner.review('app/controllers/posts_controller.rb', content)
30
+ runner.after_review
31
+ runner.should have(2).errors
32
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#load_post)"
33
+ runner.errors[1].to_s.should == "app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_user)"
34
+ end
55
35
 
56
- it "should not remove unused methods for around_filter" do
57
- content =<<-EOF
58
- RailsBestPracticesCom::Application.routes.draw do
59
- resources :posts
60
- end
61
- EOF
62
- runner.prepare('config/routes.rb', content)
63
- content =<<-EOF
64
- class PostsController < ActiveRecord::Base
65
- around_filter :set_timestamp
66
- protected
67
- def set_timestamp
68
- Time.zone = "Pacific Time (US & Canada)"
69
- yield
70
- ensure
71
- Time.zone = "UTC"
36
+ it "should not remove unused methods for before_filter" do
37
+ content =<<-EOF
38
+ RailsBestPracticesCom::Application.routes.draw do
39
+ resources :posts
72
40
  end
73
- end
74
- EOF
75
- runner.prepare('app/controllers/posts_controller.rb', content)
76
- runner.review('app/controllers/posts_controller.rb', content)
77
- runner.after_review
78
- runner.should have(0).errors
79
- end
41
+ EOF
42
+ runner.prepare('config/routes.rb', content)
43
+ content =<<-EOF
44
+ class PostsController < ActiveRecord::Base
45
+ before_filter :load_post, :load_user
46
+ def show; end
47
+ protected
48
+ def load_post; end
49
+ def load_user; end
50
+ end
51
+ EOF
52
+ runner.prepare('app/controllers/posts_controller.rb', content)
53
+ runner.review('app/controllers/posts_controller.rb', content)
54
+ runner.after_review
55
+ runner.should have(0).errors
56
+ end
80
57
 
81
- it "should not remove inherited_resources methods" do
82
- content =<<-EOF
83
- RailsBestPracticesCom::Application.routes.draw do
84
- resources :posts
85
- end
86
- EOF
87
- runner.prepare('config/routes.rb', content)
88
- content =<<-EOF
89
- class PostsController < InheritedResources::Base
90
- def show; end
91
- protected
92
- def resource; end
93
- def collection; end
94
- def begin_of_association_chain; end
95
- end
96
- EOF
97
- runner.prepare('app/controllers/posts_controller.rb', content)
98
- runner.review('app/controllers/posts_controller.rb', content)
99
- runner.after_review
100
- runner.should have(0).errors
101
- end
102
- end
58
+ it "should not remove unused methods for around_filter" do
59
+ content =<<-EOF
60
+ RailsBestPracticesCom::Application.routes.draw do
61
+ resources :posts
62
+ end
63
+ EOF
64
+ runner.prepare('config/routes.rb', content)
65
+ content =<<-EOF
66
+ class PostsController < ActiveRecord::Base
67
+ around_filter :set_timestamp
68
+ protected
69
+ def set_timestamp
70
+ Time.zone = "Pacific Time (US & Canada)"
71
+ yield
72
+ ensure
73
+ Time.zone = "UTC"
74
+ end
75
+ end
76
+ EOF
77
+ runner.prepare('app/controllers/posts_controller.rb', content)
78
+ runner.review('app/controllers/posts_controller.rb', content)
79
+ runner.after_review
80
+ runner.should have(0).errors
81
+ end
103
82
 
104
- context "public" do
105
- it "should remove unused methods" do
106
- content =<<-EOF
107
- RailsBestPracticesCom::Application.routes.draw do
108
- resources :posts
109
- end
110
- EOF
111
- runner.prepare('config/routes.rb', content)
112
- content =<<-EOF
113
- class PostsController < ApplicationController
114
- def show; end
115
- def list; end
83
+ it "should not remove inherited_resources methods" do
84
+ content =<<-EOF
85
+ RailsBestPracticesCom::Application.routes.draw do
86
+ resources :posts
87
+ end
88
+ EOF
89
+ runner.prepare('config/routes.rb', content)
90
+ content =<<-EOF
91
+ class PostsController < InheritedResources::Base
92
+ def show; end
93
+ protected
94
+ def resource; end
95
+ def collection; end
96
+ def begin_of_association_chain; end
97
+ end
98
+ EOF
99
+ runner.prepare('app/controllers/posts_controller.rb', content)
100
+ runner.review('app/controllers/posts_controller.rb', content)
101
+ runner.after_review
102
+ runner.should have(0).errors
103
+ end
116
104
  end
117
- EOF
118
- runner.prepare('app/controllers/posts_controller.rb', content)
119
- runner.review('app/controllers/posts_controller.rb', content)
120
- runner.after_review
121
- runner.should have(1).errors
122
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)"
123
- end
124
105
 
125
- it "should not remove unused methods if all actions are used in route" do
126
- content =<<-EOF
127
- ActionController::Routing::Routes.draw do |map|
128
- map.connect 'internal/:action/*whatever', :controller => "internal"
129
- end
130
- EOF
131
- runner.prepare('config/routes.rb', content)
132
- content =<<-EOF
133
- class InternalController < ApplicationController
134
- def list; end
135
- def delete; end
136
- def whatever; end
137
- end
138
- EOF
139
- runner.prepare('app/controllers/internal_controller.rb', content)
140
- runner.review('app/controllers/internal_controller.rb', content)
141
- runner.after_review
142
- runner.should have(0).errors
143
- end
106
+ context "public" do
107
+ it "should remove unused methods" do
108
+ content =<<-EOF
109
+ RailsBestPracticesCom::Application.routes.draw do
110
+ resources :posts
111
+ end
112
+ EOF
113
+ runner.prepare('config/routes.rb', content)
114
+ content =<<-EOF
115
+ class PostsController < ApplicationController
116
+ def show; end
117
+ def list; end
118
+ end
119
+ EOF
120
+ runner.prepare('app/controllers/posts_controller.rb', content)
121
+ runner.review('app/controllers/posts_controller.rb', content)
122
+ runner.after_review
123
+ runner.should have(1).errors
124
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)"
125
+ end
144
126
 
145
- it "should not remove unused methods if they are except_methods" do
146
- content =<<-EOF
147
- class ExceptableController < ApplicationController
148
- def list; end
149
- end
150
- EOF
151
- runner.prepare('app/controllers/exceptable_controller.rb', content)
152
- runner.review('app/controllers/exceptable_controller.rb', content)
153
- runner.after_review
154
- runner.should have(0).errors
155
- end
156
- end
127
+ it "should not remove unused methods if all actions are used in route" do
128
+ content =<<-EOF
129
+ ActionController::Routing::Routes.draw do |map|
130
+ map.connect 'internal/:action/*whatever', :controller => "internal"
131
+ end
132
+ EOF
133
+ runner.prepare('config/routes.rb', content)
134
+ content =<<-EOF
135
+ class InternalController < ApplicationController
136
+ def list; end
137
+ def delete; end
138
+ def whatever; end
139
+ end
140
+ EOF
141
+ runner.prepare('app/controllers/internal_controller.rb', content)
142
+ runner.review('app/controllers/internal_controller.rb', content)
143
+ runner.after_review
144
+ runner.should have(0).errors
145
+ end
157
146
 
158
- context "helper_method" do
159
- it "should remove unused methods if helper method is not called" do
160
- content = <<-EOF
161
- class PostsController < ApplicationController
162
- helper_method :helper_post
163
- protected
164
- def helper_post; end
147
+ it "should not remove unused methods if they are except_methods" do
148
+ content =<<-EOF
149
+ class ExceptableController < ApplicationController
150
+ def list; end
151
+ end
152
+ EOF
153
+ runner.prepare('app/controllers/exceptable_controller.rb', content)
154
+ runner.review('app/controllers/exceptable_controller.rb', content)
155
+ runner.after_review
156
+ runner.should have(0).errors
157
+ end
165
158
  end
166
- EOF
167
- runner.prepare('app/controllers/posts_controller.rb', content)
168
- runner.review('app/controllers/posts_controller.rb', content)
169
- runner.after_review
170
- runner.should have(1).errors
171
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)"
172
- end
173
159
 
174
- it "should not remove unused methods if call helper method in views" do
175
- content = <<-EOF
176
- class PostsController < ApplicationController
177
- helper_method :helper_post
178
- protected
179
- def helper_post; end
180
- end
181
- EOF
182
- runner.prepare('app/controllers/posts_controller.rb', content)
183
- runner.review('app/controllers/posts_controller.rb', content)
184
- content = <<-EOF
185
- <%= helper_post %>
186
- EOF
187
- runner.review('app/views/posts/show.html.erb', content)
188
- runner.after_review
189
- runner.should have(0).errors
190
- end
160
+ context "helper_method" do
161
+ it "should remove unused methods if helper method is not called" do
162
+ content = <<-EOF
163
+ class PostsController < ApplicationController
164
+ helper_method :helper_post
165
+ protected
166
+ def helper_post; end
167
+ end
168
+ EOF
169
+ runner.prepare('app/controllers/posts_controller.rb', content)
170
+ runner.review('app/controllers/posts_controller.rb', content)
171
+ runner.after_review
172
+ runner.should have(1).errors
173
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)"
174
+ end
191
175
 
192
- it "should not remove unused methods if call helper method in helpers" do
193
- content = <<-EOF
194
- class PostsController < ApplicationController
195
- helper_method :helper_post
196
- protected
197
- def helper_post; end
198
- end
199
- EOF
200
- runner.prepare('app/controllers/posts_controller.rb', content)
201
- runner.review('app/controllers/posts_controller.rb', content)
202
- content = <<-EOF
203
- module PostsHelper
204
- def new_post
205
- helper_post
176
+ it "should not remove unused methods if call helper method in views" do
177
+ content = <<-EOF
178
+ class PostsController < ApplicationController
179
+ helper_method :helper_post
180
+ protected
181
+ def helper_post; end
182
+ end
183
+ EOF
184
+ runner.prepare('app/controllers/posts_controller.rb', content)
185
+ runner.review('app/controllers/posts_controller.rb', content)
186
+ content = <<-EOF
187
+ <%= helper_post %>
188
+ EOF
189
+ runner.review('app/views/posts/show.html.erb', content)
190
+ runner.after_review
191
+ runner.should have(0).errors
206
192
  end
207
- end
208
- EOF
209
- runner.review('app/helpers/posts_helper.rb', content)
210
- runner.after_review
211
- runner.should have(0).errors
212
- end
213
- end
214
193
 
215
- context "delegate :to => :controller" do
216
- it "should remove unused methods if delegate method is not called" do
217
- content = <<-EOF
218
- class PostsController < ApplicationController
219
- protected
220
- def helper_post(type); end
221
- end
222
- EOF
223
- runner.prepare('app/controllers/posts_controller.rb', content)
224
- runner.review('app/controllers/posts_controller.rb', content)
225
- content = <<-EOF
226
- module PostsHelper
227
- delegate :helper_post, :to => :controller
194
+ it "should not remove unused methods if call helper method in helpers" do
195
+ content = <<-EOF
196
+ class PostsController < ApplicationController
197
+ helper_method :helper_post
198
+ protected
199
+ def helper_post; end
200
+ end
201
+ EOF
202
+ runner.prepare('app/controllers/posts_controller.rb', content)
203
+ runner.review('app/controllers/posts_controller.rb', content)
204
+ content = <<-EOF
205
+ module PostsHelper
206
+ def new_post
207
+ helper_post
208
+ end
209
+ end
210
+ EOF
211
+ runner.review('app/helpers/posts_helper.rb', content)
212
+ runner.after_review
213
+ runner.should have(0).errors
214
+ end
228
215
  end
229
- EOF
230
- runner.review('app/helpers/posts_helper.rb', content)
231
- runner.after_review
232
- runner.should have(1).errors
233
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)"
234
- end
235
216
 
236
- it "should remove unused methods if delegate method is called" do
237
- content = <<-EOF
238
- class PostsController < ApplicationController
239
- protected
240
- def helper_post(type); end
241
- end
242
- EOF
243
- runner.prepare('app/controllers/posts_controller.rb', content)
244
- runner.review('app/controllers/posts_controller.rb', content)
245
- content = <<-EOF
246
- module PostsHelper
247
- delegate :helper_post, :to => :controller
248
- end
249
- EOF
250
- runner.review('app/helpers/posts_helper.rb', content)
251
- content = <<-EOF
252
- <%= helper_post("new") %>
253
- EOF
254
- runner.review('app/views/posts/show.html.erb', content)
255
- runner.after_review
256
- runner.should have(0).errors
257
- end
258
- end
217
+ context "delegate :to => :controller" do
218
+ it "should remove unused methods if delegate method is not called" do
219
+ content = <<-EOF
220
+ class PostsController < ApplicationController
221
+ protected
222
+ def helper_post(type); end
223
+ end
224
+ EOF
225
+ runner.prepare('app/controllers/posts_controller.rb', content)
226
+ runner.review('app/controllers/posts_controller.rb', content)
227
+ content = <<-EOF
228
+ module PostsHelper
229
+ delegate :helper_post, :to => :controller
230
+ end
231
+ EOF
232
+ runner.review('app/helpers/posts_helper.rb', content)
233
+ runner.after_review
234
+ runner.should have(1).errors
235
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)"
236
+ end
259
237
 
260
- context "cells" do
261
- it "should remove unused methods" do
262
- content =<<-EOF
263
- class PostsCell < Cell::Rails
264
- def list; end
238
+ it "should remove unused methods if delegate method is called" do
239
+ content = <<-EOF
240
+ class PostsController < ApplicationController
241
+ protected
242
+ def helper_post(type); end
243
+ end
244
+ EOF
245
+ runner.prepare('app/controllers/posts_controller.rb', content)
246
+ runner.review('app/controllers/posts_controller.rb', content)
247
+ content = <<-EOF
248
+ module PostsHelper
249
+ delegate :helper_post, :to => :controller
250
+ end
251
+ EOF
252
+ runner.review('app/helpers/posts_helper.rb', content)
253
+ content = <<-EOF
254
+ <%= helper_post("new") %>
255
+ EOF
256
+ runner.review('app/views/posts/show.html.erb', content)
257
+ runner.after_review
258
+ runner.should have(0).errors
259
+ end
265
260
  end
266
- EOF
267
- runner.prepare('app/cells/posts_cell.rb', content)
268
- runner.review('app/cells/posts_cell.rb', content)
269
- runner.after_review
270
- runner.should have(1).errors
271
- runner.errors[0].to_s.should == "app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)"
272
- end
273
261
 
274
- it "should not remove unused methods if render_cell" do
275
- content =<<-EOF
276
- class PostsCell < Cell::Rails
277
- def list; end
278
- def display; end
279
- end
280
- EOF
281
- runner.prepare('app/cells/posts_cell.rb', content)
282
- runner.review('app/cells/posts_cell.rb', content)
283
- content =<<-EOF
284
- <%= render_cell :posts, :list %>
285
- <%= render_cell(:posts, :display) %>
286
- EOF
287
- runner.review('app/views/posts/index.html.erb', content)
288
- runner.after_review
289
- runner.should have(0).errors
290
- end
262
+ context "cells" do
263
+ it "should remove unused methods" do
264
+ content =<<-EOF
265
+ class PostsCell < Cell::Rails
266
+ def list; end
267
+ end
268
+ EOF
269
+ runner.prepare('app/cells/posts_cell.rb', content)
270
+ runner.review('app/cells/posts_cell.rb', content)
271
+ runner.after_review
272
+ runner.should have(1).errors
273
+ runner.errors[0].to_s.should == "app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)"
274
+ end
291
275
 
292
- it "should not remove unused methods if render with state" do
293
- content =<<-EOF
294
- class PostsCell < Cell::Rails
295
- def list
296
- render :state => :show
297
- render(:state => :display)
276
+ it "should not remove unused methods if render_cell" do
277
+ content =<<-EOF
278
+ class PostsCell < Cell::Rails
279
+ def list; end
280
+ def display; end
281
+ end
282
+ EOF
283
+ runner.prepare('app/cells/posts_cell.rb', content)
284
+ runner.review('app/cells/posts_cell.rb', content)
285
+ content =<<-EOF
286
+ <%= render_cell :posts, :list %>
287
+ <%= render_cell(:posts, :display) %>
288
+ EOF
289
+ runner.review('app/views/posts/index.html.erb', content)
290
+ runner.after_review
291
+ runner.should have(0).errors
298
292
  end
299
293
 
300
- def show; end
301
- def display; end
294
+ it "should not remove unused methods if render with state" do
295
+ content =<<-EOF
296
+ class PostsCell < Cell::Rails
297
+ def list
298
+ render :state => :show
299
+ render(:state => :display)
300
+ end
301
+
302
+ def show; end
303
+ def display; end
304
+ end
305
+ EOF
306
+ runner.prepare('app/cells/posts_cell.rb', content)
307
+ runner.review('app/cells/posts_cell.rb', content)
308
+ content =<<-EOF
309
+ <%= render_cell :posts, :list %>
310
+ EOF
311
+ runner.review('app/views/posts/index.html.erb', content)
312
+ runner.after_review
313
+ runner.should have(0).errors
314
+ end
302
315
  end
303
- EOF
304
- runner.prepare('app/cells/posts_cell.rb', content)
305
- runner.review('app/cells/posts_cell.rb', content)
306
- content =<<-EOF
307
- <%= render_cell :posts, :list %>
308
- EOF
309
- runner.review('app/views/posts/index.html.erb', content)
310
- runner.after_review
311
- runner.should have(0).errors
312
316
  end
313
317
  end
314
318
  end