rails_best_practices 1.20.0 → 1.22.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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +49 -43
  5. data/Guardfile +2 -0
  6. data/Rakefile +2 -0
  7. data/assets/result.html.erb +2 -0
  8. data/lib/rails_best_practices/analyzer.rb +59 -48
  9. data/lib/rails_best_practices/core/check.rb +39 -32
  10. data/lib/rails_best_practices/core/checks_loader.rb +8 -6
  11. data/lib/rails_best_practices/core/configs.rb +1 -2
  12. data/lib/rails_best_practices/core/controllers.rb +1 -2
  13. data/lib/rails_best_practices/core/error.rb +1 -1
  14. data/lib/rails_best_practices/core/helpers.rb +1 -2
  15. data/lib/rails_best_practices/core/mailers.rb +1 -2
  16. data/lib/rails_best_practices/core/methods.rb +21 -16
  17. data/lib/rails_best_practices/core/model_associations.rb +9 -4
  18. data/lib/rails_best_practices/core/models.rb +1 -2
  19. data/lib/rails_best_practices/core/modules.rb +1 -1
  20. data/lib/rails_best_practices/core/routes.rb +2 -2
  21. data/lib/rails_best_practices/core/runner.rb +49 -34
  22. data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
  23. data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
  24. data/lib/rails_best_practices/inline_disables.rb +3 -0
  25. data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
  26. data/lib/rails_best_practices/option_parser.rb +22 -6
  27. data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
  28. data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
  29. data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
  30. data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
  31. data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
  32. data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
  33. data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
  34. data/lib/rails_best_practices/prepares.rb +1 -1
  35. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
  36. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +34 -29
  37. data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
  38. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
  39. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
  40. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
  41. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
  42. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
  43. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
  44. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
  45. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
  46. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
  47. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
  48. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
  49. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
  50. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
  51. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
  52. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
  53. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
  54. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
  55. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
  56. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
  57. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
  58. data/lib/rails_best_practices/reviews/use_model_association_review.rb +5 -5
  59. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
  60. data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
  61. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
  62. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
  63. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
  64. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
  65. data/lib/rails_best_practices/version.rb +1 -1
  66. data/lib/rails_best_practices.rb +2 -2
  67. data/rails_best_practices.gemspec +39 -38
  68. data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
  69. data/spec/rails_best_practices/analyzer_spec.rb +73 -42
  70. data/spec/rails_best_practices/core/check_spec.rb +5 -5
  71. data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
  72. data/spec/rails_best_practices/core/configs_spec.rb +1 -1
  73. data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
  74. data/spec/rails_best_practices/core/error_spec.rb +21 -21
  75. data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
  76. data/spec/rails_best_practices/core/gems_spec.rb +4 -4
  77. data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
  78. data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
  79. data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
  80. data/spec/rails_best_practices/core/methods_spec.rb +6 -6
  81. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
  82. data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
  83. data/spec/rails_best_practices/core/models_spec.rb +1 -1
  84. data/spec/rails_best_practices/core/modules_spec.rb +5 -5
  85. data/spec/rails_best_practices/core/routes_spec.rb +5 -5
  86. data/spec/rails_best_practices/core/runner_spec.rb +9 -7
  87. data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
  88. data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
  89. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +11 -10
  90. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  91. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  92. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
  93. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
  94. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +2 -2
  95. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
  96. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
  97. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  98. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
  99. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +138 -77
  100. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
  101. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
  102. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
  103. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
  104. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
  105. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  106. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
  107. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +9 -9
  108. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
  109. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  110. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +21 -14
  111. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  112. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
  113. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +26 -16
  114. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  115. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
  116. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
  117. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
  118. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
  119. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
  120. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  121. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -19
  122. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
  123. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +44 -31
  124. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
  125. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
  126. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
  127. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -10
  128. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
  129. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
  130. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
  131. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
  132. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  133. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +21 -17
  134. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  135. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +9 -7
  136. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
  137. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
  138. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
  139. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +10 -8
  140. metadata +12 -7
@@ -6,20 +6,22 @@ module RailsBestPractices::Core
6
6
  describe Runner do
7
7
  describe 'load_plugin_reviews' do
8
8
  shared_examples_for 'load_plugin_reviews' do
