rails_best_practices 1.9.1 → 1.10.0

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 (91) hide show
  1. data/.rvmrc +1 -1
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +10 -2
  4. data/README.md +33 -27
  5. data/lib/rails_best_practices/analyzer.rb +13 -13
  6. data/lib/rails_best_practices/core/check.rb +7 -6
  7. data/lib/rails_best_practices/core/checking_visitor.rb +1 -1
  8. data/lib/rails_best_practices/core/runner.rb +2 -3
  9. data/lib/rails_best_practices/core_ext/sexp.rb +18 -17
  10. data/lib/rails_best_practices/lexicals.rb +1 -0
  11. data/lib/rails_best_practices/lexicals/long_line_check.rb +31 -0
  12. data/lib/rails_best_practices/prepares/config_prepare.rb +1 -1
  13. data/lib/rails_best_practices/reviews.rb +2 -0
  14. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +2 -2
  15. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +1 -1
  16. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +63 -0
  17. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +1 -1
  18. data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +1 -1
  19. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +1 -1
  20. data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +1 -1
  21. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +1 -1
  22. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +1 -1
  23. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +15 -6
  24. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +4 -2
  25. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +8 -4
  26. data/lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb +2 -1
  27. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +52 -8
  28. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +14 -2
  29. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +8 -3
  30. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +2 -1
  31. data/lib/rails_best_practices/reviews/use_observer_review.rb +1 -1
  32. data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +33 -0
  33. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +16 -6
  34. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +9 -6
  35. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +8 -3
  36. data/lib/rails_best_practices/version.rb +1 -1
  37. data/rails_best_practices.yml +28 -25
  38. data/rake_rubies.sh +1 -1
  39. data/spec/rails_best_practices/analyzer_spec.rb +1 -1
  40. data/spec/rails_best_practices/core/check_spec.rb +7 -7
  41. data/spec/rails_best_practices/core/checking_visitor_spec.rb +7 -7
  42. data/spec/rails_best_practices/core/error_spec.rb +12 -12
  43. data/spec/rails_best_practices/core_ext/sexp_spec.rb +103 -85
  44. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +47 -0
  45. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +1 -1
  46. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +1 -1
  47. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +1 -1
  48. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +1 -1
  49. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +1 -1
  50. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +1 -1
  51. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +4 -4
  52. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +54 -54
  53. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +6 -6
  54. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +4 -4
  55. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +46 -46
  56. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +3 -3
  57. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +67 -0
  58. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +8 -8
  59. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  60. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +7 -7
  61. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +1 -1
  62. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +1 -1
  63. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +1 -1
  64. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +13 -13
  65. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +2 -2
  66. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +3 -3
  67. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +3 -3
  68. data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +1 -1
  69. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +26 -26
  70. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +11 -2
  71. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +1 -1
  72. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +8 -8
  73. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +2 -2
  74. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +25 -10
  75. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +3 -3
  76. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +1 -1
  77. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +28 -28
  78. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +4 -4
  79. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +15 -7
  80. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +3 -3
  81. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +3 -3
  82. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +3 -3
  83. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +5 -5
  84. data/spec/rails_best_practices/reviews/use_parenthesis_in_method_def_spec.rb +41 -0
  85. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +3 -3
  86. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +8 -8
  87. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +9 -9
  88. data/spec/spec_helper.rb +1 -1
  89. metadata +36 -29
  90. data/.rspec.example +0 -2
  91. data/.rvmrc.example +0 -2
@@ -3,18 +3,18 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Prepares
5
5
  describe SchemaPrepare do
6
- let(:runner) { Core::Runner.new(:prepares => SchemaPrepare.new) }
6
+ let(:runner) { Core::Runner.new(prepares: SchemaPrepare.new) }
7
7
 
8
8
  it "should parse model attributes" do
9
9
  content =<<-EOF
