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
@@ -28,8 +28,8 @@ module RailsBestPractices
28
28
  end
29
29
  EOF
30
30
  runner.review('config/routes.rb', content)
31
- runner.should have(1).errors
32
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])"
31
+ expect(runner.errors.size).to eq(1)
32
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])")
33
33
  end
34
34
 
35
35
  it "should not restrict auto-generated routes with only" do
@@ -39,7 +39,7 @@ module RailsBestPractices
39
39
  end
40
40
  EOF
41
41
  runner.review('config/routes.rb', content)
42
- runner.should have(0).errors
42
+ expect(runner.errors.size).to eq(0)
43
43
  end
44
44
 
45
45
  it "should not restrict auto-generated routes with except" do
@@ -49,7 +49,7 @@ module RailsBestPractices
49
49
  end
50
50
  EOF
51
51
  runner.review('config/routes.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 restrict auto-generated routes with only: :none" do
@@ -59,7 +59,7 @@ module RailsBestPractices
59
59
  end
60
60
  EOF
61
61
  runner.review('config/routes.rb', content)
62
- runner.should have(0).errors
62
+ expect(runner.errors.size).to eq(0)
63
63
  end
64
64
 
65
65
  it "should not restrict auto-generated routes with except: :all" do
@@ -69,7 +69,7 @@ module RailsBestPractices
69
69
  end
70
70
  EOF
71
71
  runner.review('config/routes.rb', content)
72
- runner.should have(0).errors
72
+ expect(runner.errors.size).to eq(0)
73
73
  end
74
74
 
75
75
  describe "specify a controller" do
@@ -80,8 +80,8 @@ module RailsBestPractices
80
80
  end
81
81
  EOF
82
82
  runner.review('config/routes.rb', content)
83
- runner.should have(1).errors
84
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes articles (except: [:index])"
83
+ expect(runner.errors.size).to eq(1)
84
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes articles (except: [:index])")
85
85
  end
86
86
  end
87
87
 
@@ -110,8 +110,8 @@ module RailsBestPractices
110
110
  end
111
111
  EOF
112
112
  runner.review('config/routes.rb', content)
113
- runner.should have(1).errors
114
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])"
113
+ expect(runner.errors.size).to eq(1)
114
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])")
115
115
  end
116
116
 
117
117
  it "should not restrict auto-generated routes with only" do
@@ -123,7 +123,7 @@ module RailsBestPractices
123
123
  end
124
124
  EOF
125
125
  runner.review('config/routes.rb', content)
126
- runner.should have(0).errors
126
+ expect(runner.errors.size).to eq(0)
127
127
  end
128
128
 
129
129
  it "should not restrict auto-generated routes with except" do
@@ -135,7 +135,7 @@ module RailsBestPractices
135
135
  end
136
136
  EOF
137
137
  runner.review('config/routes.rb', content)
138
- runner.should have(0).errors
138
+ expect(runner.errors.size).to eq(0)
139
139
  end
140
140
  end
141
141
  end
@@ -148,8 +148,8 @@ module RailsBestPractices
148
148
  end
149
149
  EOF
150
150
  runner.review('config/routes.rb', content)
151
- runner.should have(1).errors
152
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])"
151
+ expect(runner.errors.size).to eq(1)
152
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])")
153
153
  end
154
154
 
155
155
  it "should not restrict auto-generated routes with only" do
@@ -159,7 +159,7 @@ module RailsBestPractices
159
159
  end
160
160
  EOF
161
161
  runner.review('config/routes.rb', content)
162
- runner.should have(0).errors
162
+ expect(runner.errors.size).to eq(0)
163
163
  end
164
164
 
165
165
  it "should not restrict auto-generated routes with except" do
@@ -169,7 +169,7 @@ module RailsBestPractices
169
169
  end
170
170
  EOF
171
171
  runner.review('config/routes.rb', content)
172
- runner.should have(0).errors
172
+ expect(runner.errors.size).to eq(0)
173
173
  end
174
174
 
175
175
  describe "specify a controller" do
@@ -180,8 +180,8 @@ module RailsBestPractices
180
180
  end
181
181
  EOF
182
182
  runner.review('config/routes.rb', content)
183
- runner.should have(1).errors
184
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes articles (except: [:index])"
183
+ expect(runner.errors.size).to eq(1)
184
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes articles (except: [:index])")
185
185
  end
