rails_best_practices 1.14.4 → 1.15.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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +1 -0
  4. data/README.md +26 -6
  5. data/lib/rails_best_practices/core/check.rb +15 -2
  6. data/lib/rails_best_practices/core/klasses.rb +13 -3
  7. data/lib/rails_best_practices/core/model_associations.rb +1 -1
  8. data/lib/rails_best_practices/core/runner.rb +2 -0
  9. data/lib/rails_best_practices/lexicals/long_line_check.rb +1 -1
  10. data/lib/rails_best_practices/prepares/route_prepare.rb +17 -1
  11. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +2 -2
  12. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +2 -2
  13. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +1 -1
  14. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +1 -1
  15. data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +1 -1
  16. data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +1 -1
  17. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +1 -1
  18. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +1 -1
  19. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +1 -2
  20. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +1 -1
  21. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +2 -1
  22. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +15 -26
  23. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +4 -2
  24. data/lib/rails_best_practices/version.rb +1 -1
  25. data/spec/rails_best_practices/analyzer_spec.rb +11 -11
  26. data/spec/rails_best_practices/core/check_spec.rb +1 -1
  27. data/spec/rails_best_practices/core/error_spec.rb +6 -6
  28. data/spec/rails_best_practices/core/klasses_spec.rb +26 -2
  29. data/spec/rails_best_practices/core/methods_spec.rb +18 -18
  30. data/spec/rails_best_practices/core/model_associations_spec.rb +6 -6
  31. data/spec/rails_best_practices/core/model_attributes_spec.rb +6 -6
  32. data/spec/rails_best_practices/core/modules_spec.rb +3 -3
  33. data/spec/rails_best_practices/core/routes_spec.rb +4 -4
  34. data/spec/rails_best_practices/core/runner_spec.rb +1 -1
  35. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +18 -6
  36. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +18 -5
  37. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +17 -5
  38. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +1 -1
  39. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +13 -13
  40. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +1 -1
  41. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +2 -2
  42. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +2 -2
  43. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +1 -1
  44. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +44 -44
  45. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +102 -78
  46. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +6 -6
  47. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +25 -9
  48. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +43 -23
  49. data/spec/rails_best_practices/reviews/check_save_return_value_spec.rb +34 -20
  50. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +16 -5
  51. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +25 -3
  52. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +18 -7
  53. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +30 -7
  54. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +24 -8
  55. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +24 -12
  56. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +17 -5
  57. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +14 -3
  58. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +24 -13
  59. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +25 -6
  60. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +26 -4
  61. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +31 -18
  62. data/spec/rails_best_practices/reviews/not_rescue_exception_spec.rb +23 -10
  63. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +34 -7
  64. data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +19 -8
  65. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +33 -19
  66. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +25 -13
  67. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +14 -4
  68. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +91 -23
  69. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +20 -5
  70. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +66 -41
  71. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +28 -4
  72. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -7
  73. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +45 -32
  74. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +20 -9
  75. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +23 -14
  76. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +34 -7
  77. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +21 -6
  78. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +124 -79
  79. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +12 -12
  80. data/spec/rails_best_practices/reviews/use_parenthesis_in_method_def_spec.rb +16 -4
  81. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +39 -27
  82. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +22 -8
  83. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +39 -21
  84. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +66 -7
  85. metadata +36 -37
  86. data/.ruby-gemset +0 -1
@@ -11,8 +11,8 @@ module RailsBestPractices
11
11
  <%= time_ago_in_words(post.created_at) %>
12
12
  EOF
13
13
  runner.review('app/views/posts/show.html.erb', content)
14
- runner.should have(1).errors
15
- runner.errors[0].to_s.should == "app/views/posts/show.html.erb:1 - not use time_ago_in_words"
14
+ expect(runner.errors.size).to eq(1)
15
+ expect(runner.errors[0].to_s).to eq("app/views/posts/show.html.erb:1 - not use time_ago_in_words")
16
16
  end
17
17
 
18
18
  it "should not use in helpers" do
@@ -22,8 +22,8 @@ module RailsBestPractices
22
22
  end
23
23
  EOF
24
24
  runner.review('app/helpers/posts_helper.rb', content)
25
- runner.should have(1).errors
26
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:2 - not use time_ago_in_words"
25
+ expect(runner.errors.size).to eq(1)
26
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:2 - not use time_ago_in_words")
27
27
  end
