rails_best_practices 1.19.2 → 1.20.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 (149) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +0 -1
  3. data/.travis.yml +2 -3
  4. data/CHANGELOG.md +7 -7
  5. data/Gemfile +3 -5
  6. data/Gemfile.lock +125 -0
  7. data/Guardfile +2 -0
  8. data/README.md +6 -6
  9. data/Rakefile +2 -17
  10. data/assets/result.html.erb +2 -0
  11. data/lib/rails_best_practices.rb +3 -2
  12. data/lib/rails_best_practices/analyzer.rb +61 -49
  13. data/lib/rails_best_practices/cli.rb +22 -0
  14. data/lib/rails_best_practices/command.rb +1 -131
  15. data/lib/rails_best_practices/core/check.rb +64 -56
  16. data/lib/rails_best_practices/core/checks_loader.rb +24 -23
  17. data/lib/rails_best_practices/core/configs.rb +1 -2
  18. data/lib/rails_best_practices/core/controllers.rb +1 -2
  19. data/lib/rails_best_practices/core/error.rb +1 -1
  20. data/lib/rails_best_practices/core/helpers.rb +1 -2
  21. data/lib/rails_best_practices/core/mailers.rb +1 -2
  22. data/lib/rails_best_practices/core/methods.rb +27 -21
  23. data/lib/rails_best_practices/core/model_associations.rb +10 -5
  24. data/lib/rails_best_practices/core/models.rb +1 -2
  25. data/lib/rails_best_practices/core/modules.rb +1 -1
  26. data/lib/rails_best_practices/core/routes.rb +2 -2
  27. data/lib/rails_best_practices/core/runner.rb +67 -73
  28. data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
  29. data/lib/rails_best_practices/option_parser.rb +156 -0
  30. data/lib/rails_best_practices/prepares.rb +1 -1
  31. data/lib/rails_best_practices/prepares/controller_prepare.rb +24 -17
  32. data/lib/rails_best_practices/prepares/gemfile_prepare.rb +2 -2
  33. data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
  34. data/lib/rails_best_practices/prepares/initializer_prepare.rb +3 -3
  35. data/lib/rails_best_practices/prepares/mailer_prepare.rb +2 -1
  36. data/lib/rails_best_practices/prepares/model_prepare.rb +63 -23
  37. data/lib/rails_best_practices/prepares/route_prepare.rb +28 -21
  38. data/lib/rails_best_practices/prepares/schema_prepare.rb +1 -1
  39. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +38 -34
  40. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +94 -89
  41. data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +15 -5
  42. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +20 -8
  43. data/lib/rails_best_practices/reviews/default_scope_is_evil_review.rb +1 -1
  44. data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +1 -1
  45. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +16 -16
  46. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +12 -12
  47. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +10 -11
  48. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +25 -24
  49. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +4 -4
  50. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +9 -10
  51. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +10 -11
  52. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +24 -22
  53. data/lib/rails_best_practices/reviews/not_rescue_exception_review.rb +1 -1
  54. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
  55. data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +1 -1
  56. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +8 -8
  57. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +35 -32
  58. data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +4 -4
  59. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +26 -19
  60. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +12 -10
  61. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +38 -18
  62. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +11 -11
  63. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +77 -74
  64. data/lib/rails_best_practices/reviews/review.rb +2 -1
  65. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +2 -3
  66. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +12 -12
  67. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +18 -15
  68. data/lib/rails_best_practices/reviews/use_model_association_review.rb +15 -15
  69. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +24 -22
  70. data/lib/rails_best_practices/reviews/use_observer_review.rb +28 -28
  71. data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +6 -6
  72. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +68 -66
  73. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +9 -8
  74. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +16 -14
  75. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
  76. data/lib/rails_best_practices/version.rb +1 -1
  77. data/rails_best_practices.gemspec +38 -43
  78. data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
  79. data/spec/rails_best_practices/analyzer_spec.rb +73 -42
  80. data/spec/rails_best_practices/core/check_spec.rb +5 -5
  81. data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
  82. data/spec/rails_best_practices/core/configs_spec.rb +1 -1
  83. data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
  84. data/spec/rails_best_practices/core/error_spec.rb +21 -18
  85. data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
  86. data/spec/rails_best_practices/core/gems_spec.rb +4 -4
  87. data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
  88. data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
  89. data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
  90. data/spec/rails_best_practices/core/methods_spec.rb +6 -6
  91. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
  92. data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
  93. data/spec/rails_best_practices/core/models_spec.rb +1 -1
  94. data/spec/rails_best_practices/core/modules_spec.rb +5 -5
  95. data/spec/rails_best_practices/core/routes_spec.rb +5 -5
  96. data/spec/rails_best_practices/core/runner_spec.rb +9 -7
  97. data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
  98. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +32 -31
  99. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  100. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  101. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
  102. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
  103. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +17 -17
  104. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
  105. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
  106. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  107. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
  108. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +141 -76
  109. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
  110. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
  111. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
  112. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
  113. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
  114. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  115. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
  116. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +13 -13
  117. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
  118. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  119. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +29 -22
  120. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  121. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
  122. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +32 -22
  123. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  124. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
  125. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
  126. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
  127. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
  128. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
  129. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  130. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -17
  131. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
  132. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +64 -31
  133. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +21 -14
  134. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +57 -53
  135. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
  136. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +20 -14
  137. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
  138. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
  139. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
  140. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
  141. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  142. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +35 -31
  143. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  144. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +10 -8
  145. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
  146. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
  147. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
  148. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +61 -59
  149. metadata +16 -18