186
186
  end
187
187
 
@@ -207,8 +207,8 @@ module RailsBestPractices
207
207
  end
208
208
  EOF
209
209
  runner.review('config/routes.rb', content)
210
- runner.should have(1).errors
211
- runner.errors[0].to_s.should == "config/routes.rb:3 - restrict auto-generated routes admin/comments (except: [:index])"
210
+ expect(runner.errors.size).to eq(1)
211
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:3 - restrict auto-generated routes admin/comments (except: [:index])")
212
212
  end
213
213
  end
214
214
 
@@ -237,8 +237,8 @@ module RailsBestPractices
237
237
  end
238
238
  EOF
239
239
  runner.review('config/routes.rb', content)
240
- runner.should have(1).errors
241
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])"
240
+ expect(runner.errors.size).to eq(1)
241
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes posts (except: [:index])")
242
242
  end
243
243
 
244
244
  it "should not restrict auto-generated routes with only" do
@@ -250,7 +250,7 @@ module RailsBestPractices
250
250
  end
251
251
  EOF
252
252
  runner.review('config/routes.rb', content)
253
- runner.should have(0).errors
253
+ expect(runner.errors.size).to eq(0)
254
254
  end
255
255
 
256
256
  it "should not restrict auto-generated routes with except" do
@@ -262,7 +262,7 @@ module RailsBestPractices
262
262
  end
263
263
  EOF
264
264
  runner.review('config/routes.rb', content)
265
- runner.should have(0).errors
265
+ expect(runner.errors.size).to eq(0)
266
266
  end
267
267
  end
268
268
  end
@@ -290,8 +290,8 @@ module RailsBestPractices
290
290
  end
291
291
  EOF
292
292
  runner.review('config/routes.rb', content)
293
- runner.should have(1).errors
294
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes account (except: [:destroy])"
293
+ expect(runner.errors.size).to eq(1)
294
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes account (except: [:destroy])")
295
295
  end
296
296
 
297
297
  it "should not restrict auto-generated routes with only" do
@@ -301,7 +301,7 @@ module RailsBestPractices
301
301
  end
302
302
  EOF
303
303
  runner.review('config/routes.rb', content)
304
- runner.should have(0).errors
304
+ expect(runner.errors.size).to eq(0)
305
305
  end
306
306
 
307
307
  it "should not restrict auto-generated routes with except" do
@@ -311,7 +311,7 @@ module RailsBestPractices
311
311
  end
312
312
  EOF
313
313
  runner.review('config/routes.rb', content)
314
- runner.should have(0).errors
314
+ expect(runner.errors.size).to eq(0)
315
315
  end
316
316
  end
317
317
 
@@ -323,8 +323,8 @@ module RailsBestPractices
323
323
  end
324
324
  EOF
325
325
  runner.review('config/routes.rb', content)
326
- runner.should have(1).errors
327
- runner.errors[0].to_s.should == "config/routes.rb:2 - restrict auto-generated routes account (except: [:destroy])"
326
+ expect(runner.errors.size).to eq(1)
327
+ expect(runner.errors[0].to_s).to eq("config/routes.rb:2 - restrict auto-generated routes account (except: [:destroy])")
328
328
  end
329
329
 
330
330
  it "should not restrict auto-generated routes with only" do
@@ -334,7 +334,7 @@ module RailsBestPractices
334
334
  end
335
335
  EOF
336
336
  runner.review('config/routes.rb', content)
337
- runner.should have(0).errors
337
+ expect(runner.errors.size).to eq(0)
338
338
  end
339
339
 
340
340
  it "should not restrict auto-generated routes with except" do
@@ -344,7 +344,20 @@ module RailsBestPractices
344
344
  end
345
345
  EOF
346
346
  runner.review('config/routes.rb', content)
347
- runner.should have(0).errors
347
+ expect(runner.errors.size).to eq(0)
348
+ end
349
+
350
+ it "should not check ignored files" do
351
+ runner = Core::Runner.new(prepares: Prepares::ControllerPrepare.new,
352
+ reviews: RestrictAutoGeneratedRoutesReview.new(ignored_files: /config\/routes\.rb/))
353
+
354
+ content =<<-EOF
355
+ ActionController::Routing::Routes.draw do |map|
356
+ map.resource :account
357
+ end
358
+ EOF
359
+ runner.review('config/routes.rb', content)
360
+ expect(runner.errors.size).to eq(0)
348
361
  end