28
28
  end
29
29
 
@@ -33,8 +33,8 @@ module RailsBestPractices
33
33
  <%= distance_of_time_in_words_to_now(post.created_at) %>
34
34
  EOF
35
35
  runner.review('app/views/posts/show.html.erb', content)
36
- runner.should have(1).errors
37
- runner.errors[0].to_s.should == "app/views/posts/show.html.erb:1 - not use time_ago_in_words"
36
+ expect(runner.errors.size).to eq(1)
37
+ expect(runner.errors[0].to_s).to eq("app/views/posts/show.html.erb:1 - not use time_ago_in_words")
38
38
  end
39
39
 
40
40
  it "should not use in helpers" do
@@ -44,10 +44,21 @@ module RailsBestPractices
44
44
  end
45
45
  EOF
46
46
  runner.review('app/helpers/posts_helper.rb', content)
47
- runner.should have(1).errors
48
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:2 - not use time_ago_in_words"
47
+ expect(runner.errors.size).to eq(1)
48
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:2 - not use time_ago_in_words")
49
49
  end
50
50
  end
51
+
52
+ it "should not check ignored files" do
53
+ runner = Core::Runner.new(reviews: NotUseTimeAgoInWordsReview.new(ignored_files: /posts_helper/))
54
+ content =<<-EOF
55
+ def timeago
56
+ content_tag(:p, time_ago_in_words(post.created_at))
57
+ end
58
+ EOF
59
+ runner.review('app/helpers/posts_helper.rb', content)
60
+ expect(runner.errors.size).to eq(0)
61
+ end
51
62
  end
52
63
  end
53
64
  end
@@ -16,8 +16,8 @@ module RailsBestPractices
16
16
  end
17
17
  EOF
18
18
  runner.review('config/routes.rb', content)
19
- runner.should have(1).errors
20
- runner.errors[0].to_s.should == "config/routes.rb:2 - overuse route customizations (customize_count > 3)"
19
+ expect(runner.errors.size).to eq(1)
20
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - overuse route customizations (customize_count > 3)")
21
21
  end
22
22
 
23
23
  it "should overuse route customizations with member" do
@@ -30,8 +30,8 @@ module RailsBestPractices
30
30
  end
31
31
  EOF
32
32
  runner.review('config/routes.rb', content)
33
- runner.should have(1).errors
34
- runner.errors[0].to_s.should == "config/routes.rb:2 - overuse route customizations (customize_count > 3)"
33
+ expect(runner.errors.size).to eq(1)
34
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - overuse route customizations (customize_count > 3)")
35
35
  end
36
36
 
37
37
  it "should overuse route customizations with collection" do
@@ -44,8 +44,8 @@ module RailsBestPractices
44
44
  end
45
45
  EOF
46
46
  runner.review('config/routes.rb', content)
47
- runner.should have(1).errors
48
- runner.errors[0].to_s.should == "config/routes.rb:2 - overuse route customizations (customize_count > 3)"
47
+ expect(runner.errors.size).to eq(1)
48
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - overuse route customizations (customize_count > 3)")
49
49
  end
50
50
 
51
51
  it "should overuse route customizations with hash member and collection" do
@@ -60,8 +60,8 @@ module RailsBestPractices
60
60
  end
61
61
  EOF
62
62
  runner.review('config/routes.rb', content)
63
- runner.should have(1).errors
64
- runner.errors[0].to_s.should == "config/routes.rb:3 - overuse route customizations (customize_count > 3)"
63
+ expect(runner.errors.size).to eq(1)
64
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:3 - overuse route customizations (customize_count > 3)")
65
65
  end
66
66
 
67
67
  it "should overuse route customizations with array member and collection" do
@@ -74,8 +74,8 @@ module RailsBestPractices
74
74
  end
75
75
  EOF
76
76
  runner.review('config/routes.rb', content)
77
- runner.should have(1).errors
78
- runner.errors[0].to_s.should == "config/routes.rb:3 - overuse route customizations (customize_count > 3)"
77
+ expect(runner.errors.size).to eq(1)
78
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:3 - overuse route customizations (customize_count > 3)")
79
79
  end
80
80
 
81
81
  it "should not overuse route customizations without customization" do
@@ -85,7 +85,7 @@ module RailsBestPractices
85
85
  end