@@ -5,10 +5,14 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe ProtectMassAssignmentReview do
8
- let(:runner) { Core::Runner.new(prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
9
- reviews: ProtectMassAssignmentReview.new) }
8
+ let(:runner) do
9
+ Core::Runner.new(
10
+ prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
11
+ reviews: described_class.new
12
+ )
13
+ end
10
14
 
11
- it 'should protect mass assignment' do
15
+ it 'protects mass assignment' do
12
16
  content = <<-EOF
13
17
  class User < ActiveRecord::Base
14
18
  end
@@ -18,7 +22,7 @@ module RailsBestPractices
18
22
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:1 - protect mass assignment')
19
23
  end
20
24
 
21
- it 'should not protect mass assignment if attr_accessible is used with arguments and user set config.active_record.whitelist_attributes' do
25
+ it 'does not protect mass assignment if attr_accessible is used with arguments and user set config.active_record.whitelist_attributes' do
22
26
  content = <<-EOF
23
27
  module RailsBestPracticesCom
24
28
  class Application < Rails::Application
@@ -36,7 +40,7 @@ module RailsBestPractices
36
40
  expect(runner.errors.size).to eq(0)
37
41
  end
38
42
 
39
- it 'should not protect mass assignment if attr_accessible is used without arguments and user set config.active_record.whitelist_attributes' do
43
+ it 'does not protect mass assignment if attr_accessible is used without arguments and user set config.active_record.whitelist_attributes' do
40
44
  content = <<-EOF
41
45
  module RailsBestPracticesCom
42
46
  class Application < Rails::Application
@@ -54,7 +58,7 @@ module RailsBestPractices
54
58
  expect(runner.errors.size).to eq(0)
55
59
  end
56
60
 
57
- it 'should not protect mass assignment with attr_protected if user set config.active_record.whitelist_attributes' do
61
+ it 'does not protect mass assignment with attr_protected if user set config.active_record.whitelist_attributes' do
58
62
  content = <<-EOF
59
63
  module RailsBestPracticesCom
60
64
  class Application < Rails::Application
@@ -72,7 +76,7 @@ module RailsBestPractices
72
76
  expect(runner.errors.size).to eq(0)
73
77
  end
74
78
 
75
- it 'should not protect mass assignment if using devise' do
79
+ it 'does not protect mass assignment if using devise' do
76
80
  content = <<-EOF
77
81
  class User < ActiveRecord::Base
78
82
  devise :database_authenticatable, :registerable, :confirmable, :recoverable, stretches: 20
@@ -82,7 +86,7 @@ module RailsBestPractices
82
86
  expect(runner.errors.size).to eq(0)
83
87
  end
84
88
 
85
- it 'should not protect mass assignment if using authlogic with configuration' do
89
+ it 'does not protect mass assignment if using authlogic with configuration' do
86
90
  content = <<-EOF
87
91
  class User < ActiveRecord::Base
88
92
  acts_as_authentic do |c|
@@ -94,7 +98,7 @@ module RailsBestPractices
94
98
  expect(runner.errors.size).to eq(0)
95
99
  end
96
100
 
97
- it 'should not protect mass assignment if using authlogic without configuration' do
101
+ it 'does not protect mass assignment if using authlogic without configuration' do
98
102
  content = <<-EOF
99
103
  class User < ActiveRecord::Base
100
104
  acts_as_authentic
@@ -104,7 +108,7 @@ module RailsBestPractices
104
108
  expect(runner.errors.size).to eq(0)