9
- it 'should load plugins in lib/rails_best_practices/plugins/reviews' do
10
- runner = Runner.new
11
- expect(runner.instance_variable_get('@reviews').map(&:class)).to include(RailsBestPractices::Plugins::Reviews::NotUseRailsRootReview)
9
+ it 'loads plugins in lib/rails_best_practices/plugins/reviews' do
10
+ runner = described_class.new
11
+ expect(runner.instance_variable_get('@reviews').map(&:class)).to include(
12
+ RailsBestPractices::Plugins::Reviews::NotUseRailsRootReview
13
+ )
12
14
  end
13
15
  end
14
16
 
15
17
  context 'given a path that ends with a slash' do
16
- before { Runner.base_path = 'spec/fixtures/' }
17
- it_should_behave_like 'load_plugin_reviews'
18
+ before { described_class.base_path = 'spec/fixtures/' }
19
+ it_behaves_like 'load_plugin_reviews'
18
20
  end
19
21
 
20
22
  context 'given a path that does not end with a slash' do
21
- before { Runner.base_path = 'spec/fixtures' }
22
- it_should_behave_like 'load_plugin_reviews'
23
+ before { described_class.base_path = 'spec/fixtures' }
24
+ it_behaves_like 'load_plugin_reviews'
23
25
  end
24
26
  end
25
27
  end
@@ -3,7 +3,7 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Erubis::OnlyRuby do
6
- subject {
6
+ subject do
7
7
  content = <<-EOF
8
8
  <h1>Title</h1>
9
9
  <% if current_user %>
@@ -13,14 +13,14 @@ describe Erubis::OnlyRuby do
13
13
  Not logged in
14
14
  <% end %>
15
15
  EOF
16
- Erubis::OnlyRuby.new(content).src
17
- }
16
+ described_class.new(content).src
17
+ end
18
18
 
19
- it { should_not include('h1') }
20
- it { should_not include('Title') }
21
- it { should_not include('Not logged in') }
22
- it { should include('current_user') }
23
- it { should include('if') }
24
- it { should include('else') }
25
- it { should include('end') }
19
+ it { is_expected.not_to include('h1') }
20
+ it { is_expected.not_to include('Title') }
21
+ it { is_expected.not_to include('Not logged in') }
22
+ it { is_expected.to include('current_user') }
23
+ it { is_expected.to include('if') }
24
+ it { is_expected.to include('else') }
25
+ it { is_expected.to include('end') }
26
26
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ module RailsBestPractices
6
+ module InlineDisables
7
+ describe InlineDisable do
8
+ let(:runner) { Core::Runner.new(reviews: Reviews::MoveModelLogicIntoModelReview.new) }
9
+
10
+ it 'moves model logic into model' do
11
+ content = <<-EOF
12
+ class PostsController < ApplicationController
13
+ def publish
14
+ @post = Post.find(params[:id])
15
+ @post.update_attributes(:is_published, true)
16
+ @post.approved_by = current_user
17
+
18
+ if @post.created_at > Time.now - 7.days
19
+ @post.popular = 100
20
+ else
21
+ @post.popular = 0
22
+ end
23
+
24
+ redirect_to post_url(@post)
25
+ end
26
+ end
27
+ EOF
28
+ runner.review('app/controllers/posts_controller.rb', content)
29
+ runner.inline_disable('app/controllers/posts_controller.rb', content)
30
+
31
+ expect(runner.errors.size).to eq(1)
32
+ expect(runner.errors[0].to_s).to eq(
33
+ 'app/controllers/posts_controller.rb:2 - move model logic into model (@post use_count > 4)'
34
+ )
35
+ end
36
+
37
+ it 'is no error is output' do
38
+ content = <<-EOF
39
+ class PostsController < ApplicationController
40
+ def publish # rails_best_practices:disable MoveModelLogicIntoModelCheck
41
+ @post = Post.find(params[:id])
42
+ @post.update_attributes(:is_published, true)
43
+ @post.approved_by = current_user
44
+
45
+ if @post.created_at > Time.now - 7.days
46
+ @post.popular = 100
47
+ else
48
+ @post.popular = 0
49
+ end
50
+
51
+ redirect_to post_url(@post)
52
+ end
53
+ end
54
+ EOF
55
+ runner.review('app/controllers/posts_controller.rb', content)
56
+ runner.inline_disable('app/controllers/posts_controller.rb', content)
57
+
58
+ expect(runner.errors.size).to eq(0)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -5,8 +5,8 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Lexicals
7
7
  describe LongLineCheck do
