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
@@ -21,9 +21,9 @@ module RailsBestPractices
21
21
  EOF
22
22
  runner.review('db/schema.rb', content)
23
23
  runner.after_review
24
- runner.should have(2).errors
25
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (comments => [post_id])"
26
- runner.errors[1].to_s.should == "db/schema.rb:2 - always add db index (comments => [user_id])"
24
+ expect(runner.errors.size).to eq(2)
25
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (comments => [post_id])")
26
+ expect(runner.errors[1].to_s).to eq("db/schema.rb:2 - always add db index (comments => [user_id])")
27
27
  end
28
28
 
29
29
  it "should always add db index with polymorphic foreign key" do
@@ -38,8 +38,8 @@ module RailsBestPractices
38
38
  EOF
39
39
  runner.review('db/schema.rb', content)
40
40
  runner.after_review
41
- runner.should have(1).errors
42
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (versions => [versioned_id, versioned_type])"
41
+ expect(runner.errors.size).to eq(1)
42
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (versions => [versioned_id, versioned_type])")
43
43
  end
44
44
 
45
45
  it "should always add db index with polymorphic foreign key and _type is defined before _id" do
@@ -54,8 +54,8 @@ module RailsBestPractices
54
54
  EOF
55
55
  runner.review('db/schema.rb', content)
56
56
  runner.after_review
57
- runner.should have(1).errors
58
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (versions => [versioned_id, versioned_type])"
57
+ expect(runner.errors.size).to eq(1)
58
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (versions => [versioned_id, versioned_type])")
59
59
  end
60
60
 
61
61
  it "should always add db index with single index, but without polymorphic foreign key" do
@@ -74,8 +74,8 @@ module RailsBestPractices
74
74
  EOF
75
75
  runner.review('db/schema.rb', content)
76
76
  runner.after_review
77
- runner.should have(1).errors
78
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (taggings => [taggable_id, taggable_type])"
77
+ expect(runner.errors.size).to eq(1)
78
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (taggings => [taggable_id, taggable_type])")
79
79
  end
80
80
 
81
81
  it "should always add db index with polymorphic foreign key, but without single index" do
@@ -94,8 +94,8 @@ module RailsBestPractices
94
94
  EOF
95
95
  runner.review('db/schema.rb', content)
96
96
  runner.after_review
97
- runner.should have(1).errors
98
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (taggings => [tag_id])"
97
+ expect(runner.errors.size).to eq(1)
98
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (taggings => [tag_id])")
99
99
  end
100
100
 
101
101
  it "should always add db index only _id without non related _type column" do
@@ -113,8 +113,8 @@ module RailsBestPractices
113
113
  EOF
114
114
  runner.review('db/schema.rb', content)
115
115
  runner.after_review
116
- runner.should have(1).errors
117
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (websites => [user_id])"
116
+ expect(runner.errors.size).to eq(1)
117
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (websites => [user_id])")
118
118
  end
119
119
 
120
120
  it "should not always add db index with column has no id" do
@@ -128,7 +128,7 @@ module RailsBestPractices
128
128
  EOF
