rails_best_practices 1.19.3 → 1.21.0
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.
- checksums.yaml +5 -5
- data/.gitignore +0 -1
- data/.travis.yml +2 -3
- data/CHANGELOG.md +10 -11
- data/Gemfile +3 -5
- data/Gemfile.lock +125 -0
- data/Guardfile +2 -0
- data/README.md +5 -1
- data/Rakefile +2 -17
- data/assets/result.html.erb +2 -0
- data/lib/rails_best_practices.rb +4 -2
- data/lib/rails_best_practices/analyzer.rb +63 -51
- data/lib/rails_best_practices/cli.rb +22 -0
- data/lib/rails_best_practices/command.rb +1 -131
- data/lib/rails_best_practices/core/check.rb +63 -55
- data/lib/rails_best_practices/core/checks_loader.rb +24 -23
- data/lib/rails_best_practices/core/configs.rb +1 -2
- data/lib/rails_best_practices/core/controllers.rb +1 -2
- data/lib/rails_best_practices/core/error.rb +1 -1
- data/lib/rails_best_practices/core/helpers.rb +1 -2
- data/lib/rails_best_practices/core/mailers.rb +1 -2
- data/lib/rails_best_practices/core/methods.rb +27 -21
- data/lib/rails_best_practices/core/model_associations.rb +10 -5
- data/lib/rails_best_practices/core/models.rb +1 -2
- data/lib/rails_best_practices/core/modules.rb +1 -1
- data/lib/rails_best_practices/core/routes.rb +2 -2
- data/lib/rails_best_practices/core/runner.rb +87 -72
- data/lib/rails_best_practices/inline_disables.rb +3 -0
- data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
- data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
- data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
- data/lib/rails_best_practices/option_parser.rb +156 -0
- data/lib/rails_best_practices/prepares.rb +1 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +23 -17
- data/lib/rails_best_practices/prepares/gemfile_prepare.rb +2 -2
- data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
- data/lib/rails_best_practices/prepares/initializer_prepare.rb +3 -3
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +2 -1
- data/lib/rails_best_practices/prepares/model_prepare.rb +63 -23
- data/lib/rails_best_practices/prepares/route_prepare.rb +28 -21
- data/lib/rails_best_practices/prepares/schema_prepare.rb +1 -1
- data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +38 -34
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +94 -88
- data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +15 -5
- data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +20 -8
- data/lib/rails_best_practices/reviews/default_scope_is_evil_review.rb +1 -1
- data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +1 -1
- data/lib/rails_best_practices/reviews/hash_syntax_review.rb +16 -16
- data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +12 -12
- data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +10 -11
- data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +25 -24
- data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +4 -4
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +9 -10
- data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +10 -11
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +24 -22
- data/lib/rails_best_practices/reviews/not_rescue_exception_review.rb +1 -1
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
- data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +1 -1
- data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +8 -8
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +35 -32
- data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +4 -4
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +20 -17
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +12 -10
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +38 -18
- data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +11 -11
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +77 -74
- data/lib/rails_best_practices/reviews/review.rb +2 -1
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +2 -3
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +12 -12
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +14 -10
- data/lib/rails_best_practices/reviews/use_model_association_review.rb +15 -15
- data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +24 -22
- data/lib/rails_best_practices/reviews/use_observer_review.rb +28 -28
- data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +6 -6
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +63 -60
- data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +9 -8
- data/lib/rails_best_practices/reviews/use_scope_access_review.rb +16 -14
- data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +48 -49
- data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
- data/spec/rails_best_practices/analyzer_spec.rb +73 -42
- data/spec/rails_best_practices/core/check_spec.rb +5 -5
- data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
- data/spec/rails_best_practices/core/configs_spec.rb +1 -1
- data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
- data/spec/rails_best_practices/core/error_spec.rb +21 -18
- data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
- data/spec/rails_best_practices/core/gems_spec.rb +4 -4
- data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
- data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
- data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
- data/spec/rails_best_practices/core/methods_spec.rb +6 -6
- data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
- data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
- data/spec/rails_best_practices/core/models_spec.rb +1 -1
- data/spec/rails_best_practices/core/modules_spec.rb +5 -5
- data/spec/rails_best_practices/core/routes_spec.rb +5 -5
- data/spec/rails_best_practices/core/runner_spec.rb +9 -7
- data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
- data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
- data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +32 -31
- data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
- data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
- data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
- data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +17 -17
- data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +141 -76
- data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
- data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
- data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
- data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +13 -13
- data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +29 -22
- data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
- data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +32 -22
- data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -17
- data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +47 -32
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +21 -14
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +57 -53
- data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
- data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +20 -14
- data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
- data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
- data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +35 -31
- data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +10 -8
- data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
- data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
- data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
- data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +61 -59
- metadata +21 -14
@@ -5,13 +5,14 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe RemoveUnusedMethodsInModelsReview do
|
8
|
-
let(:runner)
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
let(:runner) do
|
9
|
+
Core::Runner.new(
|
10
|
+
prepares: Prepares::ModelPrepare.new, reviews: described_class.new('except_methods' => ['*#set_cache'])
|
11
|
+
)
|
12
|
+
end
|
12
13
|
|
13
14
|
context 'private' do
|
14
|
-
it '
|
15
|
+
it 'removes unused methods' do
|
15
16
|
content = <<-EOF
|
16
17
|
class Post < ActiveRecord::Base
|
17
18
|
def find; end
|
@@ -34,7 +35,7 @@ module RailsBestPractices
|
|
34
35
|
expect(runner.errors[0].to_s).to eq('app/models/post.rb:4 - remove unused methods (Post#find_by_sql)')
|
35
36
|
end
|
36
37
|
|
37
|
-
it '
|
38
|
+
it 'does not remove unused methods with except_methods' do
|
38
39
|
content = <<-EOF
|
39
40
|
class Post < ActiveRecord::Base
|
40
41
|
def set_cache; end
|
@@ -46,7 +47,7 @@ module RailsBestPractices
|
|
46
47
|
expect(runner.errors.size).to eq(0)
|
47
48
|
end
|
48
49
|
|
49
|
-
it '
|
50
|
+
it 'does not remove unused methods with var_ref' do
|
50
51
|
content = <<-EOF
|
51
52
|
class Post < ActiveRecord::Base
|
52
53
|
def find
|
@@ -70,7 +71,7 @@ module RailsBestPractices
|
|
70
71
|
expect(runner.errors.size).to eq(0)
|
71
72
|
end
|
72
73
|
|
73
|
-
it '
|
74
|
+
it 'does not remove unused methods with callback' do
|
74
75
|
content = <<-EOF
|
75
76
|
class Post < ActiveRecord::Base
|
76
77
|
after_save :expire_cache
|
@@ -84,7 +85,7 @@ module RailsBestPractices
|
|
84
85
|
expect(runner.errors.size).to eq(0)
|
85
86
|
end
|
86
87
|
|
87
|
-
it '
|
88
|
+
it 'does not remove unused method with command' do
|
88
89
|
content = <<-EOF
|
89
90
|
class Post < ActiveRecord::Base
|
90
91
|
def fetch
|
@@ -108,7 +109,7 @@ module RailsBestPractices
|
|
108
109
|
expect(runner.errors.size).to eq(0)
|
109
110
|
end
|
110
111
|
|
111
|
-
it '
|
112
|
+
it 'does not remove unused method with call' do
|
112
113
|
content = <<-EOF
|
113
114
|
class Post < ActiveRecord::Base
|
114
115
|
def conditions
|
@@ -132,7 +133,7 @@ module RailsBestPractices
|
|
132
133
|
expect(runner.errors.size).to eq(0)
|
133
134
|
end
|
134
135
|
|
135
|
-
it '
|
136
|
+
it 'does not remove unused method with message' do
|
136
137
|
content = <<-EOF
|
137
138
|
class Post < ActiveRecord::Base
|
138
139
|
def save
|
@@ -158,7 +159,7 @@ module RailsBestPractices
|
|
158
159
|
expect(runner.errors.size).to eq(0)
|
159
160
|
end
|
160
161
|
|
161
|
-
it '
|
162
|
+
it 'does not remove unused method with validation condition' do
|
162
163
|
content = <<-EOF
|
163
164
|
class Post < ActiveRecord::Base
|
164
165
|
validates_uniqueness_of :login, if: :email_blank?
|
@@ -172,7 +173,7 @@ module RailsBestPractices
|
|
172
173
|
expect(runner.errors.size).to eq(0)
|
173
174
|
end
|
174
175
|
|
175
|
-
it '
|
176
|
+
it 'does not remove unused method with aasm' do
|
176
177
|
content = <<-EOF
|
177
178
|
class Post < ActiveRecord::Base
|
178
179
|
aasm_state :accepted, enter: [:update_datetime]
|
@@ -186,7 +187,7 @@ module RailsBestPractices
|
|
186
187
|
expect(runner.errors.size).to eq(0)
|
187
188
|
end
|
188
189
|
|
189
|
-
it '
|
190
|
+
it 'does not remove unused method with initialize' do
|
190
191
|
content = <<-EOF
|
191
192
|
class Post < ActiveRecord::Base
|
192
193
|
private
|
@@ -201,7 +202,7 @@ module RailsBestPractices
|
|
201
202
|
end
|
202
203
|
|
203
204
|
context 'public' do
|
204
|
-
it '
|
205
|
+
it 'removes unused methods' do
|
205
206
|
content = <<-EOF
|
206
207
|
class Post < ActiveRecord::Base
|
207
208
|
def fetch; end
|
@@ -213,7 +214,7 @@ module RailsBestPractices
|
|
213
214
|
expect(runner.errors[0].to_s).to eq('app/models/post.rb:2 - remove unused methods (Post#fetch)')
|
214
215
|
end
|
215
216
|
|
216
|
-
it '
|
217
|
+
it 'does not remove unused methods' do
|
217
218
|
content = <<-EOF
|
218
219
|
class Post < ActiveRecord::Base
|
219
220
|
def fetch; end
|
@@ -232,7 +233,7 @@ module RailsBestPractices
|
|
232
233
|
expect(runner.errors.size).to eq(0)
|
233
234
|
end
|
234
235
|
|
235
|
-
it '
|
236
|
+
it 'does not remove unused methods for attribute assignment' do
|
236
237
|
content = <<-EOF
|
237
238
|
class Post < ActiveRecord::Base
|
238
239
|
def user=(user); end
|
@@ -244,7 +245,7 @@ module RailsBestPractices
|
|
244
245
|
expect(runner.errors.size).to eq(0)
|
245
246
|
end
|
246
247
|
|
247
|
-
it '
|
248
|
+
it 'does not remove unused methods for try' do
|
248
249
|
content = <<-EOF
|
249
250
|
class Post < ActiveRecord::Base
|
250
251
|
def find(user_id); end
|
@@ -264,7 +265,7 @@ module RailsBestPractices
|
|
264
265
|
expect(runner.errors.size).to eq(0)
|
265
266
|
end
|
266
267
|
|
267
|
-
it '
|
268
|
+
it 'does not remove unused methods for send' do
|
268
269
|
content = <<-EOF
|
269
270
|
class Post < ActiveRecord::Base
|
270
271
|
def find(user_id); end
|
@@ -284,7 +285,7 @@ module RailsBestPractices
|
|
284
285
|
expect(runner.errors.size).to eq(0)
|
285
286
|
end
|
286
287
|
|
287
|
-
it '
|
288
|
+
it 'removes unused methods for send string_embexpre' do
|
288
289
|
content = <<-EOF
|
289
290
|
class Post < ActiveRecord::Base
|
290
291
|
def find_first; end
|
@@ -305,7 +306,7 @@ module RailsBestPractices
|
|
305
306
|
expect(runner.errors.size).to eq(1)
|
306
307
|
end
|
307
308
|
|
308
|
-
it '
|
309
|
+
it 'removes unused methods for send variable' do
|
309
310
|
content = <<-EOF
|
310
311
|
class Post < ActiveRecord::Base
|
311
312
|
def first; end
|
@@ -328,7 +329,7 @@ module RailsBestPractices
|
|
328
329
|
end
|
329
330
|
|
330
331
|
context 'protected' do
|
331
|
-
it '
|
332
|
+
it 'does not remove unused methods' do
|
332
333
|
content = <<-EOF
|
333
334
|
class Post < ActiveRecord::Base
|
334
335
|
protected
|
@@ -350,7 +351,7 @@ module RailsBestPractices
|
|
350
351
|
expect(runner.errors[0].to_s).to eq('app/models/post.rb:3 - remove unused methods (Post#test)')
|
351
352
|
end
|
352
353
|
|
353
|
-
it '
|
354
|
+
it 'does not remove unused methods' do
|
354
355
|
post_content = <<-EOF
|
355
356
|
class Post < ActiveRecord::Base
|
356
357
|
protected
|
@@ -382,7 +383,7 @@ module RailsBestPractices
|
|
382
383
|
end
|
383
384
|
|
384
385
|
context 'named_scope' do
|
385
|
-
it '
|
386
|
+
it 'does not remove unused named_scope' do
|
386
387
|
content = <<-EOF
|
387
388
|
class Post < ActiveRecord::Base
|
388
389
|
named_scope :active, conditions: {active: true}
|
@@ -402,7 +403,7 @@ module RailsBestPractices
|
|
402
403
|
expect(runner.errors.size).to eq(0)
|
403
404
|
end
|
404
405
|
|
405
|
-
it '
|
406
|
+
it 'removes unused named_scope' do
|
406
407
|
content = <<-EOF
|
407
408
|
class Post < ActiveRecord::Base
|
408
409
|
named_scope :active, conditions: {active: true}
|
@@ -417,7 +418,7 @@ module RailsBestPractices
|
|
417
418
|
end
|
418
419
|
|
419
420
|
context 'scope' do
|
420
|
-
it '
|
421
|
+
it 'does not remove unused scope' do
|
421
422
|
content = <<-EOF
|
422
423
|
class Post < ActiveRecord::Base
|
423
424
|
scope :active, where(active: true)
|
@@ -437,7 +438,7 @@ module RailsBestPractices
|
|
437
438
|
expect(runner.errors.size).to eq(0)
|
438
439
|
end
|
439
440
|
|
440
|
-
it '
|
441
|
+
it 'removes unused named_scope' do
|
441
442
|
content = <<-EOF
|
442
443
|
class Post < ActiveRecord::Base
|
443
444
|
scope :active, where(active: true)
|
@@ -452,7 +453,7 @@ module RailsBestPractices
|
|
452
453
|
end
|
453
454
|
|
454
455
|
context 'alias' do
|
455
|
-
it '
|
456
|
+
it 'does not remove unused method with alias' do
|
456
457
|
content = <<-EOF
|
457
458
|
class Post < ActiveRecord::Base
|
458
459
|
def old; end
|
@@ -473,7 +474,7 @@ module RailsBestPractices
|
|
473
474
|
expect(runner.errors.size).to eq(0)
|
474
475
|
end
|
475
476
|
|
476
|
-
|
477
|
+
it 'does not remove unused method with symbol alias' do
|
477
478
|
content = <<-EOF
|
478
479
|
class Post < ActiveRecord::Base
|
479
480
|
def old; end
|
@@ -494,7 +495,7 @@ module RailsBestPractices
|
|
494
495
|
expect(runner.errors.size).to eq(0)
|
495
496
|
end
|
496
497
|
|
497
|
-
it '
|
498
|
+
it 'does not remove unused method with alias_method' do
|
498
499
|
content = <<-EOF
|
499
500
|
class Post < ActiveRecord::Base
|
500
501
|
def old; end
|
@@ -515,7 +516,7 @@ module RailsBestPractices
|
|
515
516
|
expect(runner.errors.size).to eq(0)
|
516
517
|
end
|
517
518
|
|
518
|
-
it '
|
519
|
+
it 'does not remove unused method with alias_method_chain' do
|
519
520
|
content = <<-EOF
|
520
521
|
class Post < ActiveRecord::Base
|
521
522
|
def method_with_feature; end
|
@@ -538,7 +539,7 @@ module RailsBestPractices
|
|
538
539
|
end
|
539
540
|
|
540
541
|
context 'methods hash' do
|
541
|
-
it '
|
542
|
+
it 'does not remove unused method with methods hash' do
|
542
543
|
content = <<-EOF
|
543
544
|
class Post < ActiveRecord::Base
|
544
545
|
def to_xml(options = {})
|
@@ -556,7 +557,7 @@ module RailsBestPractices
|
|
556
557
|
end
|
557
558
|
|
558
559
|
context 'callbacks' do
|
559
|
-
it '
|
560
|
+
it 'does not remove unused method' do
|
560
561
|
content = <<-EOF
|
561
562
|
class Post < ActiveRecord::Base
|
562
563
|
before_save :init_columns
|
@@ -575,7 +576,7 @@ module RailsBestPractices
|
|
575
576
|
end
|
576
577
|
|
577
578
|
context 'validates' do
|
578
|
-
it '
|
579
|
+
it 'does not remove unused method' do
|
579
580
|
content = <<-EOF
|
580
581
|
class Post < ActiveRecord::Base
|
581
582
|
validate :valid_birth_date
|
@@ -590,7 +591,7 @@ module RailsBestPractices
|
|
590
591
|
expect(runner.errors.size).to eq(0)
|
591
592
|
end
|
592
593
|
|
593
|
-
it '
|
594
|
+
it 'does not remove unused method for validate_on_create and validate_on_update' do
|
594
595
|
content = <<-EOF
|
595
596
|
class Post < ActiveRecord::Base
|
596
597
|
validate_on_create :valid_email
|
@@ -607,7 +608,7 @@ module RailsBestPractices
|
|
607
608
|
expect(runner.errors.size).to eq(0)
|
608
609
|
end
|
609
610
|
|
610
|
-
it '
|
611
|
+
it 'does not remove unused methods for to_param' do
|
611
612
|
content = <<-EOF
|
612
613
|
class Post < ActiveRecord::Base
|
613
614
|
def to_param
|
@@ -623,7 +624,7 @@ module RailsBestPractices
|
|
623
624
|
end
|
624
625
|
|
625
626
|
context 'helper method' do
|
626
|
-
it '
|
627
|
+
it 'does not remove unused method for coommand_call collection_select' do
|
627
628
|
content = <<-EOF
|
628
629
|
class Category < ActiveRecord::Base
|
629
630
|
def indented_name; end
|
@@ -639,7 +640,7 @@ module RailsBestPractices
|
|
639
640
|
expect(runner.errors.size).to eq(0)
|
640
641
|
end
|
641
642
|
|
642
|
-
it '
|
643
|
+
it 'does not remove unused method for command collection_select' do
|
643
644
|
content = <<-EOF
|
644
645
|
class Category < ActiveRecord::Base
|
645
646
|
def indented_name; end
|
@@ -655,7 +656,7 @@ module RailsBestPractices
|
|
655
656
|
expect(runner.errors.size).to eq(0)
|
656
657
|
end
|
657
658
|
|
658
|
-
it '
|
659
|
+
it 'does not remove unused method for options_from_collection_for_select' do
|
659
660
|
content = <<-EOF
|
660
661
|
class Category < ActiveRecord::Base
|
661
662
|
def indented_name; end
|
@@ -672,7 +673,7 @@ module RailsBestPractices
|
|
672
673
|
end
|
673
674
|
end
|
674
675
|
|
675
|
-
it '
|
676
|
+
it 'does not remove unused methods for rabl view' do
|
676
677
|
content = <<-EOF
|
677
678
|
class User
|
678
679
|
def first_name; end
|
@@ -691,7 +692,7 @@ module RailsBestPractices
|
|
691
692
|
expect(runner.errors.size).to eq(0)
|
692
693
|
end
|
693
694
|
|
694
|
-
it '
|
695
|
+
it 'does not skip :call as call message' do
|
695
696
|
content = <<-EOF
|
696
697
|
module DateRange
|
697
698
|
RANGES = lambda {
|
@@ -706,29 +707,32 @@ module RailsBestPractices
|
|
706
707
|
runner.review('app/mixins/date_range.rb', content)
|
707
708
|
end
|
708
709
|
|
709
|
-
it '
|
710
|
-
runner =
|
711
|
-
|
710
|
+
it 'does not check ignored files' do
|
711
|
+
runner =
|
712
|
+
Core::Runner.new(
|
713
|
+
prepares: Prepares::ModelPrepare.new,
|
714
|
+
reviews: described_class.new(except_methods: [], ignored_files: /post/)
|
715
|
+
)
|
712
716
|
|
713
|
-
|
717
|
+
content = <<-EOF
|
714
718
|
class Post < ActiveRecord::Base
|
715
719
|
def find; end
|
716
720
|
private
|
717
721
|
def find_by_sql; end
|
718
722
|
end
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
+
EOF
|
724
|
+
runner.prepare('app/models/post.rb', content)
|
725
|
+
runner.review('app/models/post.rb', content)
|
726
|
+
content = <<-EOF
|
723
727
|
class PostsController < ApplicationController
|
724
728
|
def get
|
725
729
|
Post.new.find
|
726
730
|
end
|
727
731
|
end
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
+
EOF
|
733
|
+
runner.review('app/controllers/posts_controller.rb', content)
|
734
|
+
runner.after_review
|
735
|
+
expect(runner.errors.size).to eq(0)
|
732
736
|
end
|
733
737
|
end
|
734
738
|
end
|
data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb
CHANGED
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe ReplaceComplexCreationWithFactoryMethodReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'replaces complex creation with factory method' do
|
11
11
|
content = <<-EOF
|
12
12
|
class InvoiceController < ApplicationController
|
13
13
|
def create
|
@@ -28,10 +28,12 @@ module RailsBestPractices
|
|
28
28
|
EOF
|
29
29
|
runner.review('app/controllers/invoices_controller.rb', content)
|
30
30
|
expect(runner.errors.size).to eq(1)
|
31
|
-
expect(runner.errors[0].to_s).to eq(
|
31
|
+
expect(runner.errors[0].to_s).to eq(
|
32
|
+
'app/controllers/invoices_controller.rb:2 - replace complex creation with factory method (@invoice attribute_assignment_count > 2)'
|
33
|
+
)
|
32
34
|
end
|
33
35
|
|
34
|
-
it '
|
36
|
+
it 'does not replace complex creation with factory method with simple creation' do
|
35
37
|
content = <<-EOF
|
36
38
|
class InvoiceController < ApplicationController
|
37
39
|
def create
|
@@ -46,7 +48,7 @@ module RailsBestPractices
|
|
46
48
|
expect(runner.errors.size).to eq(0)
|
47
49
|
end
|
48
50
|
|
49
|
-
it '
|
51
|
+
it 'does not replace complex creation with factory method when attrasgn_count is 5' do
|
50
52
|
content = <<-EOF
|
51
53
|
class InvoiceController < ApplicationController
|
52
54
|
def create
|
@@ -65,13 +67,13 @@ module RailsBestPractices
|
|
65
67
|
end
|
66
68
|
end
|
67
69
|
EOF
|
68
|
-
runner = Core::Runner.new(reviews:
|
70
|
+
runner = Core::Runner.new(reviews: described_class.new('attribute_assignment_count' => 5))
|
69
71
|
runner.review('app/controllers/invoices_controller.rb', content)
|
70
72
|
expect(runner.errors.size).to eq(0)
|
71
73
|
end
|
72
74
|
|
73
|
-
it '
|
74
|
-
runner = Core::Runner.new(reviews:
|
75
|
+
it 'does not check ignored files' do
|
76
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: /invoices_controller/))
|
75
77
|
content = <<-EOF
|
76
78
|
class InvoiceController < ApplicationController
|
77
79
|
def create
|
data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb
CHANGED
@@ -5,36 +5,42 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe ReplaceInstanceVariableWithLocalVariableReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'replaces instance variable with local varialbe' do
|
11
11
|
content = <<-EOF
|
12
12
|
<%= @post.title %>
|
13
13
|
EOF
|
14
14
|
runner.review('app/views/posts/_post.html.erb', content)
|
15
15
|
expect(runner.errors.size).to eq(1)
|
16
|
-
expect(runner.errors[0].to_s).to eq(
|
16
|
+
expect(runner.errors[0].to_s).to eq(
|
17
|
+
'app/views/posts/_post.html.erb:1 - replace instance variable with local variable'
|
18
|
+
)
|
17
19
|
end
|
18
20
|
|
19
|
-
it '
|
20
|
-
content =
|
21
|
-
= @post.title
|
21
|
+
it 'replaces instance variable with local varialbe in haml file' do
|
22
|
+
content = <<~EOF
|
23
|
+
= @post.title
|
22
24
|
EOF
|
23
25
|
runner.review('app/views/posts/_post.html.haml', content)
|
24
26
|
expect(runner.errors.size).to eq(1)
|
25
|
-
expect(runner.errors[0].to_s).to eq(
|
27
|
+
expect(runner.errors[0].to_s).to eq(
|
28
|
+
'app/views/posts/_post.html.haml:1 - replace instance variable with local variable'
|
29
|
+
)
|
26
30
|
end
|
27
31
|
|
28
|
-
it '
|
29
|
-
content =
|
30
|
-
= @post.title
|
32
|
+
it 'replaces instance variable with local varialbe in slim file' do
|
33
|
+
content = <<~EOF
|
34
|
+
= @post.title
|
31
35
|
EOF
|
32
36
|
runner.review('app/views/posts/_post.html.slim', content)
|
33
37
|
expect(runner.errors.size).to eq(1)
|
34
|
-
expect(runner.errors[0].to_s).to eq(
|
38
|
+
expect(runner.errors[0].to_s).to eq(
|
39
|
+
'app/views/posts/_post.html.slim:1 - replace instance variable with local variable'
|
40
|
+
)
|
35
41
|
end
|
36
42
|
|
37
|
-
it '
|
43
|
+
it 'does not replace instance variable with local varialbe' do
|
38
44
|
content = <<-EOF
|
39
45
|
<%= post.title %>
|
40
46
|
EOF
|
@@ -42,8 +48,8 @@ module RailsBestPractices
|
|
42
48
|
expect(runner.errors.size).to eq(0)
|
43
49
|
end
|
44
50
|
|
45
|
-
it '
|
46
|
-
runner = Core::Runner.new(reviews:
|
51
|
+
it 'does not check ignored files' do
|
52
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: %r{views/posts}))
|
47
53
|
content = <<-EOF
|
48
54
|
<%= @post.title %>
|
49
55
|
EOF
|