8
- it 'should find long lines' do
9
- runner = Core::Runner.new(lexicals: LongLineCheck.new)
8
+ it 'finds long lines' do
9
+ runner = Core::Runner.new(lexicals: described_class.new)
10
10
  content = <<~EOF
11
11
  class User < ActiveRecord::Base
12
12
  # 81 Chars
@@ -20,8 +20,8 @@ module RailsBestPractices
20
20
  expect(runner.errors.size).to eq(1)
21
21
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:3 - line is longer than 80 characters (81 characters)')
22
22
  end
23
- it 'should find long lines with own max size' do
24
- runner = Core::Runner.new(lexicals: LongLineCheck.new('max_line_length' => 90))
23
+ it 'finds long lines with own max size' do
24
+ runner = Core::Runner.new(lexicals: described_class.new('max_line_length' => 90))
25
25
  content = <<~EOF
26
26
  class User < ActiveRecord::Base
27
27
  # 91 Chars
@@ -35,16 +35,17 @@ module RailsBestPractices
35
35
  expect(runner.errors.size).to eq(1)
36
36
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:3 - line is longer than 90 characters (91 characters)')
37
37
  end
38
- it 'should not check non .rb files' do
39
- runner = Core::Runner.new(lexicals: LongLineCheck.new)
40
- content = "
38
+ it 'does not check non .rb files' do
39
+ runner = Core::Runner.new(lexicals: described_class.new)
40
+ content =
41
+ '
41
42
  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
42
- "
43
+ '
43
44
  runner.lexical('app/views/users/index.html.erb', content)
44
45
  expect(runner.errors.size).to eq(0)
45
46
  end
46
- it 'should not check ignored files' do
47
- runner = Core::Runner.new(lexicals: LongLineCheck.new(max_line_length: 80, ignored_files: /user/))
47
+ it 'does not check ignored files' do
48
+ runner = Core::Runner.new(lexicals: described_class.new(max_line_length: 80, ignored_files: /user/))
48
49
  content = <<~EOF
49
50
  class User < ActiveRecord::Base
50
51
  # 81 Chars
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Lexicals
7
7
  describe RemoveTabCheck do
8
- let(:runner) { Core::Runner.new(lexicals: RemoveTabCheck.new) }
8
+ let(:runner) { Core::Runner.new(lexicals: described_class.new) }
9
9
 
10
- it 'should remove tab' do
10
+ it 'removes tab' do
11
11
  content = <<-EOF
12
12
  class User < ActiveRecord::Base
13
13
  has_many :projects
@@ -19,7 +19,7 @@ module RailsBestPractices
19
19
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:1 - remove tab, use spaces instead')
20
20
  end
21
21
 
22
- it 'should remove tab with third line' do
22
+ it 'removes tab with third line' do
23
23
  content = <<-EOF
24
24
  class User < ActiveRecord::Base
25
25
  has_many :projects
@@ -31,7 +31,7 @@ module RailsBestPractices
31
31
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:3 - remove tab, use spaces instead')
32
32
  end
33
33
 
34
- it 'should not remove trailing whitespace' do
34
+ it 'does not remove trailing whitespace' do
35
35
  content = <<-EOF
36
36
  class User < ActiveRecord::Base
37
37
  has_many :projects
@@ -40,8 +40,8 @@ module RailsBestPractices
40
40
  runner.lexical('app/models/user.rb', content)
41
41
  expect(runner.errors.size).to eq(0)
42
42
  end
43
- it 'should not check ignored files' do
44
- runner = Core::Runner.new(lexicals: RemoveTabCheck.new(ignored_files: /user/))
43
+ it 'does not check ignored files' do
44
+ runner = Core::Runner.new(lexicals: described_class.new(ignored_files: /user/))
45
45
  content = <<-EOF
46
46
  class User < ActiveRecord::Base