10
- ActiveRecord::Schema.define(:version => 20110319172136) do
11
- create_table "posts", :force => true do |t|
10
+ ActiveRecord::Schema.define(version: 20110319172136) do
11
+ create_table "posts", force: true do |t|
12
12
  t.string "title"
13
- t.text "body", :limit => 16777215
13
+ t.text "body", limit: 16777215
14
14
  t.datetime "created_at"
15
15
  t.integer "user_id"
16
- t.integer "comments_count", :default => 0
17
- t.boolean "published", :default => false, :null => false
16
+ t.integer "comments_count", default: 0
17
+ t.boolean "published", default: false, null: false
18
18
  end
19
19
  end
20
20
  EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe AddModelVirtualAttributeReview do
6
- let(:runner) { Core::Runner.new(:reviews => AddModelVirtualAttributeReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: AddModelVirtualAttributeReview.new) }
7
7
 
8
8
  it "should add model virtual attribute" do
9
9
  content = <<-EOF
@@ -18,7 +18,7 @@ module RailsBestPractices
18
18
  EOF
19
19
  runner.review('app/controllers/users_controller.rb', content)
20
20
  runner.should have(1).errors
21
- runner.errors[0].to_s.should == "app/controllers/users_controller.rb:3 - add model virtual attribute (for @user)"
21
+ runner.errors[0].to_s.should == "app/controllers/users_controller.rb:2 - add model virtual attribute (for @user)"
22
22
  end
23
23
 
24
24
  it "should add model virtual attribute with local assignment" do
@@ -34,7 +34,7 @@ module RailsBestPractices
34
34
  EOF
35
35
  runner.review('app/controllers/users_controller.rb', content)
36
36
  runner.should have(1).errors
37
- runner.errors[0].to_s.should == "app/controllers/users_controller.rb:3 - add model virtual attribute (for user)"
37
+ runner.errors[0].to_s.should == "app/controllers/users_controller.rb:2 - add model virtual attribute (for user)"
38
38
  end
39
39
 
40
40
  it "should not add model virtual attribute with differen param" do
@@ -81,7 +81,7 @@ module RailsBestPractices
81
81
  EOF
82
82
  runner.review('app/controllers/users_controller.rb', content)
83
83
  runner.should have(1).errors
84
- runner.errors[0].to_s.should == "app/controllers/users_controller.rb:3 - add model virtual attribute (for @user)"
84
+ runner.errors[0].to_s.should == "app/controllers/users_controller.rb:2 - add model virtual attribute (for @user)"
85
85
  end
86
86
 
87
87
  it "should no add model virtual attribute with two dimension params" do
@@ -3,19 +3,19 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe AlwaysAddDbIndexReview do
6
- let(:runner) { Core::Runner.new(:reviews => AlwaysAddDbIndexReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: AlwaysAddDbIndexReview.new) }
7
7
 
8
8
  it "should always add db index" do
9
9
  content = <<-EOF
10
- ActiveRecord::Schema.define(:version => 20100603080629) do
11
- create_table "comments", :force => true do |t|
10
+ ActiveRecord::Schema.define(version: 20100603080629) do
11
+ create_table "comments", force: true do |t|
12
12
  t.string "content"
13
13
  t.integer "post_id"
14
14
  t.integer "user_id"
15
15
  end
16
- create_table "posts", :force => true do |t|
16
+ create_table "posts", force: true do |t|
17
17
  end
18
- create_table "users", :force => true do |t|
18
+ create_table "users", force: true do |t|
19
19
  end
20
20
  end
21
21
  EOF
@@ -28,8 +28,8 @@ module RailsBestPractices
28
28
 
29
29
  it "should always add db index with polymorphic foreign key" do
30
30
  content = <<-EOF
31
- ActiveRecord::Schema.define(:version => 20100603080629) do
32
- create_table "versions", :force => true do |t|
31
+ ActiveRecord::Schema.define(version: 20100603080629) do
32
+ create_table "versions", force: true do |t|
33
33
  t.integer "versioned_id"