86
86
  EOF
87
87
  runner.review('config/routes.rb', content)
88
- runner.should have(0).errors
88
+ expect(runner.errors.size).to eq(0)
89
89
  end
90
90
 
91
91
  it "should not overuse route customizations when customize route is only one" do
@@ -95,7 +95,7 @@ module RailsBestPractices
95
95
  end
96
96
  EOF
97
97
  runner.review('config/routes.rb', content)
98
- runner.should have(0).errors
98
+ expect(runner.errors.size).to eq(0)
99
99
  end
100
100
 
101
101
  it "should not raise error for constants in routes" do
@@ -108,7 +108,7 @@ module RailsBestPractices
108
108
  end
109
109
  EOF
110
110
  runner.review('config/routes.rb', content)
111
- runner.should have(0).errors
111
+ expect(runner.errors.size).to eq(0)
112
112
  end
113
113
  end
114
114
 
@@ -130,8 +130,8 @@ module RailsBestPractices
130
130
  end
131
131
  EOF
132
132
  runner.review('config/routes.rb', content)
133
- runner.should have(1).errors
134
- runner.errors[0].to_s.should == "config/routes.rb:2 - overuse route customizations (customize_count > 3)"
133
+ expect(runner.errors.size).to eq(1)
134
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - overuse route customizations (customize_count > 3)")
135
135
  end
136
136
 
137
137
  it "should overuse route customizations another way" do
@@ -146,8 +146,8 @@ module RailsBestPractices
146
146
  end
147
147
  EOF
148
148
  runner.review('config/routes.rb', content)
149
- runner.should have(1).errors
150
- runner.errors[0].to_s.should == "config/routes.rb:2 - overuse route customizations (customize_count > 3)"
149
+ expect(runner.errors.size).to eq(1)
150
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - overuse route customizations (customize_count > 3)")
151
151
  end
152
152
 
153
153
  it "should not overuse route customizations without customization" do
@@ -157,7 +157,7 @@ module RailsBestPractices
157
157
  end
158
158
  EOF
159
159
  runner.review('config/routes.rb', content)
160
- runner.should have(0).errors
160
+ expect(runner.errors.size).to eq(0)
161
161
  end
162
162
 
163
163
  it "should not overuse route customizations when customize route is only one" do
@@ -171,9 +171,23 @@ module RailsBestPractices
171
171
  end
172
172
  EOF
173
173
  runner.review('config/routes.rb', content)
174
- runner.should have(0).errors
174
+ expect(runner.errors.size).to eq(0)
175
175
  end
176
176
  end
177
+
178
+ it "should not check ignored files" do
179
+ runner = Core::Runner.new(reviews: OveruseRouteCustomizationsReview.new(ignored_files: /config\/routes\.rb/))
180
+ content = <<-EOF
181
+ ActionController::Routing::Routes.draw do |map|
182
+ map.resources :posts, member: { comments: :get,
183
+ create_comment: :post,
184
+ update_comment: :update,
185
+ delete_comment: :delete }
186
+ end
187
+ EOF
188
+ runner.review('config/routes.rb', content)
189
+ expect(runner.errors.size).to eq(0)
190
+ end
177
191
  end
178
192
  end
179
193
  end
@@ -12,8 +12,8 @@ module RailsBestPractices
12
12
  end
13
13
  EOF
14
14
  runner.review('app/models/user.rb', content)
15
- runner.should have(1).errors
16
- runner.errors[0].to_s.should == "app/models/user.rb:1 - protect mass assignment"
15
+ expect(runner.errors.size).to eq(1)
16
+ expect(runner.errors[0].to_s).to eq("app/models/user.rb:1 - protect mass assignment")
17
17
  end
18
18
 
19
19
  it "should not protect mass assignment if attr_accessible is used with arguments and user set config.active_record.whitelist_attributes" do
@@ -31,7 +31,7 @@ module RailsBestPractices
31
31
  end
32
32
  EOF
33
33
  runner.review('app/models/user.rb', content)
34
- runner.should have(0).errors
34
+ expect(runner.errors.size).to eq(0)
35
35
  end
36
36
 
37
37
  it "should not protect mass assignment if attr_accessible is used without arguments and user set config.active_record.whitelist_attributes" do
@@ -49,7 +49,7 @@ module RailsBestPractices
49
49
  end
