rails_best_practices 1.9.0 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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