34
34
  t.string "versioned_type"
35
35
  t.string "tag"
@@ -44,8 +44,8 @@ module RailsBestPractices
44
44
 
45
45
  it "should always add db index with polymorphic foreign key and _type is defined before _id" do
46
46
  content = <<-EOF
47
- ActiveRecord::Schema.define(:version => 20100603080629) do
48
- create_table "versions", :force => true do |t|
47
+ ActiveRecord::Schema.define(version: 20100603080629) do
48
+ create_table "versions", force: true do |t|
49
49
  t.string "versioned_type"
50
50
  t.integer "versioned_id"
51
51
  t.string "tag"
@@ -60,16 +60,16 @@ module RailsBestPractices
60
60
 
61
61
  it "should always add db index with single index, but without polymorphic foreign key" do
62
62
  content = <<-EOF
63
- ActiveRecord::Schema.define(:version => 20100603080629) do
64
- create_table "taggings", :force => true do |t|
63
+ ActiveRecord::Schema.define(version: 20100603080629) do
64
+ create_table "taggings", force: true do |t|
65
65
  t.integer "tag_id"
66
66
  t.integer "taggable_id"
67
67
  t.string "taggable_type"
68
68
  end
69
- create_table "tags", :force => true do |t|
69
+ create_table "tags", force: true do |t|
70
70
  end
71
71
 
72
- add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
72
+ add_index "taggings", ["tag_id"], name: "index_taggings_on_tag_id"
73
73
  end
74
74
  EOF
75
75
  runner.review('db/schema.rb', content)
@@ -80,16 +80,16 @@ module RailsBestPractices
80
80
 
81
81
  it "should always add db index with polymorphic foreign key, but without single index" do
82
82
  content = <<-EOF
83
- ActiveRecord::Schema.define(:version => 20100603080629) do
84
- create_table "taggings", :force => true do |t|
83
+ ActiveRecord::Schema.define(version: 20100603080629) do
84
+ create_table "taggings", force: true do |t|
85
85
  t.integer "tag_id"
86
86
  t.integer "taggable_id"
87
87
  t.string "taggable_type"
88
88
  end
89
- create_table "tags", :force => true do |t|
89
+ create_table "tags", force: true do |t|
90
90
  end
91
91
 
92
- add_index "taggings", ["taggable_id", "taggable_type"], :name => "index_taggings_on_taggable_id_and_taggable_type"
92
+ add_index "taggings", ["taggable_id", "taggable_type"], name: "index_taggings_on_taggable_id_and_taggable_type"
93
93
  end
94
94
  EOF
95
95
  runner.review('db/schema.rb', content)
@@ -100,14 +100,14 @@ module RailsBestPractices
100
100
 
101
101
  it "should always add db index only _id without non related _type column" do
102
102
  content = <<-EOF
103
- ActiveRecord::Schema.define(:version => 20100603080629) do
104
- create_table "websites", :force => true do |t|
103
+ ActiveRecord::Schema.define(version: 20100603080629) do
104
+ create_table "websites", force: true do |t|
105
105
  t.integer "user_id"
106
106
  t.string "icon_file_name"
107
107
  t.integer "icon_file_size"
108
108
  t.string "icon_content_type"
109
109
  end
110
- create_table "users", :force => true do |t|
110
+ create_table "users", force: true do |t|
111
111
  end
112
112
  end
113
113
  EOF
@@ -119,8 +119,8 @@ module RailsBestPractices
119
119
 
120
120
  it "should not always add db index with column has no id" do
121
121
  content = <<-EOF
122
- ActiveRecord::Schema.define(:version => 20100603080629) do
123
- create_table "comments", :force => true do |t|
122
+ ActiveRecord::Schema.define(version: 20100603080629) do
123
+ create_table "comments", force: true do |t|
124
124
  t.string "content"