47
47
  has_many :projects
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Lexicals
7
7
  describe RemoveTrailingWhitespaceCheck do
8
- let(:runner) { Core::Runner.new(lexicals: RemoveTrailingWhitespaceCheck.new) }
8
+ let(:runner) { Core::Runner.new(lexicals: described_class.new) }
9
9
 
10
- it 'should remove trailing whitespace' do
10
+ it 'removes trailing whitespace' do
11
11
  content = <<-EOF
12
12
  class User < ActiveRecord::Base
13
13
  has_many :projects
@@ -19,7 +19,7 @@ module RailsBestPractices
19
19
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:1 - remove trailing whitespace')
20
20
  end
21
21
 
22
- it 'should remove whitespace with third line' do
22
+ it 'removes whitespace with third line' do
23
23
  content = <<-EOF
24
24
  class User < ActiveRecord::Base
25
25
  has_many :projects
@@ -31,7 +31,7 @@ module RailsBestPractices
31
31
  expect(runner.errors[0].to_s).to eq('app/models/user.rb:3 - remove trailing whitespace')
32
32
  end
33
33
 
34
- it 'should not remove trailing whitespace' do
34
+ it 'does not remove trailing whitespace' do
35
35
  content = <<-EOF
36
36
  class User < ActiveRecord::Base
37
37
  has_many :projects
@@ -41,8 +41,8 @@ module RailsBestPractices
41
41
  expect(runner.errors.size).to eq(0)
42
42
  end
43
43
 
44
- it 'should not check ignored files' do
45
- runner = Core::Runner.new(lexicals: RemoveTrailingWhitespaceCheck.new(ignored_files: /user/))
44
+ it 'does not check ignored files' do
45
+ runner = Core::Runner.new(lexicals: described_class.new(ignored_files: /user/))
46
46
  content = <<-EOF
47
47
  class User < ActiveRecord::Base