105
109
  end
106
110
 
107
- it 'should not protect mass assignment if checking non ActiveRecord::Base inherited model' do
111
+ it 'does not protect mass assignment if checking non ActiveRecord::Base inherited model' do
108
112
  content = <<-EOF
109
113
  class User < Person
110
114
  end
@@ -114,7 +118,7 @@ module RailsBestPractices
114
118
  end
115
119
 
116
120
  context 'strong_parameters' do
117
- it 'should not protect mass assignment for strong_parameters' do
121
+ it 'does not protect mass assignment for strong_parameters' do
118
122
  content = <<-EOF
119
123
  class User < ActiveRecord::Base
120
124
  include ActiveModel::ForbiddenAttributesProtection
@@ -124,7 +128,7 @@ module RailsBestPractices
124
128
  expect(runner.errors.size).to eq(0)
125
129
  end
126
130
 
127
- it 'should not protect mass assignment for strong_parameters' do
131
+ it 'does not protect mass assignment for strong_parameters' do
128
132
  content = <<-EOF
129
133
  class AR
130
134
  ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
@@ -141,7 +145,7 @@ module RailsBestPractices
141
145
  end
142
146
 
143
147
  context 'activerecord 4' do
144
- it 'should not protect mass assignment for activerecord 4' do
148
+ it 'does not protect mass assignment for activerecord 4' do
145
149
  content = <<-EOF
146
150
  GEM
147
151
  remote: https://rubygems.org
@@ -157,7 +161,7 @@ module RailsBestPractices
157
161
  expect(runner.errors.size).to eq(0)
158
162
  end
159
163
 
160
- it 'should protect mass assignment for activerecord 3' do
164
+ it 'protects mass assignment for activerecord 3' do
161
165
  content = <<-EOF
162
166
  GEM
163
167
  remote: https://rubygems.org
@@ -174,9 +178,12 @@ module RailsBestPractices
174
178
  end
175
179
  end
176
180
 
177
- it 'should not check ignored files' do
178
- runner = Core::Runner.new(prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
179
- reviews: ProtectMassAssignmentReview.new(ignored_files: /app\/models\/user\.rb/))
181
+ it 'does not check ignored files' do
182
+ runner =
183
+ Core::Runner.new(
184
+ prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
185
+ reviews: described_class.new(ignored_files: %r{app/models/user\.rb})
186
+ )
180
187
  content = <<-EOF
181
188
  class User < ActiveRecord::Base
182
189
  end
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe RemoveEmptyHelpersReview do
8
- let(:runner) { Core::Runner.new(reviews: RemoveEmptyHelpersReview.new) }
8
+ let(:runner) { Core::Runner.new(reviews: described_class.new) }
9
9
 
10
- it 'should remove empty helpers' do
10
+ it 'removes empty helpers' do
11
11
  content = <<-EOF
12
12
  module PostsHelper
13
13
  end
@@ -17,7 +17,7 @@ module RailsBestPractices
17
17
  expect(runner.errors[0].to_s).to eq('app/helpers/posts_helper.rb:1 - remove empty helpers')
18
18
  end
19
19
 
20
- it 'should not remove empty helpers' do
20
+ it 'does not remove empty helpers' do
21
21
  content = <<-EOF
22
22
  module PostsHelper
23
23
  def post_link(post)
@@ -29,7 +29,7 @@ module RailsBestPractices
29
29
  expect(runner.errors.size).to eq(0)
30
30
  end
31
31
 
32
- it 'should not remove empty application_helper' do
32
+ it 'does not remove empty application_helper' do
33
33
  content = <<-EOF
34
34
  module ApplicationHelper
35
35
  end
@@ -38,8 +38,8 @@ module RailsBestPractices
38
38
  expect(runner.errors.size).to eq(0)
39
39
  end
40
40
 
41
- it 'should not check ignored files' do
42
- runner = Core::Runner.new(reviews: RemoveEmptyHelpersReview.new(ignored_files: /posts_helper/))
41
+ it 'does not check ignored files' do
42
+ runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_helper/))
43
43
  content = <<-EOF
44
44
  module PostsHelper
45
45
  end
@@ -5,13 +5,15 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe RemoveUnusedMethodsInControllersReview do
8
- let(:runner) { Core::Runner.new(
9
- prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
10
- reviews: RemoveUnusedMethodsInControllersReview.new('except_methods' => ['ExceptableController#*'])
11
- ) }
8
+ let(:runner) do
9
+ Core::Runner.new(
10
+ prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
11
+ reviews: described_class.new('except_methods' => ['ExceptableController#*'])
12
+ )
13
+ end
12
14
 