349
362
  end
350
363
  end
@@ -12,8 +12,8 @@ module RailsBestPractices
12
12
  end
13
13
  EOF
14
14
  runner.review("app/controllers/posts_controller.rb", content)
15
- runner.should have(1).errors
16
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - simplify render in controllers"
15
+ expect(runner.errors.size).to eq(1)
16
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2 - simplify render in controllers")
17
17
  end
18
18
 
19
19
  it "should simplify render actions's template" do
@@ -23,8 +23,8 @@ module RailsBestPractices
23
23
  end
24
24
  EOF
25
25
  runner.review("app/controllers/posts_controller.rb", content)
26
- runner.should have(1).errors
27
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - simplify render in controllers"
26
+ expect(runner.errors.size).to eq(1)
27
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2 - simplify render in controllers")
28
28
  end
29
29
 
30
30
  it "should simplify render an arbitrary file" do
@@ -34,8 +34,8 @@ module RailsBestPractices
34
34
  end
35
35
  EOF
36
36
  runner.review("app/controllers/posts_controller.rb", content)
37
- runner.should have(1).errors
38
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - simplify render in controllers"
37
+ expect(runner.errors.size).to eq(1)
38
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2 - simplify render in controllers")
39
39
  end
40
40
 
41
41
  it "should not simplify render action view" do
@@ -43,7 +43,7 @@ module RailsBestPractices
43
43
  render :edit
44
44
  EOF
45
45
  runner.review("app/controllers/posts_controller", content)
46
- runner.should have(0).errors
46
+ expect(runner.errors.size).to eq(0)
47
47
  end
48
48
 
49
49
  it "should not simplify render actions's template" do
@@ -53,7 +53,7 @@ module RailsBestPractices
53
53
  end
54
54
  EOF
55
55
  runner.review("app/controllers/posts_controller.rb", content)
56
- runner.should have(0).errors
56
+ expect(runner.errors.size).to eq(0)
57
57
  end
58
58
 
59
59
  it "should not simplify render an arbitrary file" do
@@ -63,7 +63,18 @@ module RailsBestPractices
63
63
  end
64
64
  EOF
65
65
  runner.review("app/controllers/posts_controller.rb", content)
66
- runner.should have(0).errors
66
+ expect(runner.errors.size).to eq(0)
67
+ end
68
+
69
+ it "should not check ignored files" do
70
+ runner = Core::Runner.new(reviews: SimplifyRenderInControllersReview.new(ignored_files: /posts_controller/))
71
+ content =<<-EOF
72
+ def edit
73
+ render action: :edit
74
+ end
75
+ EOF
76
+ runner.review("app/controllers/posts_controller.rb", content)
77
+ expect(runner.errors.size).to eq(0)
67
78
  end
68
79
  end
69
80
  end
@@ -10,8 +10,8 @@ module RailsBestPractices
10
10
  <%= render partial: 'sidebar' %>
11
11
  EOF
12
12
  runner.review('app/views/posts/index.html.erb', content)
13
- runner.should have(1).errors
14
- runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
13
+ expect(runner.errors.size).to eq(1)
14
+ expect(runner.errors[0].to_s).to eq("app/views/posts/index.html.erb:1 - simplify render in views")
15
15
  end
16
16
 
17
17
  it "should simplify render partial with object" do
@@ -19,8 +19,8 @@ module RailsBestPractices
19
19
  <%= render partial: 'post', object: @post %>
20
20
  EOF
21
21
  runner.review('app/views/posts/index.html.erb', content)
22
- runner.should have(1).errors
23
- runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
22
+ expect(runner.errors.size).to eq(1)
23
+ expect(runner.errors[0].to_s).to eq("app/views/posts/index.html.erb:1 - simplify render in views")
24
24
  end
25
25
 
26
26
  it "should simplify render partial with collection" do
@@ -28,8 +28,8 @@ module RailsBestPractices
28
28
  <%= render partial: 'posts', collection: @posts %>
29
29
  EOF
30
30
  runner.review('app/views/posts/index.html.erb', content)
31
- runner.should have(1).errors
32
- runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
31
+ expect(runner.errors.size).to eq(1)
32
+ expect(runner.errors[0].to_s).to eq("app/views/posts/index.html.erb:1 - simplify render in views")
33
33
  end