50
50
  EOF
51
51
  runner.review('app/models/user.rb', content)
52
- runner.should have(0).errors
52
+ expect(runner.errors.size).to eq(0)
53
53
  end
54
54
 
55
55
  it "should not protect mass assignment with attr_protected if user set config.active_record.whitelist_attributes" do
@@ -67,7 +67,7 @@ module RailsBestPractices
67
67
  end
68
68
  EOF
69
69
  runner.review('app/models/user.rb', content)
70
- runner.should have(0).errors
70
+ expect(runner.errors.size).to eq(0)
71
71
  end
72
72
 
73
73
  it "should not protect mass assignment if using devise" do
@@ -77,7 +77,7 @@ module RailsBestPractices
77
77
  end
78
78
  EOF
79
79
  runner.review('app/models/user.rb', content)
80
- runner.should have(0).errors
80
+ expect(runner.errors.size).to eq(0)
81
81
  end
82
82
 
83
83
  it "should not protect mass assignment if using authlogic with configuration" do
@@ -89,7 +89,7 @@ module RailsBestPractices
89
89
  end
90
90
  EOF
91
91
  runner.review('app/models/user.rb', content)
92
- runner.should have(0).errors
92
+ expect(runner.errors.size).to eq(0)
93
93
  end
94
94
 
95
95
  it "should not protect mass assignment if using authlogic without configuration" do
@@ -99,7 +99,7 @@ module RailsBestPractices
99
99
  end
100
100
  EOF
101
101
  runner.review('app/models/user.rb', content)
102
- runner.should have(0).errors
102
+ expect(runner.errors.size).to eq(0)
103
103
  end
104
104
 
105
105
  it "should not protect mass assignment if checking non ActiveRecord::Base inherited model" do
@@ -108,7 +108,7 @@ module RailsBestPractices
108
108
  end
109
109
  EOF
110
110
  runner.review('app/models/user.rb', content)
111
- runner.should have(0).errors
111
+ expect(runner.errors.size).to eq(0)
112
112
  end
113
113
 
114
114
  context "strong_parameters" do
@@ -119,7 +119,7 @@ module RailsBestPractices
119
119
  end
120
120
  EOF
121
121
  runner.review('app/models/user.rb', content)
122
- runner.should have(0).errors
122
+ expect(runner.errors.size).to eq(0)
123
123
  end
124
124
 
125
125
  it "should not protect mass assignment for strong_parameters" do
@@ -134,7 +134,7 @@ module RailsBestPractices
134
134
  end
135
135
  EOF
136
136
  runner.review('app/models/user.rb', content)
137
- runner.should have(0).errors
137
+ expect(runner.errors.size).to eq(0)
138
138
  end
139
139
  end
140
140
 
@@ -152,7 +152,7 @@ module RailsBestPractices
152
152
  end
153
153
  EOF
154
154
  runner.review('app/models/user.rb', content)
155
- runner.should have(0).errors
155
+ expect(runner.errors.size).to eq(0)
156
156
  end
157
157
 
158
158
  it "should protect mass assignment for rails 3" do
@@ -168,9 +168,21 @@ module RailsBestPractices
168
168
  end
169
169
  EOF
170
170
  runner.review('app/models/user.rb', content)
171
- runner.should have(1).errors
171
+ expect(runner.errors.size).to eq(1)
172
172
  end
173
173
  end
174
+
175
+
176
+ it "should not check ignored files" do
177
+ runner = Core::Runner.new(prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
178
+ reviews: ProtectMassAssignmentReview.new(ignored_files: /app\/models\/user\.rb/))
179
+ content =<<-EOF
180
+ class User < ActiveRecord::Base
181
+ end
182
+ EOF
183
+ runner.review('app/models/user.rb', content)
184
+ expect(runner.errors.size).to eq(0)
185
+ end
174
186
  end
175
187
  end
176
188
  end
@@ -11,8 +11,8 @@ module RailsBestPractices
11
11
  end
12
12
  EOF
13
13
  runner.review('app/helpers/posts_helper.rb', content)
14
- runner.should have(1).errors
15
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:1 - remove empty helpers"
14
+ expect(runner.errors.size).to eq(1)
15
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:1 - remove empty helpers")
16
16
  end
17
17
 
18
18
  it "should not remove empty helpers" do
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  end
25
25
  EOF