48
48
  has_many :projects
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe ConfigPrepare do
8
- let(:runner) { Core::Runner.new(prepares: ConfigPrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
10
  context 'configs' do
11
- it 'should parse configs' do
11
+ it 'parses configs' do
12
12
  content = <<-EOF
13
13
  module RailsBestPracticesCom
14
14
  class Application < Rails::Application
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe ControllerPrepare do
8
- let(:runner) { Core::Runner.new(prepares: [ControllerPrepare.new, HelperPrepare.new]) }
8
+ let(:runner) { Core::Runner.new(prepares: [described_class.new, HelperPrepare.new]) }
9
9
 
10
10
  context 'methods' do
11
- it 'should parse controller methods' do
11
+ it 'parses controller methods' do
12
12
  content = <<-EOF
13
13
  class PostsController < ApplicationController
14
14
  def index; end
@@ -20,7 +20,7 @@ module RailsBestPractices
20
20
  expect(methods.get_methods('PostsController').map(&:method_name)).to eq(%w[index show])
21
21
  end
22
22
 
23
- it 'should parse model methods with access control' do
23
+ it 'parses model methods with access control' do
24
24
  content = <<-EOF
25
25
  class PostsController < ApplicationController
26
26
  def index; end
@@ -39,7 +39,7 @@ module RailsBestPractices
39
39
  expect(methods.get_methods('PostsController', 'private').map(&:method_name)).to eq(['resource'])
40
40
  end
41
41
 
42
- it 'should parse controller methods with module ::' do
42
+ it 'parses controller methods with module ::' do
43
43
  content = <<-EOF
44
44
  class Admin::Blog::PostsController < ApplicationController
45
45
  def index; end
@@ -51,7 +51,7 @@ module RailsBestPractices
51
51
  expect(methods.get_methods('Admin::Blog::PostsController').map(&:method_name)).to eq(%w[index show])
52
52
  end
53
53
 
54
- it 'should parse controller methods with module' do
54
+ it 'parses controller methods with module' do
55
55
  content = <<-EOF
56
56
  module Admin
57
57
  module Blog
@@ -75,7 +75,9 @@ module RailsBestPractices
75
75
  EOF
76
76
  runner.prepare('app/controllers/posts_controller.rb', content)
77
77
  methods = Prepares.controller_methods
78
- expect(methods.get_methods('PostsController').map(&:method_name)).to eq(%w[index show new create edit update destroy])
78
+ expect(methods.get_methods('PostsController').map(&:method_name)).to eq(
79
+ %w[index show new create edit update destroy]
80
+ )
79
81
  end
80
82
 
81
83
  it 'extend inherited_resources with actions' do
@@ -97,7 +99,9 @@ module RailsBestPractices
97
99
  EOF
98
100
  runner.prepare('app/controllers/posts_controller.rb', content)
99
101
  methods = Prepares.controller_methods
100
- expect(methods.get_methods('PostsController').map(&:method_name)).to eq(%w[index new create edit update destroy])
102
+ expect(methods.get_methods('PostsController').map(&:method_name)).to eq(
103
+ %w[index new create edit update destroy]
104
+ )
101
105
  end
102
106
 
103
107
  it 'extend inherited_resources with all actions with no arguments' do
@@ -108,7 +112,9 @@ module RailsBestPractices
108
112
  EOF
109
113
  runner.prepare('app/controllers/posts_controller.rb', content)
110
114
  methods = Prepares.controller_methods
111
- expect(methods.get_methods('PostsController').map(&:method_name)).to eq(%w[index show new create edit update destroy])
115
+ expect(methods.get_methods('PostsController').map(&:method_name)).to eq(
116
+ %w[index show new create edit update destroy]
117
+ )
112
118
  end
113
119
 
114
120
  it 'DSL inherit_resources' do
@@ -119,13 +125,15 @@ module RailsBestPractices
119
125
  EOF
120
126
  runner.prepare('app/controllers/posts_controller.rb', content)
121
127
  methods = Prepares.controller_methods
122
- expect(methods.get_methods('PostsController').map(&:method_name)).to eq(%w[index show new create edit update destroy])
128
+ expect(methods.get_methods('PostsController').map(&:method_name)).to eq(
129
+ %w[index show new create edit update destroy]
130
+ )
123
131
  end
124
132
  end
125
133
  end
126
134
 
127
135
  context 'helpers' do
128
- it 'should add helper descendant' do
136
+ it 'adds helper descendant' do
129
137
  content = <<-EOF
130
138
  module PostsHelper
131
139
  end
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe GemfilePrepare do
8
- let(:runner) { Core::Runner.new(prepares: GemfilePrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
10
  context 'gemfile' do
11
- it 'should parse gems' do
11
+ it 'parses gems' do
12
12
  content = <<~EOF
13
13
  GEM
14
14
  remote: https://rubygems.org/
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe HelperPrepare do
8
- let(:runner) { Core::Runner.new(prepares: HelperPrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
10
  context 'methods' do
11
- it 'should parse helper methods' do
11
+ it 'parses helper methods' do
12
12
  content = <<-EOF
13
13
  module PostsHelper
14
14
  def used; end
@@ -20,7 +20,7 @@ module RailsBestPractices
20
20
  expect(methods.get_methods('PostsHelper').map(&:method_name)).to eq(%w[used unused])
21
21
  end
22
22
 
23
- it 'should parse helpers' do
23
+ it 'parses helpers' do
24
24
  content = <<-EOF
25
25
  module PostsHelper
26
26
  end
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe InitializerPrepare do
8
- let(:runner) { Core::Runner.new(prepares: InitializerPrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
10
  context 'initializers' do
11
- it 'should set include_forbidden_attributes_protection config' do
11
+ it 'sets include_forbidden_attributes_protection config' do
12
12
  content = <<-EOF
13
13
  class AR
14
14
  ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
@@ -19,7 +19,7 @@ module RailsBestPractices
19
19
  expect(configs['railsbp.include_forbidden_attributes_protection']).to eq('true')
20
20
  end
21
21
 
22
- it 'should not set include_forbidden_attributes_protection config' do
22
+ it 'does not set include_forbidden_attributes_protection config' do
23
23
  content = <<-EOF
24
24
  class AR
25
25
  end
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe MailerPrepare do
8
- let(:runner) { Core::Runner.new(prepares: MailerPrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
- it 'should parse mailer names' do
10
+ it 'parses mailer names' do
11
11
  content = <<-EOF
12
12
  class ProjectMailer < ActionMailer::Base
13
13
  end