34
34
 
35
35
  it "should simplify render partial with local variables" do
@@ -37,8 +37,8 @@ module RailsBestPractices
37
37
  <%= render partial: 'comment', locals: { parent: post } %>
38
38
  EOF
39
39
  runner.review('app/views/posts/index.html.erb', content)
40
- runner.should have(1).errors
41
- runner.errors[0].to_s.should == "app/views/posts/index.html.erb:1 - simplify render in views"
40
+ expect(runner.errors.size).to eq(1)
41
+ expect(runner.errors[0].to_s).to eq("app/views/posts/index.html.erb:1 - simplify render in views")
42
42
  end
43
43
 
44
44
  it "should not simplify render simple partial" do
@@ -47,7 +47,7 @@ module RailsBestPractices
47
47
  <%= render 'shared/sidebar' %>
48
48
  EOF
49
49
  runner.review('app/views/posts/index.html.erb', content)
50
- runner.should have(0).errors
50
+ expect(runner.errors.size).to eq(0)
51
51
  end
52
52
 
53
53
  it "should not simplify render partial with object" do
@@ -55,7 +55,7 @@ module RailsBestPractices
55
55
  <%= render @post %>
56
56
  EOF
57
57
  runner.review('app/views/posts/index.html.erb', content)
58
- runner.should have(0).errors
58
+ expect(runner.errors.size).to eq(0)
59
59
  end
60
60
 
61
61
  it "should not simplify render partial with collection" do
@@ -63,7 +63,7 @@ module RailsBestPractices
63
63
  <%= render @posts %>
64
64
  EOF
65
65
  runner.review('app/views/posts/index.html.erb', content)
66
- runner.should have(0).errors
66
+ expect(runner.errors.size).to eq(0)
67
67
  end
68
68
 
69
69
  it "should not simplify render partial with local variables" do
@@ -71,7 +71,7 @@ module RailsBestPractices
71
71
  <%= render 'comment', parent: post %>
72
72
  EOF
73
73
  runner.review('app/views/posts/index.html.erb', content)
74
- runner.should have(0).errors
74
+ expect(runner.errors.size).to eq(0)
75
75
  end
76
76
 
77
77
  it "should not simplify render partial with complex partial" do
@@ -79,7 +79,7 @@ module RailsBestPractices
79
79
  <%= render partial: 'shared/post', object: @post %>
80
80
  EOF
81
81
  runner.review('app/views/posts/index.html.erb', content)
82
- runner.should have(0).errors
82
+ expect(runner.errors.size).to eq(0)
83
83
  end
84
84
 
85
85
  it "should not simplify render partial with layout option" do
@@ -87,7 +87,16 @@ module RailsBestPractices
87
87
  <%= render partial: 'post', layout: 'post' %>
88
88
  EOF
89
89
  runner.review('app/views/posts/index.html.erb', content)
90
- runner.should have(0).errors
90
+ expect(runner.errors.size).to eq(0)
91
+ end
92
+
93
+ it "should not check ignored files" do
94
+ runner = Core::Runner.new(reviews: SimplifyRenderInViewsReview.new(ignored_files: /views\/posts\/index/))
95
+ content =<<-EOF
96
+ <%= render partial: 'sidebar' %>
97
+ EOF
98
+ runner.review('app/views/posts/index.html.erb', content)
99
+ expect(runner.errors.size).to eq(0)
91
100
  end
92
101
  end
93
102
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe UseBeforeFilterReview do
6
- let(:runner) { Core::Runner.new(reviews: UseBeforeFilterReview.new('customize_count' => 2)) }
6
+ let(:runner) { Core::Runner.new(reviews: UseBeforeFilterReview.new(customize_count: 2)) }
7
7
 
8
8
  it "should use before_filter" do
9
9
  content = <<-EOF
@@ -28,8 +28,8 @@ module RailsBestPractices
28
28
  end
29
29
  EOF
30
30
  runner.review('app/controllers/posts_controller.rb', content)
31
- runner.should have(1).errors
32
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2,6,10,15 - use before_filter for show,edit,update,destroy"
31
+ expect(runner.errors.size).to eq(1)
32
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2,6,10,15 - use before_filter for show,edit,update,destroy")
33
33
  end
34
34
 
35
35
  it "should not use before_filter when equal to customize count" do
