rails_best_practices 1.14.4 → 1.15.1

Sign up to get free protection for your applications and to get access to all the features.
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