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.
- data/.travis.yml +4 -1
- data/Gemfile +0 -3
- data/Gemfile.lock +10 -9
- data/README.md +2 -0
- data/lib/rails_best_practices/analyzer.rb +40 -21
- data/lib/rails_best_practices/core.rb +1 -0
- data/lib/rails_best_practices/core/check.rb +12 -0
- data/lib/rails_best_practices/core/configs.rb +7 -0
- data/lib/rails_best_practices/core/error.rb +2 -1
- data/lib/rails_best_practices/core/routes.rb +11 -5
- data/lib/rails_best_practices/core/runner.rb +6 -2
- data/lib/rails_best_practices/core_ext/sexp.rb +3 -1
- data/lib/rails_best_practices/prepares.rb +5 -0
- data/lib/rails_best_practices/prepares/config_prepare.rb +21 -0
- data/lib/rails_best_practices/prepares/route_prepare.rb +24 -7
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +11 -3
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +7 -3
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +1 -0
- data/spec/rails_best_practices/analyzer_spec.rb +52 -32
- data/spec/rails_best_practices/core/check_spec.rb +64 -45
- data/spec/rails_best_practices/core/checking_visitor_spec.rb +65 -64
- data/spec/rails_best_practices/core/configs_spec.rb +7 -0
- data/spec/rails_best_practices/core/controllers_spec.rb +4 -2
- data/spec/rails_best_practices/core/error_spec.rb +28 -22
- data/spec/rails_best_practices/core/helpers_spec.rb +4 -2
- data/spec/rails_best_practices/core/klasses_spec.rb +8 -6
- data/spec/rails_best_practices/core/mailers_spec.rb +4 -2
- data/spec/rails_best_practices/core/methods_spec.rb +37 -35
- data/spec/rails_best_practices/core/model_associations_spec.rb +17 -15
- data/spec/rails_best_practices/core/model_attributes_spec.rb +17 -15
- data/spec/rails_best_practices/core/models_spec.rb +4 -2
- data/spec/rails_best_practices/core/modules_spec.rb +21 -19
- data/spec/rails_best_practices/core/nil_spec.rb +23 -21
- data/spec/rails_best_practices/core/routes_spec.rb +21 -14
- data/spec/rails_best_practices/core/runner_spec.rb +17 -15
- data/spec/rails_best_practices/core_ext/sexp_spec.rb +32 -7
- data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +35 -31
- data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +35 -31
- data/spec/rails_best_practices/prepares/config_prepare_spec.rb +24 -0
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +122 -123
- data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +36 -32
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +12 -8
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +326 -322
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +619 -573
- data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +25 -21
- data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +85 -87
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +224 -222
- data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +30 -26
- data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +79 -75
- data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +76 -72
- data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +138 -140
- data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +38 -34
- data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +22 -18
- data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +57 -53
- data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +62 -63
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +51 -50
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +140 -136
- data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +48 -44
- data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +42 -38
- data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +151 -149
- data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +86 -55
- data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +23 -19
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +290 -286
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +76 -72
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +601 -597
- data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +55 -54
- data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +34 -30
- data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +288 -289
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +59 -55
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +73 -69
- data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +89 -98
- data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +52 -52
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +192 -190
- data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +114 -121
- data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +189 -190
- data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +97 -93
- data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +146 -151
- data/spec/spec_helper.rb +11 -20
- metadata +42 -26
- data/.watchr.example +0 -65
@@ -1,27 +1,31 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
module RailsBestPractices
|
4
|
+
module Reviews
|
5
|
+
describe RemoveEmptyHelpersReview do
|
6
|
+
let(:runner) { Core::Runner.new(:reviews => RemoveEmptyHelpersReview.new) }
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
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
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
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
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
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
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
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
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
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
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
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
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
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
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
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
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
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
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
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
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
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
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
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
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
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
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
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
|
-
|
301
|
-
|
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
|