@@ -45,7 +45,7 @@ module RailsBestPractices
45
45
  end
46
46
  EOF
47
47
  runner.review('app/controllers/posts_controller.rb', content)
48
- runner.should have(0).errors
48
+ expect(runner.errors.size).to eq(0)
49
49
  end
50
50
 
51
51
  it "should not use before_filter" do
@@ -68,7 +68,7 @@ module RailsBestPractices
68
68
  end
69
69
  EOF
70
70
  runner.review('app/controllers/posts_controller.rb', content)
71
- runner.should have(0).errors
71
+ expect(runner.errors.size).to eq(0)
72
72
  end
73
73
 
74
74
  it "should not use before_filter by nil" do
@@ -81,7 +81,7 @@ module RailsBestPractices
81
81
  end
82
82
  EOF
83
83
  runner.review('app/controllers/posts_controller.rb', content)
84
- runner.should have(0).errors
84
+ expect(runner.errors.size).to eq(0)
85
85
  end
86
86
 
87
87
  it "should not use before_filter for protected/private methods" do
@@ -100,7 +100,34 @@ module RailsBestPractices
100
100
  end
101
101
  EOF
102
102
  runner.review('app/controllers/posts_controller.rb', content)
103
- runner.should have(0).errors
103
+ expect(runner.errors.size).to eq(0)
104
+ end
105
+
106
+ it "should not check ignored files" do
107
+ runner = Core::Runner.new(reviews: UseBeforeFilterReview.new(customize_count: 2, ignored_files: /posts_controller/))
108
+ content = <<-EOF
109
+ class PostsController < ApplicationController
110
+ def show
111
+ @post = current_user.posts.find(params[:id])
112
+ end
113
+
114
+ def edit
115
+ @post = current_user.posts.find(params[:id])
116
+ end
117
+
118
+ def update
119
+ @post = current_user.posts.find(params[:id])
120
+ @post.update_attributes(params[:post])
121
+ end
122
+
123
+ def destroy
124
+ @post = current_user.posts.find(params[:id])
125
+ @post.destroy
126
+ end
127
+ end
128
+ EOF
129
+ runner.review('app/controllers/posts_controller.rb', content)
130
+ expect(runner.errors.size).to eq(1)
104
131
  end
105
132
  end
106
133
  end
@@ -16,8 +16,8 @@ module RailsBestPractices
16
16
  end
17
17
  EOF
18
18
  runner.review('app/controllers/posts_controller.rb', content)
19
- runner.should have(1).errors
20
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - use model association (for @post)"
19
+ expect(runner.errors.size).to eq(1)
20
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2 - use model association (for @post)")
21
21
  end
22
22
 
23
23
  it "should not use model association without association assign" do
@@ -30,7 +30,7 @@ module RailsBestPractices
30
30
  end
31
31
  EOF
32
32
  runner.review('app/controllers/posts_controller.rb', content)
33
- runner.should have(0).errors
33
+ expect(runner.errors.size).to eq(0)
34
34
  end
35
35
 
36
36
  it "should use model association for local variable" do
@@ -44,8 +44,8 @@ module RailsBestPractices
44
44
  end
45
45
  EOF
46
46
  runner.review('app/controllers/posts_controller.rb', content)
47
- runner.should have(1).errors
48
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - use model association (for post)"
47
+ expect(runner.errors.size).to eq(1)
48
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:2 - use model association (for post)")
49
49
  end
50
50
 
51
51
  it "should not use model association" do
@@ -58,7 +58,22 @@ module RailsBestPractices
58
58
  end
59
59
  EOF
60
60
  runner.review('app/controllers/posts_controller.rb', content)
61
- runner.should have(0).errors
61
+ expect(runner.errors.size).to eq(0)
62
+ end
63
+
64
+ it "should not check ignored files" do
65
+ runner = Core::Runner.new(reviews: UseModelAssociationReview.new(ignored_files: /posts_controller/))
66
+ content = <<-EOF
67
+ class PostsController < ApplicationController
68
+ def create
69
+ @post = Post.new(params[:post])
70
+ @post.user_id = current_user.id
71
+ @post.save
72
+ end
73
+ end
74
+ EOF
75
+ runner.review('app/controllers/posts_controller.rb', content)
76
+ expect(runner.errors.size).to eq(0)
62
77
  end
63
78
  end
64
79
  end