125
125
  t.integer "position"
126
126
  end
@@ -133,19 +133,19 @@ module RailsBestPractices
133
133
 
134
134
  it "should not always add db index with add_index" do
135
135
  content = <<-EOF
136
- ActiveRecord::Schema.define(:version => 20100603080629) do
137
- create_table "comments", :force => true do |t|
136
+ ActiveRecord::Schema.define(version: 20100603080629) do
137
+ create_table "comments", force: true do |t|
138
138
  t.string "content"
139
139
  t.integer "post_id"
140
140
  t.integer "user_id"
141
141
  end
142
- create_table "posts", :force => true do |t|
142
+ create_table "posts", force: true do |t|
143
143
  end
144
- create_table "users", :force => true do |t|
144
+ create_table "users", force: true do |t|
145
145
  end
146
146
 
147
- add_index "comments", ["post_id"], :name => "index_comments_on_post_id"
148
- add_index "comments", ["user_id"], :name => "index_comments_on_user_id"
147
+ add_index "comments", ["post_id"], name: "index_comments_on_post_id"
148
+ add_index "comments", ["user_id"], name: "index_comments_on_user_id"
149
149
  end
150
150
  EOF
151
151
  runner.review('db/schema.rb', content)
@@ -155,8 +155,8 @@ module RailsBestPractices
155
155
 
156
156
  it "should not always add db index with only _type column" do
157
157
  content = <<-EOF
158
- ActiveRecord::Schema.define(:version => 20100603080629) do
159
- create_table "versions", :force => true do |t|
158
+ ActiveRecord::Schema.define(version: 20100603080629) do
159
+ create_table "versions", force: true do |t|
160
160
  t.string "versioned_type"
161
161
  end
162
162
  end
@@ -168,14 +168,14 @@ module RailsBestPractices
168
168
 
169
169
  it "should not always add db index with multi-column index" do
170
170
  content = <<-EOF
171
- ActiveRecord::Schema.define(:version => 20100603080629) do
172
- create_table "versions", :force => true do |t|
171
+ ActiveRecord::Schema.define(version: 20100603080629) do
172
+ create_table "versions", force: true do |t|
173
173
  t.integer "versioned_id"
174
174
  t.string "versioned_type"
175
175
  t.string "tag"
176
176
  end
177
177
 
178
- add_index "versions", ["versioned_id", "versioned_type"], :name => "index_versions_on_versioned_id_and_versioned_type"
178
+ add_index "versions", ["versioned_id", "versioned_type"], name: "index_versions_on_versioned_id_and_versioned_type"
179
179
  end
180
180
  EOF
181
181
  runner.review('db/schema.rb', content)
@@ -185,14 +185,14 @@ module RailsBestPractices
185
185
 
186
186
  it "should not always add db index if there is an index contains more columns" do
187
187
  content = <<-EOF
188
- ActiveRecord::Schema.define(:version => 20100603080629) do
189
- create_table "taggings", :force => true do |t|
188
+ ActiveRecord::Schema.define(version: 20100603080629) do
189
+ create_table "taggings", force: true do |t|
190
190
  t.integer "taggable_id"
191
191
  t.string "taggable_type"
192
192
  t.string "context"
193
193
  end
194
194
 
195
- add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
195
+ add_index "taggings", ["taggable_id", "taggable_type", "context"], name: "index_taggings_on_taggable_id_and_taggable_type_and_context"
196
196
  end
197
197
  EOF
198
198
  runner.review('db/schema.rb', content)
@@ -202,15 +202,15 @@ module RailsBestPractices
202
202
 
203
203
  it "should not always add db index if two indexes for polymorphic association" do
204
204
  content =<<-EOF
205
- ActiveRecord::Schema.define(:version => 20100603080629) do
206
- create_table "taggings", :force => true do |t|
205
+ ActiveRecord::Schema.define(version: 20100603080629) do
206
+ create_table "taggings", force: true do |t|
207
207
  t.integer "tagger_id"