26
26
  runner.review('app/helpers/posts_helper.rb', content)
27
- runner.should have(0).errors
27
+ expect(runner.errors.size).to eq(0)
28
28
  end
29
29
 
30
30
  it "should not remove empty application_helper" do
@@ -33,7 +33,17 @@ module RailsBestPractices
33
33
  end
34
34
  EOF
35
35
  runner.review('app/helpers/application_helper.rb', content)
36
- runner.should have(0).errors
36
+ expect(runner.errors.size).to eq(0)
37
+ end
38
+
39
+ it "should not check ignored files" do
40
+ runner = Core::Runner.new(reviews: RemoveEmptyHelpersReview.new(ignored_files: /posts_helper/))
41
+ content =<<-EOF
42
+ module PostsHelper
43
+ end
44
+ EOF
45
+ runner.review('app/helpers/posts_helper.rb', content)
46
+ expect(runner.errors.size).to eq(0)
37
47
  end
38
48
  end
39
49
  end
@@ -35,9 +35,9 @@ module RailsBestPractices
35
35
  runner.prepare('app/controllers/posts_controller.rb', content)
36
36
  runner.review('app/controllers/posts_controller.rb', content)
37
37
  runner.after_review
38
- runner.should have(2).errors
39
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_post)"
40
- runner.errors[1].to_s.should == "app/controllers/posts_controller.rb:8 - remove unused methods (PostsController#load_user)"
38
+ expect(runner.errors.size).to eq(2)
39
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_post)")
40
+ expect(runner.errors[1].to_s).to eq("app/controllers/posts_controller.rb:8 - remove unused methods (PostsController#load_user)")
41
41
  end
42
42
 
43
43
  it "should not remove unused methods for before_filter" do
@@ -59,7 +59,7 @@ module RailsBestPractices
59
59
  runner.prepare('app/controllers/posts_controller.rb', content)
60
60
  runner.review('app/controllers/posts_controller.rb', content)
61
61
  runner.after_review
62
- runner.should have(0).errors
62
+ expect(runner.errors.size).to eq(0)
63
63
  end
64
64
 
65
65
  it "should not remove unused methods for around_filter" do
@@ -84,7 +84,7 @@ module RailsBestPractices
84
84
  runner.prepare('app/controllers/posts_controller.rb', content)
85
85
  runner.review('app/controllers/posts_controller.rb', content)
86
86
  runner.after_review
87
- runner.should have(0).errors
87
+ expect(runner.errors.size).to eq(0)
88
88
  end
89
89
 
90
90
  it "should not remove unused methods for layout" do
@@ -106,7 +106,7 @@ module RailsBestPractices
106
106
  runner.prepare('app/controllers/posts_controller.rb', content)
107
107
  runner.review('app/controllers/posts_controller.rb', content)
108
108
  runner.after_review
109
- runner.should have(0).errors
109
+ expect(runner.errors.size).to eq(0)
110
110
  end
111
111
 
112
112
  it "should not remove inherited_resources methods" do
@@ -128,7 +128,7 @@ module RailsBestPractices
128
128
  runner.prepare('app/controllers/posts_controller.rb', content)
129
129
  runner.review('app/controllers/posts_controller.rb', content)
130
130
  runner.after_review
131
- runner.should have(0).errors
131
+ expect(runner.errors.size).to eq(0)
132
132
  end
133
133
  end
134
134
 
@@ -149,8 +149,8 @@ module RailsBestPractices
149
149
  runner.prepare('app/controllers/posts_controller.rb', content)
150
150
  runner.review('app/controllers/posts_controller.rb', content)
151
151
  runner.after_review
152
- runner.should have(1).errors
153
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)"
152
+ expect(runner.errors.size).to eq(1)
153
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)")
154
154
  end
155
155
 
156
156
  it "should not remove unused methods if all actions are used in route" do
@@ -170,7 +170,7 @@ module RailsBestPractices
170
170
  runner.prepare('app/controllers/internal_controller.rb', content)
171
171
  runner.review('app/controllers/internal_controller.rb', content)
172
172
  runner.after_review
173
- runner.should have(0).errors
173
+ expect(runner.errors.size).to eq(0)
174
174
  end
175
175
 
176
176
  it "should not remove unused methods if they are except_methods" do