13
15
  context 'private/protected' do
14
- it 'should remove unused methods' do
16
+ it 'removes unused methods' do
15
17
  content = <<-EOF
16
18
  RailsBestPracticesCom::Application.routes.draw do
17
19
  resources :posts do
@@ -38,11 +40,15 @@ module RailsBestPractices
38
40
  runner.review('app/controllers/posts_controller.rb', content)
39
41
  runner.after_review
40
42
  expect(runner.errors.size).to eq(2)
41
- expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_post)')
42
- expect(runner.errors[1].to_s).to eq('app/controllers/posts_controller.rb:8 - remove unused methods (PostsController#load_user)')
43
+ expect(runner.errors[0].to_s).to eq(
44
+ 'app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_post)'
45
+ )
46
+ expect(runner.errors[1].to_s).to eq(
47
+ 'app/controllers/posts_controller.rb:8 - remove unused methods (PostsController#load_user)'
48
+ )
43
49
  end
44
50
 
45
- it 'should not remove unused methods for before_filter' do
51
+ it 'does not remove unused methods for before_filter' do
46
52
  content = <<-EOF
47
53
  RailsBestPracticesCom::Application.routes.draw do
48
54
  resources :posts
@@ -64,7 +70,7 @@ module RailsBestPractices
64
70
  expect(runner.errors.size).to eq(0)
65
71
  end
66
72
 
67
- it 'should not remove unused methods for around_filter' do
73
+ it 'does not remove unused methods for around_filter' do
68
74
  content = <<-EOF
69
75
  RailsBestPracticesCom::Application.routes.draw do
70
76
  resources :posts
@@ -89,7 +95,25 @@ module RailsBestPractices
89
95
  expect(runner.errors.size).to eq(0)
90
96
  end
91
97
 
92
- it 'should not remove unused methods for layout' do
98
+ it 'does not remove unused methods for around_action (new syntax)' do
99
+ content = <<-EOF
100
+ class PostsController < ActiveRecord::Base
101
+ around_action :use_time_zone
102
+
103
+ protected
104
+
105
+ def use_time_zone(&block)
106
+ Time.use_zone(current_user.time_zone, &block)
107
+ end
108
+ end
109
+ EOF
110
+ runner.prepare('app/controllers/posts_controller.rb', content)
111
+ runner.review('app/controllers/posts_controller.rb', content)
112
+ runner.after_review
113
+ expect(runner.errors.size).to eq(0)
114
+ end
115
+
116
+ it 'does not remove unused methods for layout' do
93
117
  content = <<-EOF
94
118
  RailsBestPracticesCom::Application.routes.draw do
95
119
  resources :posts
@@ -111,7 +135,7 @@ module RailsBestPractices
111
135
  expect(runner.errors.size).to eq(0)
112
136
  end
113
137
 
114
- it 'should not remove inherited_resources methods' do
138
+ it 'does not remove inherited_resources methods' do
115
139
  content = <<-EOF
116
140
  RailsBestPracticesCom::Application.routes.draw do
117
141
  resources :posts
@@ -135,7 +159,7 @@ module RailsBestPractices
135
159
  end
136
160
 
137
161
  context 'public' do
138
- it 'should remove unused methods' do
162
+ it 'removes unused methods' do
139
163
  content = <<-EOF
140
164
  RailsBestPracticesCom::Application.routes.draw do
141
165
  resources :posts
@@ -152,10 +176,12 @@ module RailsBestPractices
152
176
  runner.review('app/controllers/posts_controller.rb', content)
153
177
  runner.after_review
154
178
  expect(runner.errors.size).to eq(1)
155
- expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)')
179
+ expect(runner.errors[0].to_s).to eq(
180
+ 'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)'
181
+ )
156
182
  end
157
183
 
158
- it 'should not remove inline routes' do
184
+ it 'does not remove inline routes' do
159
185
  content = <<-EOF
160
186
  RailsBestPracticesCom::Application.routes.draw do
161
187
  resources :posts, only: :none do
@@ -176,7 +202,7 @@ module RailsBestPractices
176
202
  expect(runner.errors.size).to eq(0)
177
203
  end
178
204
 
179
- it 'should not remove unused methods if all actions are used in route' do
205
+ it 'does not remove unused methods if all actions are used in route' do
180
206
  content = <<-EOF
