rails_best_practices 1.20.0 → 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.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +30 -26
- data/Guardfile +2 -0
- data/Rakefile +2 -0
- data/lib/rails_best_practices.rb +1 -2
- data/lib/rails_best_practices/analyzer.rb +56 -46
- data/lib/rails_best_practices/core/check.rb +39 -32
- data/lib/rails_best_practices/core/checks_loader.rb +8 -6
- 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 +21 -16
- data/lib/rails_best_practices/core/model_associations.rb +9 -4
- 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 +29 -33
- data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
- data/lib/rails_best_practices/option_parser.rb +17 -6
- data/lib/rails_best_practices/prepares.rb +1 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
- data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
- data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
- data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
- data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
- data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
- data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +34 -29
- data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
- data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
- data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
- data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
- data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
- data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
- data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
- data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
- data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
- data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
- data/lib/rails_best_practices/reviews/use_model_association_review.rb +5 -5
- data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
- data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
- data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
- data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
- 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 +35 -36
- 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 -21
- 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/lexicals/long_line_check_spec.rb +11 -10
- 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 +2 -2
- 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 +138 -77
- 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 +9 -9
- 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 +21 -14
- 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 +26 -16
- 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 -19
- 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 +44 -31
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
- 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 +16 -10
- 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 +21 -17
- 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 +9 -7
- 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 +10 -8
- metadata +7 -7
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 '
|
21
|
+
it 'replaces instance variable with local varialbe in haml file' do
|
20
22
|
content = <<~EOF
|
21
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 '
|
32
|
+
it 'replaces instance variable with local varialbe in slim file' do
|
29
33
|
content = <<~EOF
|
30
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
|
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe RestrictAutoGeneratedRoutesReview do
|
8
|
-
let(:runner) { Core::Runner.new(prepares: Prepares::ControllerPrepare.new, reviews:
|
8
|
+
let(:runner) { Core::Runner.new(prepares: Prepares::ControllerPrepare.new, reviews: described_class.new) }
|
9
9
|
|
10
10
|
describe 'resources' do
|
11
|
-
before
|
11
|
+
before do
|
12
12
|
content = <<-EOF
|
13
13
|
class PostsController < ApplicationController
|
14
14
|
def show; end
|
@@ -22,7 +22,7 @@ module RailsBestPractices
|
|
22
22
|
runner.prepare('app/controllers/posts_controller.rb', content)
|
23
23
|
end
|
24
24
|
|
25
|
-
it '
|
25
|
+
it 'restricts auto-generated routes' do
|
26
26
|
content = <<-EOF
|
27
27
|
RailsBestPracticesCom::Application.routes.draw do
|
28
28
|
resources :posts
|
@@ -30,10 +30,12 @@ module RailsBestPractices
|
|
30
30
|
EOF
|
31
31
|
runner.review('config/routes.rb', content)
|
32
32
|
expect(runner.errors.size).to eq(1)
|
33
|
-
expect(runner.errors[0].to_s).to eq(
|
33
|
+
expect(runner.errors[0].to_s).to eq(
|
34
|
+
'config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])'
|
35
|
+
)
|
34
36
|
end
|
35
37
|
|
36
|
-
it '
|
38
|
+
it 'does not restrict auto-generated routes with only' do
|
37
39
|
content = <<-EOF
|
38
40
|
RailsBestPracticesCom::Application.routes.draw do
|
39
41
|
resources :posts, only: %w(show new create edit update destroy)
|
@@ -43,7 +45,7 @@ module RailsBestPractices
|
|
43
45
|
expect(runner.errors.size).to eq(0)
|
44
46
|
end
|
45
47
|
|
46
|
-
it '
|
48
|
+
it 'does not restrict auto-generated routes with except' do
|
47
49
|
content = <<-EOF
|
48
50
|
RailsBestPracticesCom::Application.routes.draw do
|
49
51
|
resources :posts, except: :index
|
@@ -54,7 +56,7 @@ module RailsBestPractices
|
|
54
56
|
end
|
55
57
|
|
56
58
|
describe 'specify a controller' do
|
57
|
-
it '
|
59
|
+
it 'restricts auto-generated routes' do
|
58
60
|
content = <<-EOF
|
59
61
|
RailsBestPracticesCom::Application.routes.draw do
|
60
62
|
resources :articles, controller: "posts"
|
@@ -62,7 +64,9 @@ module RailsBestPractices
|
|
62
64
|
EOF
|
63
65
|
runner.review('config/routes.rb', content)
|
64
66
|
expect(runner.errors.size).to eq(1)
|
65
|
-
expect(runner.errors[0].to_s).to eq(
|
67
|
+
expect(runner.errors[0].to_s).to eq(
|
68
|
+
'config/routes.rb:2 - restrict auto-generated routes articles (except: [:index])'
|
69
|
+
)
|
66
70
|
end
|
67
71
|
end
|
68
72
|
|
@@ -81,7 +85,7 @@ module RailsBestPractices
|
|
81
85
|
runner.prepare('app/controllers/admin/comments_controller.rb', content)
|
82
86
|
end
|
83
87
|
|
84
|
-
it '
|
88
|
+
it 'restricts auto-generated routes' do
|
85
89
|
content = <<-EOF
|
86
90
|
RailsBestPracticesCom::Application.routes.draw do
|
87
91
|
namespace :admin do
|
@@ -91,10 +95,12 @@ module RailsBestPractices
|
|
91
95
|
EOF
|
92
96
|
runner.review('config/routes.rb', content)
|
93
97
|
expect(runner.errors.size).to eq(1)
|
94
|
-
expect(runner.errors[0].to_s).to eq(
|
98
|
+
expect(runner.errors[0].to_s).to eq(
|
99
|
+
'config/routes.rb:3 - restrict auto-generated routes admin/comments (except: [:index])'
|
100
|
+
)
|
95
101
|
end
|
96
102
|
|
97
|
-
it '
|
103
|
+
it 'restricts auto-generated routes with scope :module' do
|
98
104
|
content = <<-EOF
|
99
105
|
RailsBestPracticesCom::Application.routes.draw do
|
100
106
|
scope module: :admin do
|
@@ -104,10 +110,12 @@ module RailsBestPractices
|
|
104
110
|
EOF
|
105
111
|
runner.review('config/routes.rb', content)
|
106
112
|
expect(runner.errors.size).to eq(1)
|
107
|
-
expect(runner.errors[0].to_s).to eq(
|
113
|
+
expect(runner.errors[0].to_s).to eq(
|
114
|
+
'config/routes.rb:3 - restrict auto-generated routes admin/comments (except: [:index])'
|
115
|
+
)
|
108
116
|
end
|
109
117
|
|
110
|
-
it '
|
118
|
+
it 'restricts auto-generated routes with resources :module' do
|
111
119
|
content = <<-EOF
|
112
120
|
RailsBestPracticesCom::Application.routes.draw do
|
113
121
|
resources :comments, module: :admin
|
@@ -115,12 +123,14 @@ module RailsBestPractices
|
|
115
123
|
EOF
|
116
124
|
runner.review('config/routes.rb', content)
|
117
125
|
expect(runner.errors.size).to eq(1)
|
118
|
-
expect(runner.errors[0].to_s).to eq(
|
126
|
+
expect(runner.errors[0].to_s).to eq(
|
127
|
+
'config/routes.rb:2 - restrict auto-generated routes admin/comments (except: [:index])'
|
128
|
+
)
|
119
129
|
end
|
120
130
|
end
|
121
131
|
|
122
132
|
describe 'nested routes' do
|
123
|
-
before
|
133
|
+
before do
|
124
134
|
content = <<-EOF
|
125
135
|
class CommentsController < ApplicationController
|
126
136
|
def index; end
|
@@ -135,7 +145,7 @@ module RailsBestPractices
|
|
135
145
|
runner.prepare('app/controllers/comments_controller.rb', content)
|
136
146
|
end
|
137
147
|
|
138
|
-
it '
|
148
|
+
it 'restricts auto-generated routes' do
|
139
149
|
content = <<-EOF
|
140
150
|
RailsBestPracticesCom::Application.routes.draw do
|
141
151
|
resources :posts do
|
@@ -145,10 +155,12 @@ module RailsBestPractices
|
|
145
155
|
EOF
|
146
156
|
runner.review('config/routes.rb', content)
|
147
157
|
expect(runner.errors.size).to eq(1)
|
148
|
-
expect(runner.errors[0].to_s).to eq(
|
158
|
+
expect(runner.errors[0].to_s).to eq(
|
159
|
+
'config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])'
|
160
|
+
)
|
149
161
|
end
|
150
162
|
|
151
|
-
it '
|
163
|
+
it 'does not restrict auto-generated routes with only' do
|
152
164
|
content = <<-EOF
|
153
165
|
RailsBestPracticesCom::Application.routes.draw do
|
154
166
|
resources :posts, only: %w(show new create edit update destroy) do
|
@@ -160,7 +172,7 @@ module RailsBestPractices
|
|
160
172
|
expect(runner.errors.size).to eq(0)
|
161
173
|
end
|
162
174
|
|
163
|
-
it '
|
175
|
+
it 'does not restrict auto-generated routes with except' do
|
164
176
|
content = <<-EOF
|
165
177
|
RailsBestPracticesCom::Application.routes.draw do
|
166
178
|
resources :posts, except: :index do
|
@@ -175,7 +187,7 @@ module RailsBestPractices
|
|
175
187
|
end
|
176
188
|
|
177
189
|
describe 'resource' do
|
178
|
-
before
|
190
|
+
before do
|
179
191
|
content = <<-EOF
|
180
192
|
class AccountsController < ApplicationController
|
181
193
|
def show; end
|
@@ -188,7 +200,7 @@ module RailsBestPractices
|
|
188
200
|
runner.prepare('app/controllers/accounts_controller.rb', content)
|
189
201
|
end
|
190
202
|
|
191
|
-
it '
|
203
|
+
it 'restricts auto-generated routes' do
|
192
204
|
content = <<-EOF
|
193
205
|
ActionController::Routing::Routes.draw do |map|
|
194
206
|
map.resource :account
|
@@ -196,10 +208,12 @@ module RailsBestPractices
|
|
196
208
|
EOF
|
197
209
|
runner.review('config/routes.rb', content)
|
198
210
|
expect(runner.errors.size).to eq(1)
|
199
|
-
expect(runner.errors[0].to_s).to eq(
|
211
|
+
expect(runner.errors[0].to_s).to eq(
|
212
|
+
'config/routes.rb:2 - restrict auto-generated routes account (except: [:destroy])'
|
213
|
+
)
|
200
214
|
end
|
201
215
|
|
202
|
-
it '
|
216
|
+
it 'does not restrict auto-generated routes with only' do
|
203
217
|
content = <<-EOF
|
204
218
|
ActionController::Routing::Routes.draw do |map|
|
205
219
|
map.resource :account, only: %w(show new create edit update)
|
@@ -209,7 +223,7 @@ module RailsBestPractices
|
|
209
223
|
expect(runner.errors.size).to eq(0)
|
210
224
|
end
|
211
225
|
|
212
|
-
it '
|
226
|
+
it 'does not restrict auto-generated routes with except' do
|
213
227
|
content = <<-EOF
|
214
228
|
ActionController::Routing::Routes.draw do |map|
|
215
229
|
map.resource :account, except: :destroy
|
@@ -219,9 +233,12 @@ module RailsBestPractices
|
|
219
233
|
expect(runner.errors.size).to eq(0)
|
220
234
|
end
|
221
235
|
|
222
|
-
it '
|
223
|
-
runner =
|
224
|
-
|
236
|
+
it 'does not check ignored files' do
|
237
|
+
runner =
|
238
|
+
Core::Runner.new(
|
239
|
+
prepares: Prepares::ControllerPrepare.new,
|
240
|
+
reviews: described_class.new(ignored_files: %r{config/routes\.rb})
|
241
|
+
)
|
225
242
|
|
226
243
|
content = <<-EOF
|
227
244
|
ActionController::Routing::Routes.draw do |map|
|
@@ -234,7 +251,11 @@ module RailsBestPractices
|
|
234
251
|
end
|
235
252
|
|
236
253
|
context 'api_only = true' do
|
237
|
-
let(:runner)
|
254
|
+
let(:runner) do
|
255
|
+
Core::Runner.new(
|
256
|
+
prepares: [Prepares::ConfigPrepare.new, Prepares::ControllerPrepare.new], reviews: described_class.new
|
257
|
+
)
|
258
|
+
end
|
238
259
|
|
239
260
|
before do
|
240
261
|
content = <<-EOF
|
@@ -256,7 +277,7 @@ module RailsBestPractices
|
|
256
277
|
runner.prepare('app/controllers/posts_controller.rb', content)
|
257
278
|
end
|
258
279
|
|
259
|
-
it '
|
280
|
+
it 'restricts auto-generated routes' do
|
260
281
|
content = <<-EOF
|
261
282
|
RailsBestPracticesCom::Application.routes.draw do
|
262
283
|
resources :posts
|
@@ -264,10 +285,12 @@ module RailsBestPractices
|
|
264
285
|
EOF
|
265
286
|
runner.review('config/routes.rb', content)
|
266
287
|
expect(runner.errors.size).to eq(1)
|
267
|
-
expect(runner.errors[0].to_s).to eq(
|
288
|
+
expect(runner.errors[0].to_s).to eq(
|
289
|
+
'config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])'
|
290
|
+
)
|
268
291
|
end
|
269
292
|
|
270
|
-
it '
|
293
|
+
it 'does not restrict auto-generated routes with only' do
|
271
294
|
content = <<-EOF
|
272
295
|
RailsBestPracticesCom::Application.routes.draw do
|
273
296
|
resources :posts, only: %w(show create update destroy)
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe SimplifyRenderInControllersReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'simplifies render action view' do
|
11
11
|
content = <<-EOF
|
12
12
|
def edit
|
13
13
|
render action: :edit
|
@@ -18,7 +18,7 @@ module RailsBestPractices
|
|
18
18
|
expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:2 - simplify render in controllers')
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "simplifies render actions's template" do
|
22
22
|
content = <<-EOF
|
23
23
|
def edit
|
24
24
|
render template: 'books/edit'
|
@@ -29,7 +29,7 @@ module RailsBestPractices
|
|
29
29
|
expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:2 - simplify render in controllers')
|
30
30
|
end
|
31
31
|
|
32
|
-
it '
|
32
|
+
it 'simplifies render an arbitrary file' do
|
33
33
|
content = <<-EOF
|
34
34
|
def edit
|
35
35
|
render file: '/path/to/rails/app/views/books/edit'
|
@@ -40,7 +40,7 @@ module RailsBestPractices
|
|
40
40
|
expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:2 - simplify render in controllers')
|
41
41
|
end
|
42
42
|
|
43
|
-
it '
|
43
|
+
it 'does not simplify render action view' do
|
44
44
|
content = <<-EOF
|
45
45
|
render :edit
|
46
46
|
EOF
|
@@ -48,7 +48,7 @@ module RailsBestPractices
|
|
48
48
|
expect(runner.errors.size).to eq(0)
|
49
49
|
end
|
50
50
|
|
51
|
-
it "
|
51
|
+
it "does not simplify render actions's template" do
|
52
52
|
content = <<-EOF
|
53
53
|
def edit
|
54
54
|
render 'books/edit'
|
@@ -58,7 +58,7 @@ module RailsBestPractices
|
|
58
58
|
expect(runner.errors.size).to eq(0)
|
59
59
|
end
|
60
60
|
|
61
|
-
it '
|
61
|
+
it 'does not simplify render an arbitrary file' do
|
62
62
|
content = <<-EOF
|
63
63
|
def edit
|
64
64
|
render '/path/to/rails/app/views/books/edit'
|
@@ -68,8 +68,8 @@ module RailsBestPractices
|
|
68
68
|
expect(runner.errors.size).to eq(0)
|
69
69
|
end
|
70
70
|
|
71
|
-
it '
|
72
|
-
runner = Core::Runner.new(reviews:
|
71
|
+
it 'does not check ignored files' do
|
72
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_controller/))
|
73
73
|
content = <<-EOF
|
74
74
|
def edit
|
75
75
|
render action: :edit
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe SimplifyRenderInViewsReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'simplifies render simple partial' do
|
11
11
|
content = <<-EOF
|
12
12
|
<%= render partial: 'sidebar' %>
|
13
13
|
EOF
|
@@ -16,7 +16,7 @@ module RailsBestPractices
|
|
16
16
|
expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
|
17
17
|
end
|
18
18
|
|
19
|
-
it '
|
19
|
+
it 'simplifies render partial with object' do
|
20
20
|
content = <<-EOF
|
21
21
|
<%= render partial: 'post', object: @post %>
|
22
22
|
EOF
|
@@ -25,7 +25,7 @@ module RailsBestPractices
|
|
25
25
|
expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
|
26
26
|
end
|
27
27
|
|
28
|
-
it '
|
28
|
+
it 'simplifies render partial with collection' do
|
29
29
|
content = <<-EOF
|
30
30
|
<%= render partial: 'posts', collection: @posts %>
|
31
31
|
EOF
|
@@ -34,7 +34,7 @@ module RailsBestPractices
|
|
34
34
|
expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
|
35
35
|
end
|
36
36
|
|
37
|
-
it '
|
37
|
+
it 'simplifies render partial with local variables' do
|
38
38
|
content = <<-EOF
|
39
39
|
<%= render partial: 'comment', locals: { parent: post } %>
|
40
40
|
EOF
|
@@ -43,7 +43,7 @@ module RailsBestPractices
|
|
43
43
|
expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
|
44
44
|
end
|
45
45
|
|
46
|
-
it '
|
46
|
+
it 'does not simplify render simple partial' do
|
47
47
|
content = <<-EOF
|
48
48
|
<%= render 'sidebar' %>
|
49
49
|
<%= render 'shared/sidebar' %>
|
@@ -52,7 +52,7 @@ module RailsBestPractices
|
|
52
52
|
expect(runner.errors.size).to eq(0)
|
53
53
|
end
|
54
54
|
|
55
|
-
it '
|
55
|
+
it 'does not simplify render partial with object' do
|
56
56
|
content = <<-EOF
|
57
57
|
<%= render @post %>
|
58
58
|
EOF
|
@@ -60,7 +60,7 @@ module RailsBestPractices
|
|
60
60
|
expect(runner.errors.size).to eq(0)
|
61
61
|
end
|
62
62
|
|
63
|
-
it '
|
63
|
+
it 'does not simplify render partial with collection' do
|
64
64
|
content = <<-EOF
|
65
65
|
<%= render @posts %>
|
66
66
|
EOF
|
@@ -68,7 +68,7 @@ module RailsBestPractices
|
|
68
68
|
expect(runner.errors.size).to eq(0)
|
69
69
|
end
|
70
70
|
|
71
|
-
it '
|
71
|
+
it 'does not simplify render partial with local variables' do
|
72
72
|
content = <<-EOF
|
73
73
|
<%= render 'comment', parent: post %>
|
74
74
|
EOF
|
@@ -76,7 +76,7 @@ module RailsBestPractices
|
|
76
76
|
expect(runner.errors.size).to eq(0)
|
77
77
|
end
|
78
78
|
|
79
|
-
it '
|
79
|
+
it 'does not simplify render partial with complex partial' do
|
80
80
|
content = <<-EOF
|
81
81
|
<%= render partial: 'shared/post', object: @post %>
|
82
82
|
EOF
|
@@ -84,7 +84,7 @@ module RailsBestPractices
|
|
84
84
|
expect(runner.errors.size).to eq(0)
|
85
85
|
end
|
86
86
|
|
87
|
-
it '
|
87
|
+
it 'does not simplify render partial with layout option' do
|
88
88
|
content = <<-EOF
|
89
89
|
<%= render partial: 'post', layout: 'post' %>
|
90
90
|
EOF
|
@@ -92,8 +92,8 @@ module RailsBestPractices
|
|
92
92
|
expect(runner.errors.size).to eq(0)
|
93
93
|
end
|
94
94
|
|
95
|
-
it '
|
96
|
-
runner = Core::Runner.new(reviews:
|
95
|
+
it 'does not check ignored files' do
|
96
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: %r{views/posts/index}))
|
97
97
|
content = <<-EOF
|
98
98
|
<%= render partial: 'sidebar' %>
|
99
99
|
EOF
|