@@ -182,7 +182,7 @@ module RailsBestPractices
182
182
  runner.prepare('app/controllers/exceptable_controller.rb', content)
183
183
  runner.review('app/controllers/exceptable_controller.rb', content)
184
184
  runner.after_review
185
- runner.should have(0).errors
185
+ expect(runner.errors.size).to eq(0)
186
186
  end
187
187
  end
188
188
 
@@ -211,7 +211,7 @@ module RailsBestPractices
211
211
  runner.review('app/controllers/application_controller.rb', application_content)
212
212
  runner.review('app/controllers/users_controller.rb', users_content)
213
213
  runner.after_review
214
- runner.should have(0).errors
214
+ expect(runner.errors.size).to eq(0)
215
215
  end
216
216
  end
217
217
 
@@ -227,8 +227,8 @@ module RailsBestPractices
227
227
  runner.prepare('app/controllers/posts_controller.rb', content)
228
228
  runner.review('app/controllers/posts_controller.rb', content)
229
229
  runner.after_review
230
- runner.should have(1).errors
231
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)"
230
+ expect(runner.errors.size).to eq(1)
231
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)")
232
232
  end
233
233
 
234
234
  it "should not remove unused methods if call helper method in views" do
@@ -246,7 +246,7 @@ module RailsBestPractices
246
246
  EOF
247
247
  runner.review('app/views/posts/show.html.erb', content)
248
248
  runner.after_review
249
- runner.should have(0).errors
249
+ expect(runner.errors.size).to eq(0)
250
250
  end
251
251
 
252
252
  it "should not remove unused methods if call helper method in helpers" do
@@ -268,7 +268,7 @@ module RailsBestPractices
268
268
  EOF
269
269
  runner.review('app/helpers/posts_helper.rb', content)
270
270
  runner.after_review
271
- runner.should have(0).errors
271
+ expect(runner.errors.size).to eq(0)
272
272
  end
273
273
  end
274
274
 
@@ -289,8 +289,8 @@ module RailsBestPractices
289
289
  EOF
290
290
  runner.review('app/helpers/posts_helper.rb', content)
291
291
  runner.after_review
292
- runner.should have(1).errors
293
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)"
292
+ expect(runner.errors.size).to eq(1)
293
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)")
294
294
  end
295
295
 
296
296
  it "should remove unused methods if delegate method is called" do
@@ -313,7 +313,7 @@ module RailsBestPractices
313
313
  EOF
314
314
  runner.review('app/views/posts/show.html.erb', content)
315
315
  runner.after_review
316
- runner.should have(0).errors
316
+ expect(runner.errors.size).to eq(0)
317
317
  end
318
318
  end
319
319
 
@@ -327,8 +327,8 @@ module RailsBestPractices
327
327
  runner.prepare('app/cells/posts_cell.rb', content)
328
328
  runner.review('app/cells/posts_cell.rb', content)
329
329
  runner.after_review
330
- runner.should have(1).errors
331
- runner.errors[0].to_s.should == "app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)"
330
+ expect(runner.errors.size).to eq(1)
331
+ expect(runner.errors[0].to_s).to eq("app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)")
332
332
  end
333
333
 
334
334
  it "should not remove unused methods if render_cell" do
@@ -346,7 +346,7 @@ module RailsBestPractices
346
346
  EOF
347
347
  runner.review('app/views/posts/index.html.erb', content)
348
348
  runner.after_review
349
- runner.should have(0).errors
349
+ expect(runner.errors.size).to eq(0)
350
350
  end
351
351
 
352
352
  it "should not remove unused methods if render with state" do
@@ -368,9 +368,77 @@ module RailsBestPractices
368
368
  EOF
369
369
  runner.review('app/views/posts/index.html.erb', content)
370
370
  runner.after_review
371
- runner.should have(0).errors
371
+ expect(runner.errors.size).to eq(0)
372
372
  end
373
373
  end