181
207
  ActionController::Routing::Routes.draw do |map|
182
208
  map.connect 'internal/:action/*whatever', controller: "internal"
@@ -196,7 +222,7 @@ module RailsBestPractices
196
222
  expect(runner.errors.size).to eq(0)
197
223
  end
198
224
 
199
- it 'should not remove unused methods if they are except_methods' do
225
+ it 'does not remove unused methods if they are except_methods' do
200
226
  content = <<-EOF
201
227
  class ExceptableController < ApplicationController
202
228
  def list; end
@@ -210,7 +236,7 @@ module RailsBestPractices
210
236
  end
211
237
 
212
238
  context 'assignment' do
213
- it 'should not remove unused methods if call in base class' do
239
+ it 'does not remove unused methods if call in base class' do
214
240
  content = <<-EOF
215
241
  RailsBestPracticesCom::Application.routes.draw do
216
242
  resources :user, only: :show do; end
@@ -239,7 +265,7 @@ module RailsBestPractices
239
265
  end
240
266
 
241
267
  context 'helper_method' do
242
- it 'should remove unused methods if helper method is not called' do
268
+ it 'removes unused methods if helper method is not called' do
243
269
  content = <<-EOF
244
270
  class PostsController < ApplicationController
245
271
  helper_method :helper_post
@@ -251,10 +277,12 @@ module RailsBestPractices
251
277
  runner.review('app/controllers/posts_controller.rb', content)
252
278
  runner.after_review
253
279
  expect(runner.errors.size).to eq(1)
254
- expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)')
280
+ expect(runner.errors[0].to_s).to eq(
281
+ 'app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)'
282
+ )
255
283
  end
256
284
 
257
- it 'should not remove unused methods if call helper method in views' do
285
+ it 'does not remove unused methods if call helper method in views' do
258
286
  content = <<-EOF
259
287
  class PostsController < ApplicationController
260
288
  helper_method :helper_post
@@ -272,7 +300,7 @@ module RailsBestPractices
272
300
  expect(runner.errors.size).to eq(0)
273
301
  end
274
302
 
275
- it 'should not remove unused methods if call helper method in helpers' do
303
+ it 'does not remove unused methods if call helper method in helpers' do
276
304
  content = <<-EOF
277
305
  class PostsController < ApplicationController
278
306
  helper_method :helper_post
@@ -296,7 +324,7 @@ module RailsBestPractices
296
324
  end
297
325
 
298
326
  context 'delegate to: :controller' do
299
- it 'should remove unused methods if delegate method is not called' do
327
+ it 'removes unused methods if delegate method is not called' do
300
328
  content = <<-EOF
301
329
  class PostsController < ApplicationController
302
330
  protected
@@ -313,10 +341,12 @@ module RailsBestPractices
313
341
  runner.review('app/helpers/posts_helper.rb', content)
314
342
  runner.after_review
315
343
  expect(runner.errors.size).to eq(1)
316
- expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)')
344
+ expect(runner.errors[0].to_s).to eq(
345
+ 'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)'
346
+ )
317
347
  end
318
348
 
319
- it 'should remove unused methods if delegate method is called' do
349
+ it 'removes unused methods if delegate method is called' do
320
350
  content = <<-EOF
321
351
  class PostsController < ApplicationController
322
352
  protected
@@ -341,7 +371,7 @@ module RailsBestPractices
341
371
  end
342
372
 
343
373
  context 'cells' do
344
- it 'should remove unused methods' do
374
+ it 'removes unused methods' do
345
375
  content = <<-EOF
346
376
  class PostsCell < Cell::Rails
347
377
  def list; end
@@ -354,7 +384,7 @@ module RailsBestPractices
354
384
  expect(runner.errors[0].to_s).to eq('app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)')
355
385
  end
356
386
 
357
- it 'should not remove unused methods if render_cell' do
387
+ it 'does not remove unused methods if render_cell' do
358
388
  content = <<-EOF
359
389
  class PostsCell < Cell::Rails
360
390
  def list; end
@@ -372,7 +402,7 @@ module RailsBestPractices
372
402
  expect(runner.errors.size).to eq(0)
373
403
  end
374
404
 
375
- it 'should not remove unused methods if render with state' do
405
+ it 'does not remove unused methods if render with state' do
376
406
  content = <<-EOF
377
407
  class PostsCell < Cell::Rails
378
408
  def list
@@ -395,7 +425,7 @@ module RailsBestPractices
395
425
  end
396
426
  end
397
427
 