208
208
  t.string "tagger_type"
209
209
  t.datetime "created_at"
210
210
  end
211
211
 
212
- add_index "taggings", ["tagger_id"], :name => "index_taggings_on_tagger_id"
213
- add_index "taggings", ["tagger_type"], :name => "index_taggings_on_tagger_type"
212
+ add_index "taggings", ["tagger_id"], name: "index_taggings_on_tagger_id"
213
+ add_index "taggings", ["tagger_type"], name: "index_taggings_on_tagger_type"
214
214
  end
215
215
  EOF
216
216
  runner.review('db/schema.rb', content)
@@ -220,8 +220,8 @@ module RailsBestPractices
220
220
 
221
221
  it "should not always add db index if table does not exist" do
222
222
  content =<<-EOF
223
- ActiveRecord::Schema.define(:version => 20100603080629) do
224
- create_table "comments", :force => true do |t|
223
+ ActiveRecord::Schema.define(version: 20100603080629) do
224
+ create_table "comments", force: true do |t|
225
225
  t.integer "post_id"
226
226
  end
227
227
  end
@@ -234,7 +234,7 @@ module RailsBestPractices
234
234
  it "should always add db index if association_name is different to foreign_key" do
235
235
  content =<<-EOF
236
236
  class Comment < ActiveRecord::Base
237
- belongs_to :commentor, :class_name => "User"
237
+ belongs_to :commentor, class_name: "User"
238
238
  end
239
239
  EOF
240
240
  runner.prepare('app/models/comment.rb', content)
@@ -244,11 +244,11 @@ module RailsBestPractices
244
244
  EOF
245
245
  runner.prepare('app/models/user.rb', content)
246
246
  content =<<-EOF
247
- ActiveRecord::Schema.define(:version => 20100603080629) do
248
- create_table "comments", :force => true do |t|
247
+ ActiveRecord::Schema.define(version: 20100603080629) do
248
+ create_table "comments", force: true do |t|
249
249
  t.integer "commentor_id"
250
250
  end
251
- create_table "users", :force => true do |t|
251
+ create_table "users", force: true do |t|
252
252
  end
253
253
  end
254
254
  EOF
@@ -3,18 +3,18 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe DryBundlerInCapistranoReview do
6
- let(:runner) { runner = Core::Runner.new(:reviews => DryBundlerInCapistranoReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: DryBundlerInCapistranoReview.new) }
7
7
 
8
8
  it "should dry bundler in capistrno" do
9
9
  content = <<-EOF
10
10
  namespace :bundler do
11
- task :create_symlink, :roles => :app do
11
+ task :create_symlink, roles: :app do
12
12
  shared_dir = File.join(shared_path, 'bundle')
13
13
  release_dir = File.join(current_release, '.bundle')
14
14
  run("mkdir -p \#{shared_dir} && ln -s \#{shared_dir} \#{release_dir}")
15
15
  end
16
16
 
17
- task :bundle_new_release, :roles => :app do
17
+ task :bundle_new_release, roles: :app do
18
18
  bundler.create_symlink
19
19
  run "cd \#{release_path} && bundle install --without development test"
