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,10 +5,14 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe ProtectMassAssignmentReview do
|
8
|
-
let(:runner)
|
9
|
-
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
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 '
|
178
|
-
runner =
|
179
|
-
|
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:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
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 '
|
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 '
|
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 '
|
42
|
-
runner = Core::Runner.new(reviews:
|
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)
|
9
|
-
|
10
|
-
|
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 '
|
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(
|
42
|
-
|
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 '
|
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 '
|
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,7 @@ module RailsBestPractices
|
|
89
95
|
expect(runner.errors.size).to eq(0)
|
90
96
|
end
|
91
97
|
|
92
|
-
it '
|
98
|
+
it 'does not remove unused methods for around_action (new syntax)' do
|
93
99
|
content = <<-EOF
|
94
100
|
class PostsController < ActiveRecord::Base
|
95
101
|
around_action :use_time_zone
|
@@ -107,7 +113,7 @@ module RailsBestPractices
|
|
107
113
|
expect(runner.errors.size).to eq(0)
|
108
114
|
end
|
109
115
|
|
110
|
-
it '
|
116
|
+
it 'does not remove unused methods for layout' do
|
111
117
|
content = <<-EOF
|
112
118
|
RailsBestPracticesCom::Application.routes.draw do
|
113
119
|
resources :posts
|
@@ -129,7 +135,7 @@ module RailsBestPractices
|
|
129
135
|
expect(runner.errors.size).to eq(0)
|
130
136
|
end
|
131
137
|
|
132
|
-
it '
|
138
|
+
it 'does not remove inherited_resources methods' do
|
133
139
|
content = <<-EOF
|
134
140
|
RailsBestPracticesCom::Application.routes.draw do
|
135
141
|
resources :posts
|
@@ -153,7 +159,7 @@ module RailsBestPractices
|
|
153
159
|
end
|
154
160
|
|
155
161
|
context 'public' do
|
156
|
-
it '
|
162
|
+
it 'removes unused methods' do
|
157
163
|
content = <<-EOF
|
158
164
|
RailsBestPracticesCom::Application.routes.draw do
|
159
165
|
resources :posts
|
@@ -170,10 +176,12 @@ module RailsBestPractices
|
|
170
176
|
runner.review('app/controllers/posts_controller.rb', content)
|
171
177
|
runner.after_review
|
172
178
|
expect(runner.errors.size).to eq(1)
|
173
|
-
expect(runner.errors[0].to_s).to eq(
|
179
|
+
expect(runner.errors[0].to_s).to eq(
|
180
|
+
'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)'
|
181
|
+
)
|
174
182
|
end
|
175
183
|
|
176
|
-
it '
|
184
|
+
it 'does not remove inline routes' do
|
177
185
|
content = <<-EOF
|
178
186
|
RailsBestPracticesCom::Application.routes.draw do
|
179
187
|
resources :posts, only: :none do
|
@@ -194,7 +202,7 @@ module RailsBestPractices
|
|
194
202
|
expect(runner.errors.size).to eq(0)
|
195
203
|
end
|
196
204
|
|
197
|
-
it '
|
205
|
+
it 'does not remove unused methods if all actions are used in route' do
|
198
206
|
content = <<-EOF
|
199
207
|
ActionController::Routing::Routes.draw do |map|
|
200
208
|
map.connect 'internal/:action/*whatever', controller: "internal"
|
@@ -214,7 +222,7 @@ module RailsBestPractices
|
|
214
222
|
expect(runner.errors.size).to eq(0)
|
215
223
|
end
|
216
224
|
|
217
|
-
it '
|
225
|
+
it 'does not remove unused methods if they are except_methods' do
|
218
226
|
content = <<-EOF
|
219
227
|
class ExceptableController < ApplicationController
|
220
228
|
def list; end
|
@@ -228,7 +236,7 @@ module RailsBestPractices
|
|
228
236
|
end
|
229
237
|
|
230
238
|
context 'assignment' do
|
231
|
-
it '
|
239
|
+
it 'does not remove unused methods if call in base class' do
|
232
240
|
content = <<-EOF
|
233
241
|
RailsBestPracticesCom::Application.routes.draw do
|
234
242
|
resources :user, only: :show do; end
|
@@ -257,7 +265,7 @@ module RailsBestPractices
|
|
257
265
|
end
|
258
266
|
|
259
267
|
context 'helper_method' do
|
260
|
-
it '
|
268
|
+
it 'removes unused methods if helper method is not called' do
|
261
269
|
content = <<-EOF
|
262
270
|
class PostsController < ApplicationController
|
263
271
|
helper_method :helper_post
|
@@ -269,10 +277,12 @@ module RailsBestPractices
|
|
269
277
|
runner.review('app/controllers/posts_controller.rb', content)
|
270
278
|
runner.after_review
|
271
279
|
expect(runner.errors.size).to eq(1)
|
272
|
-
expect(runner.errors[0].to_s).to eq(
|
280
|
+
expect(runner.errors[0].to_s).to eq(
|
281
|
+
'app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)'
|
282
|
+
)
|
273
283
|
end
|
274
284
|
|
275
|
-
it '
|
285
|
+
it 'does not remove unused methods if call helper method in views' do
|
276
286
|
content = <<-EOF
|
277
287
|
class PostsController < ApplicationController
|
278
288
|
helper_method :helper_post
|
@@ -290,7 +300,7 @@ module RailsBestPractices
|
|
290
300
|
expect(runner.errors.size).to eq(0)
|
291
301
|
end
|
292
302
|
|
293
|
-
it '
|
303
|
+
it 'does not remove unused methods if call helper method in helpers' do
|
294
304
|
content = <<-EOF
|
295
305
|
class PostsController < ApplicationController
|
296
306
|
helper_method :helper_post
|
@@ -314,7 +324,7 @@ module RailsBestPractices
|
|
314
324
|
end
|
315
325
|
|
316
326
|
context 'delegate to: :controller' do
|
317
|
-
it '
|
327
|
+
it 'removes unused methods if delegate method is not called' do
|
318
328
|
content = <<-EOF
|
319
329
|
class PostsController < ApplicationController
|
320
330
|
protected
|
@@ -331,10 +341,12 @@ module RailsBestPractices
|
|
331
341
|
runner.review('app/helpers/posts_helper.rb', content)
|
332
342
|
runner.after_review
|
333
343
|
expect(runner.errors.size).to eq(1)
|
334
|
-
expect(runner.errors[0].to_s).to eq(
|
344
|
+
expect(runner.errors[0].to_s).to eq(
|
345
|
+
'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)'
|
346
|
+
)
|
335
347
|
end
|
336
348
|
|
337
|
-
it '
|
349
|
+
it 'removes unused methods if delegate method is called' do
|
338
350
|
content = <<-EOF
|
339
351
|
class PostsController < ApplicationController
|
340
352
|
protected
|
@@ -359,7 +371,7 @@ module RailsBestPractices
|
|
359
371
|
end
|
360
372
|
|
361
373
|
context 'cells' do
|
362
|
-
it '
|
374
|
+
it 'removes unused methods' do
|
363
375
|
content = <<-EOF
|
364
376
|
class PostsCell < Cell::Rails
|
365
377
|
def list; end
|
@@ -372,7 +384,7 @@ module RailsBestPractices
|
|
372
384
|
expect(runner.errors[0].to_s).to eq('app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)')
|
373
385
|
end
|
374
386
|
|
375
|
-
it '
|
387
|
+
it 'does not remove unused methods if render_cell' do
|
376
388
|
content = <<-EOF
|
377
389
|
class PostsCell < Cell::Rails
|
378
390
|
def list; end
|
@@ -390,7 +402,7 @@ module RailsBestPractices
|
|
390
402
|
expect(runner.errors.size).to eq(0)
|
391
403
|
end
|
392
404
|
|
393
|
-
it '
|
405
|
+
it 'does not remove unused methods if render with state' do
|
394
406
|
content = <<-EOF
|
395
407
|
class PostsCell < Cell::Rails
|
396
408
|
def list
|
@@ -413,7 +425,7 @@ module RailsBestPractices
|
|
413
425
|
end
|
414
426
|
end
|
415
427
|
|
416
|
-
it '
|
428
|
+
it 'does not remove unused methods' do
|
417
429
|
route_content = <<-EOF
|
418
430
|
RailsBestPracticesCom::Application.routes.draw do
|
419
431
|
namespace :admin do
|
@@ -450,9 +462,12 @@ module RailsBestPractices
|
|
450
462
|
expect(runner.errors.size).to eq(0)
|
451
463
|
end
|
452
464
|
|
453
|
-
it '
|
454
|
-
runner =
|
455
|
-
|
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
|
+
)
|
456
471
|
content = <<-EOF
|
457
472
|
RailsBestPracticesCom::Application.routes.draw do
|
458
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)
|
9
|
-
|
10
|
-
|
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 '
|
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(
|
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 '
|
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 '
|
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 '
|
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 '
|
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
|
-
|
120
|
-
runner =
|
121
|
-
|
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
|
-
|
139
|
+
end
|
133
140
|
end
|
134
141
|
end
|
135
142
|
end
|