129
129
  runner.review('db/schema.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
 
134
134
  it "should not always add db index with add_index" do
@@ -150,7 +150,7 @@ module RailsBestPractices
150
150
  EOF
151
151
  runner.review('db/schema.rb', content)
152
152
  runner.after_review
153
- runner.should have(0).errors
153
+ expect(runner.errors.size).to eq(0)
154
154
  end
155
155
 
156
156
  it "should not always add db index with t.index" do
@@ -168,7 +168,7 @@ module RailsBestPractices
168
168
  EOF
169
169
  runner.review('db/schema.rb', content)
170
170
  runner.after_review
171
- runner.should have(0).errors
171
+ expect(runner.errors.size).to eq(0)
172
172
  end
173
173
 
174
174
  it "should not always add db index with only _type column" do
@@ -181,7 +181,7 @@ module RailsBestPractices
181
181
  EOF
182
182
  runner.review('db/schema.rb', content)
183
183
  runner.after_review
184
- runner.should have(0).errors
184
+ expect(runner.errors.size).to eq(0)
185
185
  end
186
186
 
187
187
  it "should not always add db index with multi-column index" do
@@ -198,7 +198,7 @@ module RailsBestPractices
198
198
  EOF
199
199
  runner.review('db/schema.rb', content)
200
200
  runner.after_review
201
- runner.should have(0).errors
201
+ expect(runner.errors.size).to eq(0)
202
202
  end
203
203
 
204
204
  it "should not always add db index if there is an index contains more columns" do
@@ -215,7 +215,7 @@ module RailsBestPractices
215
215
  EOF
216
216
  runner.review('db/schema.rb', content)
217
217
  runner.after_review
218
- runner.should have(0).errors
218
+ expect(runner.errors.size).to eq(0)
219
219
  end
220
220
 
221
221
  it "should not always add db index if two indexes for polymorphic association" do
@@ -233,7 +233,7 @@ module RailsBestPractices
233
233
  EOF
234
234
  runner.review('db/schema.rb', content)
235
235
  runner.after_review
236
- runner.should have(0).errors
236
+ expect(runner.errors.size).to eq(0)
237
237
  end
238
238
 
239
239
  it "should not always add db index if table does not exist" do
@@ -246,7 +246,7 @@ module RailsBestPractices
246
246
  EOF
247
247
  runner.review('db/schema.rb', 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 always add db index if association_name is different to foreign_key" do
@@ -272,8 +272,28 @@ module RailsBestPractices
272
272
  EOF
273
273
  runner.review('db/schema.rb', content)
274
274
  runner.after_review
275
- runner.should have(1).errors
276
- runner.errors[0].to_s.should == "db/schema.rb:2 - always add db index (comments => [commentor_id])"
275
+ expect(runner.errors.size).to eq(1)
276
+ expect(runner.errors[0].to_s).to eq("db/schema.rb:2 - always add db index (comments => [commentor_id])")
277
+ end
278
+
279
+ it "should not check ignored files" do
280
+ runner = Core::Runner.new(reviews: AlwaysAddDbIndexReview.new(ignored_files: /db\/schema/))
281
+ content = <<-EOF
282
+ ActiveRecord::Schema.define(version: 20100603080629) do
283
+ create_table "comments", force: true do |t|
284
+ t.string "content"
285
+ t.integer "post_id"
286
+ t.integer "user_id"
287
+ end
288
+ create_table "posts", force: true do |t|
289
+ end
290
+ create_table "users", force: true do |t|
291
+ end
292
+ end
293
+ EOF
294
+ runner.review('db/schema.rb', content)
295
+ runner.after_review
296
+ expect(runner.errors.size).to eq(0)
277
297
  end
278
298
  end
279
299
  end
@@ -16,8 +16,8 @@ module RailsBestPractices
16
16
  end
17
17
  EOF
18
18
  runner.review('app/helpers/posts_helper.rb', content)
19
- runner.should have(1).errors
20
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:5 - check 'save' return value or use 'save!'"
19
+ expect(runner.errors.size).to eq(1)
20
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:5 - check 'save' return value or use 'save!'")
21
21
  end
22
22
 
23
23
  it "should allow save return value assigned to var" do
@@ -30,7 +30,7 @@ module RailsBestPractices
30
30
  end
31
31
  EOF
32
32
  runner.review('app/helpers/posts_helper.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 allow save return value used in if" do
@@ -47,7 +47,7 @@ module RailsBestPractices
47
47
  end
48
48
  EOF
49
49
  runner.review('app/helpers/posts_helper.rb', content)
50
- runner.should have(0).errors
50
+ expect(runner.errors.size).to eq(0)
51
51
  end
52
52
 
53
53
  it "should allow save return value used in elsif" do
@@ -66,7 +66,7 @@ module RailsBestPractices
66
66
  end
67
67
  EOF
68
68
  runner.review('app/helpers/posts_helper.rb', content)
69
- runner.should have(0).errors
69
+ expect(runner.errors.size).to eq(0)
70
70
  end
71
71
 
72
72
  it "should allow save return value used in unless" do
@@ -78,7 +78,7 @@ module RailsBestPractices
78
78
  end
79
79
  EOF
80
80
  runner.review('app/helpers/posts_helper.rb', content)
81
- runner.should have(0).errors
81
+ expect(runner.errors.size).to eq(0)
82
82
  end
83
83
 
84
84
  it "should allow save return value used in if_mod" do
@@ -91,7 +91,7 @@ module RailsBestPractices
91
91
  end
92
92
  EOF
93
93
  runner.review('app/helpers/posts_helper.rb', content)
94
- expect(runner).to have(0).errors
94
+ expect(runner.errors.size).to eq(0)
95
95
  end
96
96
 
97
97
  it "should allow save return value used in unless_mod" do
@@ -104,7 +104,7 @@ module RailsBestPractices
104
104
  end
105
105
  EOF
106
106
  runner.review('app/helpers/posts_helper.rb', content)
107
- expect(runner).to have(0).errors
107
+ expect(runner.errors.size).to eq(0)
108
108
  end
109
109
 
110
110
  it "should allow save return value used in unless with &&" do
@@ -116,7 +116,7 @@ module RailsBestPractices
116
116
  end
117
117
  EOF
118
118
  runner.review('app/helpers/posts_helper.rb', content)
119
- runner.should have(0).errors
119
+ expect(runner.errors.size).to eq(0)
120
120
  end
121
121
 
122
122
  it "should allow save!" do
@@ -129,7 +129,7 @@ module RailsBestPractices
129
129
  end
130
130
  EOF
131
131
  runner.review('app/helpers/posts_helper.rb', content)
132
- runner.should have(0).errors
132
+ expect(runner.errors.size).to eq(0)
133
133
  end
134
134
 
135
135
  it "should warn you if you fail to check update_attributes return value" do
@@ -139,8 +139,8 @@ module RailsBestPractices
139
139
  end
140
140
  EOF
141
141
  runner.review('app/helpers/posts_helper.rb', content)
142
- runner.should have(1).errors
143
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:2 - check 'update_attributes' return value or use 'update_attributes!'"
142
+ expect(runner.errors.size).to eq(1)
143
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:2 - check 'update_attributes' return value or use 'update_attributes!'")
144
144
  end
145
145
 
146
146
  it "should allow update_attributes if return value is checked" do
@@ -150,7 +150,7 @@ module RailsBestPractices
150
150
  end
151
151
  EOF
152
152
  runner.review('app/helpers/posts_helper.rb', content)
153
- runner.should have(0).errors
153
+ expect(runner.errors.size).to eq(0)
154
154
  end
155
155
 
156
156
  it "is not clever enough to allow update_attributes if value is returned from method" do
@@ -173,8 +173,8 @@ module RailsBestPractices
173
173
  end
174
174
  EOF
175
175
  runner.review('app/controllers/posts_controller.rb', content)
176
- runner.should have(1).errors
177
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:12 - check 'update_attributes' return value or use 'update_attributes!'"
176
+ expect(runner.errors.size).to eq(1)
177
+ expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:12 - check 'update_attributes' return value or use 'update_attributes!'")
178
178
  end
179
179
 
180
180
  it "should warn you if you use create which is always unsafe" do
@@ -192,8 +192,8 @@ module RailsBestPractices
192
192
  end
193
193
  EOF
194
194
  runner.review('app/helpers/posts_helper.rb', content)
195
- runner.should have(1).errors
196
- runner.errors[0].to_s.should == "app/helpers/posts_helper.rb:2 - use 'create!' instead of 'create' as the latter may not always save"
195
+ expect(runner.errors.size).to eq(1)
196
+ expect(runner.errors[0].to_s).to eq("app/helpers/posts_helper.rb:2 - use 'create!' instead of 'create' as the latter may not always save")
197
197
  end
198
198
 
199
199
  it "should warn you if you use create with a block which is always unsafe" do
@@ -220,8 +220,8 @@ module RailsBestPractices
220
220
  end
221
221
  EOF
222
222
  runner.review('app/helpers/blog/posts_helper.rb', content)
223
- runner.should have(1).errors
224
- runner.errors[0].to_s.should == "app/helpers/blog/posts_helper.rb:4 - use 'create!' instead of 'create' as the latter may not always save"
223
+ expect(runner.errors.size).to eq(1)
224
+ expect(runner.errors[0].to_s).to eq("app/helpers/blog/posts_helper.rb:4 - use 'create!' instead of 'create' as the latter may not always save")
225
225
  end
226
226
 
227
227
  it "allows create called on non-model classes" do
@@ -235,9 +235,23 @@ module RailsBestPractices
235
235
  end
236
236
  EOF
237
237
  runner.review('app/helpers/posts_helper.rb', content)
238
- runner.errors.map(&:to_s).should == []
238
+ expect(runner.errors.map(&:to_s)).to eq([])
239
239
  end
240
240
  end
241
+
242
+ it "should not check ignored files" do
243
+ runner = Core::Runner.new(reviews: CheckSaveReturnValueReview.new(ignored_files: /helpers/))
244
+ content =<<-EOF
245
+ def my_method
246
+ post = Posts.new do |p|
247
+ p.title = "foo"
248
+ end
249
+ post.save
250
+ end
251
+ EOF
252
+ runner.review('app/helpers/posts_helper.rb', content)
253
+ expect(runner.errors.size).to eq(0)
254
+ end
241
255
  end
242
256
  end
243
257
  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:2 - default_scope is evil"
15
+ expect(runner.errors.size).to eq(1)
16
+ expect(runner.errors[0].to_s).to eq("app/models/user.rb:2 - default_scope is evil")
17
17
  end
18
18
 
19
19
  it "should detect default_scope with old syntax" do
@@ -23,8 +23,8 @@ module RailsBestPractices
23
23
  end
24
24
  EOF
25
25
  runner.review('app/models/user.rb', content)
26
- runner.should have(1).errors
27
- runner.errors[0].to_s.should == "app/models/user.rb:2 - default_scope is evil"
26
+ expect(runner.errors.size).to eq(1)
27
+ expect(runner.errors[0].to_s).to eq("app/models/user.rb:2 - default_scope is evil")
28
28
  end
29
29
 
30
30
  it "should not detect default_scope" do
@@ -34,7 +34,18 @@ module RailsBestPractices
34
34
  end
35
35
  EOF
36
36
  runner.review('app/models/user.rb', content)
37
- runner.should have(0).errors
37
+ expect(runner.errors.size).to eq(0)
38
+ end
39
+
40
+ it "should not check ignored files" do
41
+ runner = Core::Runner.new(reviews: DefaultScopeIsEvilReview.new(ignored_files: /user/))
42
+ content = <<-EOF
43
+ class User < ActiveRecord::Base
44
+ default_scope -> { order('created_at desc') }
45
+ end
46
+ EOF
47
+ runner.review('app/models/user.rb', content)
48
+ expect(runner.errors.size).to eq(0)
38
49
  end
39
50
  end
40
51
  end
@@ -23,8 +23,8 @@ module RailsBestPractices
23
23
  after 'deploy:update_code', 'bundler:bundle_new_release'
24
24
  EOF
25
25
  runner.review('config/deploy.rb', content)
26
- runner.should have(1).errors
27
- runner.errors[0].to_s.should == "config/deploy.rb:1 - dry bundler in capistrano"
26
+ expect(runner.errors.size).to eq(1)
27
+ expect(runner.errors[0].to_s).to eq("config/deploy.rb:1 - dry bundler in capistrano")
28
28
  end
29
29
 
30
30
  it "should not dry bundler in capistrano" do
@@ -32,7 +32,29 @@ module RailsBestPractices
32
32
  require 'bundler/capistrano'
33
33
  EOF
34
34
  runner.review('config/deploy.rb', content)
35
- runner.should have(0).errors
35
+ expect(runner.errors.size).to eq(0)
36
+ end
37
+
38
+ it "should not check ignored files" do
39
+ runner = Core::Runner.new(reviews: DryBundlerInCapistranoReview.new(ignored_files: /deploy\.rb/))
40
+ content = <<-EOF
41
+ namespace :bundler do
42
+ task :create_symlink, roles: :app do
43
+ shared_dir = File.join(shared_path, 'bundle')
44
+ release_dir = File.join(current_release, '.bundle')
45
+ run("mkdir -p \#{shared_dir} && ln -s \#{shared_dir} \#{release_dir}")
46
+ end
47
+
48
+ task :bundle_new_release, roles: :app do
49
+ bundler.create_symlink
50
+ run "cd \#{release_path} && bundle install --without development test"
51
+ end
52
+ end
53
+
54
+ after 'deploy:update_code', 'bundler:bundle_new_release'
55
+ EOF
56
+ runner.review('config/deploy.rb', content)
57
+ expect(runner.errors.size).to eq(0)
36
58
  end
37
59
  end
38
60
  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:2 - change Hash Syntax to 1.9"
15
+ expect(runner.errors.size).to eq(1)
16
+ expect(runner.errors[0].to_s).to eq("app/models/user.rb:2 - change Hash Syntax to 1.9")
17
17
  end
18
18
 
19
19
  it "should not find 1.8 Hash with string" do
@@ -23,7 +23,7 @@ module RailsBestPractices
23
23
  end
24
24
  EOF
25
25
  runner.review('app/models/user.rb', content)
26
- runner.should have(0).errors
26
+ expect(runner.errors.size).to eq(0)
27
27
  end
28
28
 
29
29
  it "should not alert on 1.9 Syntax" do
@@ -33,7 +33,7 @@ module RailsBestPractices
33
33
  end
34
34
  EOF
35
35
  runner.review('app/models/user.rb', content)
36
- runner.should have(0).errors
36
+ expect(runner.errors.size).to eq(0)
37
37
  end
38
38
 
39
39
  it "should ignore haml_out" do
@@ -43,7 +43,7 @@ module RailsBestPractices
43
43
  #div{ class: "foo3" }
44
44
  EOF
45
45
  runner.review('app/views/files/show.html.haml', 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 consider hash with array key" do
@@ -51,7 +51,7 @@ module RailsBestPractices
51
51
  transition [:unverified, :verified] => :deleted
52
52
  EOF
53
53
  runner.review('app/models/post.rb', content)
54
- runner.should have(0).errors
54
+ expect(runner.errors.size).to eq(0)
55
55
  end
56
56
 
57
57
  it "should not consider hash with charaters not valid for symbol" do
@@ -59,7 +59,18 @@ module RailsBestPractices
59
59
  receiver.stub(:` => 'Error')
60
60
  EOF
61
61
  runner.review('app/models/post.rb', content)
62
- runner.should have(0).errors
62
+ expect(runner.errors.size).to eq(0)
63
+ end
64
+
65
+ it "should not check ignored files" do
66
+ runner = Core::Runner.new(reviews: HashSyntaxReview.new(ignored_files: /user/))
67
+ content =<<-EOF
68
+ class User < ActiveRecord::Base
69
+ CONST = { :foo => :bar }
70
+ end
71
+ EOF
72
+ runner.review('app/models/user.rb', content)
73
+ expect(runner.errors.size).to eq(0)
63
74
  end
64
75
  end
65
76
  end
@@ -25,8 +25,8 @@ module RailsBestPractices
25
25
  end
26
26
  EOF
27
27
  runner.review('db/migrate/20090818130258_create_roles.rb', content)
28
- runner.should have(1).errors
29
- runner.errors[0].to_s.should == "db/migrate/20090818130258_create_roles.rb:8 - isolate seed data"
28
+ expect(runner.errors.size).to eq(1)
29
+ expect(runner.errors[0].to_s).to eq("db/migrate/20090818130258_create_roles.rb:8 - isolate seed data")
30
30
  end
31
31
  end
32
32
 
@@ -51,8 +51,8 @@ module RailsBestPractices
51
51
  end
52
52
  EOF
53
53
  runner.review('db/migrate/20090818130258_create_roles.rb', content)
54
- runner.should have(1).errors
55
- runner.errors[0].to_s.should == "db/migrate/20090818130258_create_roles.rb:9 - isolate seed data"
54
+ expect(runner.errors.size).to eq(1)
55
+ expect(runner.errors[0].to_s).to eq("db/migrate/20090818130258_create_roles.rb:9 - isolate seed data")
56
56
  end
57
57
 
58
58
  it "should isolate seed data for instance variable" do
@@ -75,8 +75,8 @@ module RailsBestPractices
75
75
  end
76
76
  EOF
77
77
  runner.review('db/migrate/20090818130258_create_roles.rb', content)
78
- runner.should have(1).errors
79
- runner.errors[0].to_s.should == "db/migrate/20090818130258_create_roles.rb:9 - isolate seed data"
78
+ expect(runner.errors.size).to eq(1)
79
+ expect(runner.errors[0].to_s).to eq("db/migrate/20090818130258_create_roles.rb:9 - isolate seed data")
80
80
  end
81
81
  end
82
82
 
@@ -95,7 +95,30 @@ module RailsBestPractices
95
95
  end
96
96
  EOF
97
97
  runner.review('db/migrate/20090818130258_create_roles.rb', content)
98
- runner.should have(0).errors
98
+ expect(runner.errors.size).to eq(0)
99
+ end
100
+
101
+ it "should not check ignored files" do
102
+ runner = Core::Runner.new(reviews: IsolateSeedDataReview.new(ignored_files: /create_roles/))
103
+ content = <<-EOF
104
+ class CreateRoles < ActiveRecord::Migration
105
+ def self.up
106
+ create_table "roles", force: true do |t|
107
+ t.string :name
108
+ end
109
+
110
+ ["admin", "author", "editor", "account"].each do |name|
111
+ Role.create!(name: name)
112
+ end
113
+ end
114
+
115
+ def self.down
116
+ drop_table "roles"
117
+ end
118
+ end
119
+ EOF
120
+ runner.review('db/migrate/20090818130258_create_roles.rb', content)
121
+ expect(runner.errors.size).to eq(0)
99
122
  end
100
123
  end
101
124
  end
@@ -17,8 +17,8 @@ module RailsBestPractices
17
17
  end
18
18
  EOF
19
19
  runner.review('app/models/post.rb', content)
20
- runner.should have(1).errors
21
- runner.errors[0].to_s.should == "app/models/post.rb:5 - keep finders on their own model"
20
+ expect(runner.errors.size).to eq(1)
21
+ expect(runner.errors[0].to_s).to eq("app/models/post.rb:5 - keep finders on their own model")
22
22
  end
23
23
 
24
24
  it "should keep finders on thier own model with all method" do
@@ -33,8 +33,8 @@ module RailsBestPractices
33
33
  end
34
34
  EOF
35
35
  runner.review('app/models/post.rb', content)
36
- runner.should have(1).errors
37
- runner.errors[0].to_s.should == "app/models/post.rb:5 - keep finders on their own model"
36
+ expect(runner.errors.size).to eq(1)
37
+ expect(runner.errors[0].to_s).to eq("app/models/post.rb:5 - keep finders on their own model")
38
38
  end
39
39
 
40
40
  it "should not keep finders on thier own model with self finder" do
@@ -49,7 +49,7 @@ module RailsBestPractices
49
49
  end
50
50
  EOF
51
51
  runner.review('app/models/post.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 keep finders on thier own model with own finder" do
@@ -64,7 +64,7 @@ module RailsBestPractices
64
64
  end
65
65
  EOF
66
66
  runner.review('app/models/post.rb', content)
67
- runner.should have(0).errors
67
+ expect(runner.errors.size).to eq(0)
68
68
  end
69
69
 
70
70
  it "should not keep finders on their own model without finder" do
@@ -78,7 +78,7 @@ module RailsBestPractices
78
78
  end
79
79
  EOF
80
80
  runner.review('app/models/post.rb', content)
81
- runner.should have(0).errors
81
+ expect(runner.errors.size).to eq(0)
82
82
  end
83
83
 
84
84
  it "should not keep finders on their own model with ruby Array#find" do
@@ -92,7 +92,23 @@ module RailsBestPractices
92
92
  end
93
93
  EOF
94
94
  runner.review('app/models/post.rb', content)
95
- runner.should have(0).errors
95
+ expect(runner.errors.size).to eq(0)
96
+ end
97
+
98
+ it "should not check ignored files" do
99
+ runner = Core::Runner.new(reviews: KeepFindersOnTheirOwnModelReview.new(ignored_files: /app\/models\/post\.rb/))
100
+ content = <<-EOF
101
+ class Post < ActiveRecord::Base
102
+ has_many :comments
103
+
104
+ def find_valid_comments
105
+ self.comment.find(:all, conditions: { is_spam: false },
106
+ limit: 10)
107
+ end
108
+ end
109
+ EOF
110
+ runner.review('app/models/post.rb', content)
111
+ expect(runner.errors.size).to eq(0)
96
112
  end
97
113
  end
98
114
  end