374
+
375
+ it "should not remove unused methods" do
376
+ route_content =<<-EOF
377
+ RailsBestPracticesCom::Application.routes.draw do
378
+ namespace :admin do
379
+ resources :users, only: :index
380
+ end
381
+ end
382
+ EOF
383
+ app_controller_content =<<-EOF
384
+ module Admin
385
+ class AppController < ApplicationController
386
+ def index
387
+ @collection = model.all
388
+ end
389
+ end
390
+ end
391
+ EOF
392
+ users_controller_content =<<-EOF
393
+ module Admin
394
+ class UsersController < AppController
395
+ private
396
+
397
+ def model
398
+ User
399
+ end
400
+ end
401
+ end
402
+ EOF
403
+ runner.prepare('config/routes.rb', route_content)
404
+ runner.prepare('app/controllers/admin/app_controller.rb', app_controller_content)
405
+ runner.prepare('app/controllers/admin/users_controller.rb', users_controller_content)
406
+ runner.review('app/controllers/admin/app_controller.rb', app_controller_content)
407
+ runner.review('app/controllers/admin/users_controller.rb', users_controller_content)
408
+ runner.after_review
409
+ expect(runner.errors.size).to eq(0)
410
+ end
411
+
412
+ it "should not check ignored files" do
413
+ runner = Core::Runner.new(prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
414
+ reviews: RemoveUnusedMethodsInControllersReview.new(ignored_files: /posts_controller/, except_methods: []))
415
+ content =<<-EOF
416
+ RailsBestPracticesCom::Application.routes.draw do
417
+ resources :posts do
418
+ member do
419
+ post 'link_to/:other_id' => 'posts#link_to_post'
420
+ post 'extra_update' => 'posts#extra_update'
421
+ end
422
+ end
423
+ end
424
+ EOF
425
+ runner.prepare('config/routes.rb', content)
426
+ content =<<-EOF
427
+ class PostsController < ActiveRecord::Base
428
+ def show; end
429
+ def extra_update; end
430
+ def link_to_post; end
431
+ protected
432
+ def load_post; end
433
+ private
434
+ def load_user; end
435
+ end
436
+ EOF
437
+ runner.prepare('app/controllers/posts_controller.rb', content)
438
+ runner.review('app/controllers/posts_controller.rb', content)
439
+ runner.after_review
440
+ expect(runner.errors.size).to eq(0)
441
+ end
374
442
  end
375
443
  end
376
444
  end
@@ -17,8 +17,8 @@ module RailsBestPractices
17
17
  runner.prepare('app/helpers/posts_helper.rb', content)
18
18
  runner.review('app/helpers/posts_helper.rb', content)
19
19
  runner.after_review
20
- runner.should have(1).errors
21
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:2 - remove unused methods (PostsHelper#unused)"
20
+ expect(runner.errors.size).to eq(1)
21
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:2 - remove unused methods (PostsHelper#unused)")
22
22
  end
23
23
 
24
24
  it "should not remove unused methods if called on views" do
@@ -35,7 +35,7 @@ module RailsBestPractices
35
35
  EOF
36
36
  runner.review('app/views/posts/show.html.erb', content)
37
37
  runner.after_review
38
- runner.should have(0).errors
38
+ expect(runner.errors.size).to eq(0)
39
39
  end
40
40
 
41
41
  it "should not remove unused methods if called on helpers" do
@@ -56,7 +56,7 @@ module RailsBestPractices
56
56
  EOF
57
57
  runner.review('app/views/posts/show.html.erb', content)
58
58
  runner.after_review
59
- runner.should have(0).errors
59
+ expect(runner.errors.size).to eq(0)
60
60
  end
61
61
 
62
62
  it "should not remove unused methods if called on controllers" do
@@ -81,8 +81,23 @@ module RailsBestPractices
81
81
  runner.review('app/helpers/posts_helper.rb', helper_content)
82
82
  runner.review('app/controllers/posts_controller.rb', controller_content)
83
83
  runner.after_review
84
- runner.should have(0).errors
84
+ expect(runner.errors.size).to eq(0)
85
85
  end
86
+
87
+ it "should not check ignored files" do
88
+ runner = Core::Runner.new(prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
89
+ reviews: RemoveUnusedMethodsInHelpersReview.new(ignored_files: /posts_helper/, except_methods: []))
90
+
91
+ content =<<-EOF
92
+ module PostsHelper
93
+ def unused; end
94
+ end
95
+ EOF
96
+ runner.prepare('app/helpers/posts_helper.rb', content)
97
+ runner.review('app/helpers/posts_helper.rb', content)
98
+ runner.after_review
99
+ expect(runner.errors.size).to eq(0)
100
+ end
86
101
  end
87
102
  end
88
103
  end