20
20
  end
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ module RailsBestPractices
4
+ module Reviews
5
+ describe HashSyntaxReview do
6
+ let(:runner) { Core::Runner.new(reviews: HashSyntaxReview.new) }
7
+
8
+ it "should find 1.8 Hash with symbol" do
9
+ content =<<-EOF
10
+ class User < ActiveRecord::Base
11
+ CONST = { :foo => :bar }
12
+ end
13
+ EOF
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"
17
+ end
18
+
19
+ it "should find 1.8 Hash with symbol" do
20
+ content =<<-EOF
21
+ class User < ActiveRecord::Base
22
+ CONST = { "foo" => "bar" }
23
+ end
24
+ EOF
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 - change Hash Syntax to 1.9"
28
+ end
29
+
30
+ it "should not alert on 1.9 Syntax" do
31
+ content =<<-EOF
32
+ class User < ActiveRecord::Base
33
+ CONST = { foo: :bar }
34
+ end
35
+ EOF
36
+ runner.review('app/models/user.rb', content)
37
+ runner.should have(0).errors
38
+ end
39
+
40
+ it "should only check symbol syntax" do
41
+ runner = Core::Runner.new(reviews: HashSyntaxReview.new(only_symbol: true))
42
+ content =<<-EOF
43
+ class User < ActiveRecord::Base
44
+ SYMBOL_CONST = { :foo => :bar }
45
+ STRING_CONST = { "foo" => "bar" }
46
+ end
47
+ EOF
48
+ runner.review('app/models/user.rb', content)
49
+ runner.should have(1).errors
50
+ runner.errors[0].to_s.should == "app/models/user.rb:2 - change Hash Syntax to 1.9"
51
+ end
52
+
53
+ it "should only check string syntax" do
54
+ runner = Core::Runner.new(reviews: HashSyntaxReview.new(only_string: true))
55
+ content =<<-EOF
56
+ class User < ActiveRecord::Base
57
+ SYMBOL_CONST = { :foo => :bar }
58
+ STRING_CONST = { "foo" => "bar" }
59
+ end
60
+ EOF
61
+ runner.review('app/models/user.rb', content)
62
+ runner.should have(1).errors
63
+ runner.errors[0].to_s.should == "app/models/user.rb:3 - change Hash Syntax to 1.9"
64
+ end
65
+ end
66
+ end
67
+ end
@@ -3,19 +3,19 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe IsolateSeedDataReview do
6
- let(:runner) { Core::Runner.new(:reviews => IsolateSeedDataReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: IsolateSeedDataReview.new) }
7
7
 
8
8
  context "create" do
9
9
  it "should isolate seed data" do
10
10
  content = <<-EOF
11
11
  class CreateRoles < ActiveRecord::Migration
12
12
  def self.up
13
- create_table "roles", :force => true do |t|
13
+ create_table "roles", force: true do |t|
14
14
  t.string :name
15
15
  end
16
16
 
17
17
  ["admin", "author", "editor", "account"].each do |name|
18
- Role.create!(:name => name)
18
+ Role.create!(name: name)
19
19
  end
20
20
  end
21
21
 
@@ -35,12 +35,12 @@ module RailsBestPractices
35
35
  content = <<-EOF
36
36
  class CreateRoles < ActiveRecord::Migration
37
37
  def self.up
38
- create_table "roles", :force => true do |t|
38
+ create_table "roles", force: true do |t|
39
39
  t.string :name
40
40
  end
41
41
 
42
42
  ["admin", "author", "editor", "account"].each do |name|
43
- role = Role.new(:name => name)
43
+ role = Role.new(name: name)
44
44
  role.save!
45
45
  end
46
46
  end
@@ -59,12 +59,12 @@ module RailsBestPractices
59
59
  content = <<-EOF
60
60
  class CreateRoles < ActiveRecord::Migration
61
61
  def self.up
62
- create_table "roles", :force => true do |t|
62
+ create_table "roles", force: true do |t|
63
63
  t.string :name
64
64
  end
65
65
 
66
66
  ["admin", "author", "editor", "account"].each do |name|
67
- @role = Role.new(:name => name)
67
+ @role = Role.new(name: name)
68
68
  @role.save!
69
69
  end
70
70
  end
@@ -84,7 +84,7 @@ module RailsBestPractices
84
84
  content = <<-EOF
85
85
  class CreateRoles < ActiveRecord::Migration
86
86
  def self.up
87
- create_table "roles", :force => true do |t|
87
+ create_table "roles", force: true do |t|
88
88
  t.string :name
89
89
  end
90
90
  end