398
- it 'should not remove unused methods' do
428
+ it 'does not remove unused methods' do
399
429
  route_content = <<-EOF
400
430
  RailsBestPracticesCom::Application.routes.draw do
401
431
  namespace :admin do
@@ -432,9 +462,12 @@ module RailsBestPractices
432
462
  expect(runner.errors.size).to eq(0)
433
463
  end
434
464
 
435
- it 'should not check ignored files' do
436
- runner = Core::Runner.new(prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
437
- reviews: RemoveUnusedMethodsInControllersReview.new(ignored_files: /posts_controller/, except_methods: []))
465
+ it 'does not check ignored files' do
466
+ runner =
467
+ Core::Runner.new(
468
+ prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
469
+ reviews: described_class.new(ignored_files: /posts_controller/, except_methods: [])
470
+ )
438
471
  content = <<-EOF
439
472
  RailsBestPracticesCom::Application.routes.draw do
440
473
  resources :posts do
@@ -5,12 +5,14 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe RemoveUnusedMethodsInHelpersReview do
8
- let(:runner) { Core::Runner.new(
9
- prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
10
- reviews: RemoveUnusedMethodsInHelpersReview.new(except_methods: [])
11
- ) }
8
+ let(:runner) do
9
+ Core::Runner.new(
10
+ prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
11
+ reviews: described_class.new(except_methods: [])
12
+ )
13
+ end
12
14
 
13
- it 'should remove unused methods' do
15
+ it 'removes unused methods' do
14
16
  content = <<-EOF
15
17
  module PostsHelper
16
18
  def unused; end
@@ -20,10 +22,12 @@ module RailsBestPractices
20
22
  runner.review('app/helpers/posts_helper.rb', content)
21
23
  runner.after_review
22
24
  expect(runner.errors.size).to eq(1)
23
- expect(runner.errors[0].to_s).to eq('app/helpers/posts_helper.rb:2 - remove unused methods (PostsHelper#unused)')
25
+ expect(runner.errors[0].to_s).to eq(
26
+ 'app/helpers/posts_helper.rb:2 - remove unused methods (PostsHelper#unused)'
27
+ )
24
28
  end
25
29
 
26
- it 'should not remove unused methods if called on views' do
30
+ it 'does not remove unused methods if called on views' do
27
31
  content = <<-EOF
28
32
  module PostsHelper
29
33
  def used?(post); end
@@ -40,7 +44,7 @@ module RailsBestPractices
40
44
  expect(runner.errors.size).to eq(0)
41
45
  end
42
46
 
43
- it 'should not remove unused methods if called on helpers' do
47
+ it 'does not remove unused methods if called on helpers' do
44
48
  content = <<-EOF
45
49
  module PostsHelper
46
50
  def used?(post)
@@ -61,7 +65,7 @@ module RailsBestPractices
61
65
  expect(runner.errors.size).to eq(0)
62
66
  end
63
67
 
64
- it 'should not remove unused methods if called on controllers' do
68
+ it 'does not remove unused methods if called on controllers' do
65
69
  helper_content = <<-EOF
66
70
  module PostsHelper
67
71
  def used?(post); end
@@ -86,7 +90,7 @@ module RailsBestPractices
86
90
  expect(runner.errors.size).to eq(0)
87
91
  end
88
92
 
89
- it 'should not remove unused methods if called in descendant controllers' do
93
+ it 'does not remove unused methods if called in descendant controllers' do
90
94
  application_helper_content = <<-EOF
91
95
  module ApplicationHelper
92
96
  def admin?; end
@@ -116,9 +120,12 @@ module RailsBestPractices
116
120
  expect(runner.errors.size).to eq(0)
117
121
  end
118
122
 
119
- it 'should not check ignored files' do
120
- runner = Core::Runner.new(prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
121
- reviews: RemoveUnusedMethodsInHelpersReview.new(ignored_files: /posts_helper/, except_methods: []))
123
+ it 'does not check ignored files' do
124
+ runner =
125
+ Core::Runner.new(
126
+ prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
127
+ reviews: described_class.new(ignored_files: /posts_helper/, except_methods: [])
128
+ )
122
129
 
123
130
  content = <<-EOF
124
131
  module PostsHelper
@@ -129,7 +136,7 @@ module RailsBestPractices
129
136
  runner.review('app/helpers/posts_helper.rb', content)
130
137
  runner.after_review
131
138
  expect(runner.errors.size).to eq(0)
132
- end
139
+ end
133
140
  end
134
141
  end
135
142
  end