rails_best_practices 1.20.0 → 1.22.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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +49 -43
  5. data/Guardfile +2 -0
  6. data/Rakefile +2 -0
  7. data/assets/result.html.erb +2 -0
  8. data/lib/rails_best_practices/analyzer.rb +59 -48
  9. data/lib/rails_best_practices/core/check.rb +39 -32
  10. data/lib/rails_best_practices/core/checks_loader.rb +8 -6
  11. data/lib/rails_best_practices/core/configs.rb +1 -2
  12. data/lib/rails_best_practices/core/controllers.rb +1 -2
  13. data/lib/rails_best_practices/core/error.rb +1 -1
  14. data/lib/rails_best_practices/core/helpers.rb +1 -2
  15. data/lib/rails_best_practices/core/mailers.rb +1 -2
  16. data/lib/rails_best_practices/core/methods.rb +21 -16
  17. data/lib/rails_best_practices/core/model_associations.rb +9 -4
  18. data/lib/rails_best_practices/core/models.rb +1 -2
  19. data/lib/rails_best_practices/core/modules.rb +1 -1
  20. data/lib/rails_best_practices/core/routes.rb +2 -2
  21. data/lib/rails_best_practices/core/runner.rb +49 -34
  22. data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
  23. data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
  24. data/lib/rails_best_practices/inline_disables.rb +3 -0
  25. data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
  26. data/lib/rails_best_practices/option_parser.rb +22 -6
  27. data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
  28. data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
  29. data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
  30. data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
  31. data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
  32. data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
  33. data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
  34. data/lib/rails_best_practices/prepares.rb +1 -1
  35. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
  36. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +34 -29
  37. data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
  38. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
  39. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
  40. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
  41. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
  42. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
  43. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
  44. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
  45. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
  46. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
  47. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
  48. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
  49. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
  50. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
  51. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
  52. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
  53. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
  54. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
  55. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
  56. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
  57. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
  58. data/lib/rails_best_practices/reviews/use_model_association_review.rb +5 -5
  59. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
  60. data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
  61. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
  62. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
  63. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
  64. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
  65. data/lib/rails_best_practices/version.rb +1 -1
  66. data/lib/rails_best_practices.rb +2 -2
  67. data/rails_best_practices.gemspec +39 -38
  68. data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
  69. data/spec/rails_best_practices/analyzer_spec.rb +73 -42
  70. data/spec/rails_best_practices/core/check_spec.rb +5 -5
  71. data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
  72. data/spec/rails_best_practices/core/configs_spec.rb +1 -1
  73. data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
  74. data/spec/rails_best_practices/core/error_spec.rb +21 -21
  75. data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
  76. data/spec/rails_best_practices/core/gems_spec.rb +4 -4
  77. data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
  78. data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
  79. data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
  80. data/spec/rails_best_practices/core/methods_spec.rb +6 -6
  81. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
  82. data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
  83. data/spec/rails_best_practices/core/models_spec.rb +1 -1
  84. data/spec/rails_best_practices/core/modules_spec.rb +5 -5
  85. data/spec/rails_best_practices/core/routes_spec.rb +5 -5
  86. data/spec/rails_best_practices/core/runner_spec.rb +9 -7
  87. data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
  88. data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
  89. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +11 -10
  90. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  91. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  92. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
  93. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
  94. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +2 -2
  95. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
  96. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
  97. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  98. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
  99. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +138 -77
  100. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
  101. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
  102. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
  103. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
  104. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
  105. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  106. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
  107. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +9 -9
  108. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
  109. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  110. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +21 -14
  111. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  112. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
  113. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +26 -16
  114. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  115. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
  116. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
  117. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
  118. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
  119. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
  120. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  121. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -19
  122. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
  123. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +44 -31
  124. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
  125. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
  126. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
  127. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -10
  128. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
  129. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
  130. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
  131. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
  132. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  133. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +21 -17
  134. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  135. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +9 -7
  136. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
  137. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
  138. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
  139. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +10 -8
  140. metadata +12 -7
@@ -5,7 +5,7 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Prepares
7
7
  describe ModelPrepare do
8
- let(:runner) { Core::Runner.new(prepares: ModelPrepare.new) }
8
+ let(:runner) { Core::Runner.new(prepares: described_class.new) }
9
9
 
10
10
  context 'models' do
11
11
  it 'class_name with modules ::' do
@@ -32,7 +32,7 @@ module RailsBestPractices
32
32
  end
33
33
 
34
34
  context 'associations' do
35
- it 'should parse model associations' do
35
+ it 'parses model associations' do
36
36
  content = <<-EOF
37
37
  class Project < ActiveRecord::Base
38
38
  belongs_to :portfolio
@@ -43,14 +43,22 @@ module RailsBestPractices
43
43
  EOF
44
44
  runner.prepare('app/models/project.rb', content)
45
45
  model_associations = Prepares.model_associations
46
- expect(model_associations.get_association('Project', 'portfolio')).to eq('meta' => 'belongs_to', 'class_name' => 'Portfolio')
47
- expect(model_associations.get_association('Project', 'project_manager')).to eq('meta' => 'has_one', 'class_name' => 'ProjectManager')
48
- expect(model_associations.get_association('Project', 'milestones')).to eq('meta' => 'has_many', 'class_name' => 'Milestone')
49
- expect(model_associations.get_association('Project', 'categories')).to eq('meta' => 'has_and_belongs_to_many', 'class_name' => 'Category')
46
+ expect(model_associations.get_association('Project', 'portfolio')).to eq(
47
+ 'meta' => 'belongs_to', 'class_name' => 'Portfolio'
48
+ )
49
+ expect(model_associations.get_association('Project', 'project_manager')).to eq(
50
+ 'meta' => 'has_one', 'class_name' => 'ProjectManager'
51
+ )
52
+ expect(model_associations.get_association('Project', 'milestones')).to eq(
53
+ 'meta' => 'has_many', 'class_name' => 'Milestone'
54
+ )
55
+ expect(model_associations.get_association('Project', 'categories')).to eq(
56
+ 'meta' => 'has_and_belongs_to_many', 'class_name' => 'Category'
57
+ )
50
58
  end
51
59
 
52
60
  context 'with class_name option' do
53
- it 'should parse belongs_to' do
61
+ it 'parses belongs_to' do
54
62
  content = <<-EOF
55
63
  class Post < ActiveRecord::Base
56
64
  belongs_to :author, "class_name" => "Person"
@@ -58,10 +66,12 @@ module RailsBestPractices
58
66
  EOF
59
67
  runner.prepare('app/models/post.rb', content)
60
68
  model_associations = Prepares.model_associations
61
- expect(model_associations.get_association('Post', 'author')).to eq('meta' => 'belongs_to', 'class_name' => 'Person')
69
+ expect(model_associations.get_association('Post', 'author')).to eq(
70
+ 'meta' => 'belongs_to', 'class_name' => 'Person'
71
+ )
62
72
  end
63
73
 
64
- it 'should parse has_one' do
74
+ it 'parses has_one' do
65
75
  content = <<-EOF
66
76
  class Project < ActiveRecord::Base
67
77
  has_one :project_manager, "class_name" => "Person"
@@ -69,10 +79,12 @@ module RailsBestPractices
69
79
  EOF
70
80
  runner.prepare('app/models/post.rb', content)
71
81
  model_associations = Prepares.model_associations
72
- expect(model_associations.get_association('Project', 'project_manager')).to eq('meta' => 'has_one', 'class_name' => 'Person')
82
+ expect(model_associations.get_association('Project', 'project_manager')).to eq(
83
+ 'meta' => 'has_one', 'class_name' => 'Person'
84
+ )
73
85
  end
74
86
 
75
- it 'should parse has_many' do
87
+ it 'parses has_many' do
76
88
  content = <<-EOF
77
89
  class Project < ActiveRecord::Base
78
90
  has_many :people, "class_name" => "Person"
@@ -80,10 +92,12 @@ module RailsBestPractices
80
92
  EOF
81
93
  runner.prepare('app/models/project.rb', content)
82
94
  model_associations = Prepares.model_associations
83
- expect(model_associations.get_association('Project', 'people')).to eq('meta' => 'has_many', 'class_name' => 'Person')
95
+ expect(model_associations.get_association('Project', 'people')).to eq(
96
+ 'meta' => 'has_many', 'class_name' => 'Person'
97
+ )
84
98
  end
85
99
 
86
- it 'should parse has_and_belongs_to_many' do
100
+ it 'parses has_and_belongs_to_many' do
87
101
  content = <<-EOF
88
102
  class Citizen < ActiveRecord::Base
89
103
  has_and_belongs_to_many :nations, "class_name" => "Country"
@@ -91,11 +105,13 @@ module RailsBestPractices
91
105
  EOF
92
106
  runner.prepare('app/models/citizen.rb', content)
93
107
  model_associations = Prepares.model_associations
94
- expect(model_associations.get_association('Citizen', 'nations')).to eq('meta' => 'has_and_belongs_to_many', 'class_name' => 'Country')
108
+ expect(model_associations.get_association('Citizen', 'nations')).to eq(
109
+ 'meta' => 'has_and_belongs_to_many', 'class_name' => 'Country'
110
+ )
95
111
  end
96
112
 
97
113
  context 'namespace' do
98
- it 'should parse with namespace' do
114
+ it 'parses with namespace' do
99
115
  content = <<-EOF
100
116
  class Community < ActiveRecord::Base
101
117
  has_many :members
@@ -110,11 +126,15 @@ module RailsBestPractices
110
126
  runner.prepare('app/models/community/member.rb', content)
111
127
  runner.after_prepare
112
128
  model_associations = Prepares.model_associations
113
- expect(model_associations.get_association('Community', 'members')).to eq('meta' => 'has_many', 'class_name' => 'Community::Member')
114
- expect(model_associations.get_association('Community::Member', 'community')).to eq('meta' => 'belongs_to', 'class_name' => 'Community')
129
+ expect(model_associations.get_association('Community', 'members')).to eq(
130
+ 'meta' => 'has_many', 'class_name' => 'Community::Member'
131
+ )
132
+ expect(model_associations.get_association('Community::Member', 'community')).to eq(
133
+ 'meta' => 'belongs_to', 'class_name' => 'Community'
134
+ )
115
135
  end
116
136
 
117
- it 'should parse without namespace' do
137
+ it 'parses without namespace' do
118
138
  content = <<-EOF
119
139
  class Community::Member::Rating < ActiveRecord::Base
120
140
  belongs_to :member
@@ -129,14 +149,18 @@ module RailsBestPractices
129
149
  runner.prepare('app/models/community/member.rb', content)
130
150
  runner.after_prepare
131
151
  model_associations = Prepares.model_associations
132
- expect(model_associations.get_association('Community::Member::Rating', 'member')).to eq('meta' => 'belongs_to', 'class_name' => 'Community::Member')
133
- expect(model_associations.get_association('Community::Member', 'ratings')).to eq('meta' => 'has_many', 'class_name' => 'Community::Member::Rating')
152
+ expect(model_associations.get_association('Community::Member::Rating', 'member')).to eq(
153
+ 'meta' => 'belongs_to', 'class_name' => 'Community::Member'
154
+ )
155
+ expect(model_associations.get_association('Community::Member', 'ratings')).to eq(
156
+ 'meta' => 'has_many', 'class_name' => 'Community::Member::Rating'
157
+ )
134
158
  end
135
159
  end
136
160
  end
137
161
 
138
162
  context 'mongoid embeds' do
139
- it 'should parse embeds_many' do
163
+ it 'parses embeds_many' do
140
164
  content = <<-EOF
141
165
  class Person
142
166
  include Mongoid::Document
@@ -145,10 +169,12 @@ module RailsBestPractices
145
169
  EOF
146
170
  runner.prepare('app/models/person.rb', content)
147
171
  model_associations = Prepares.model_associations
148
- expect(model_associations.get_association('Person', 'addresses')).to eq('meta' => 'embeds_many', 'class_name' => 'Address')
172
+ expect(model_associations.get_association('Person', 'addresses')).to eq(
173
+ 'meta' => 'embeds_many', 'class_name' => 'Address'
174
+ )
149
175
  end
150
176
 
151
- it 'should parse embeds_one' do
177
+ it 'parses embeds_one' do
152
178
  content = <<-EOF
153
179
  class Lush
154
180
  include Mongoid::Document
@@ -157,10 +183,12 @@ module RailsBestPractices
157
183
  EOF
158
184
  runner.prepare('app/models/lush.rb', content)
159
185
  model_associations = Prepares.model_associations
160
- expect(model_associations.get_association('Lush', 'whiskey')).to eq('meta' => 'embeds_one', 'class_name' => 'Drink')
186
+ expect(model_associations.get_association('Lush', 'whiskey')).to eq(
187
+ 'meta' => 'embeds_one', 'class_name' => 'Drink'
188
+ )
161
189
  end
162
190
 
163
- it 'should parse embedded_in' do
191
+ it 'parses embedded_in' do
164
192
  content = <<-EOF
165
193
  class Drink
166
194
  include Mongoid::Document
@@ -169,12 +197,14 @@ module RailsBestPractices
169
197
  EOF
170
198
  runner.prepare('app/models/drink.rb', content)
171
199
  model_associations = Prepares.model_associations
172
- expect(model_associations.get_association('Drink', 'alcoholic')).to eq('meta' => 'embedded_in', 'class_name' => 'Lush')
200
+ expect(model_associations.get_association('Drink', 'alcoholic')).to eq(
201
+ 'meta' => 'embedded_in', 'class_name' => 'Lush'
202
+ )
173
203
  end
174
204
  end
175
205
 
176
206
  context 'mongomapper many/one' do
177
- it 'should parse one' do
207
+ it 'parses one' do
178
208
  content = <<-EOF
179
209
  class Employee
180
210
  include MongoMapper::Document
@@ -183,10 +213,12 @@ module RailsBestPractices
183
213
  EOF
184
214
  runner.prepare('app/models/employee.rb', content)
185
215
  model_associations = Prepares.model_associations
186
- expect(model_associations.get_association('Employee', 'desk')).to eq('meta' => 'one', 'class_name' => 'Desk')
216
+ expect(model_associations.get_association('Employee', 'desk')).to eq(
217
+ 'meta' => 'one', 'class_name' => 'Desk'
218
+ )
187
219
  end
188
220
 
189
- it 'should parse many' do
221
+ it 'parses many' do
190
222
  content = <<-EOF
191
223
  class Tree
192
224
  include MongoMapper::Document
@@ -201,7 +233,7 @@ module RailsBestPractices
201
233
  end
202
234
 
203
235
  context 'methods' do
204
- it 'should parse model methods' do
236
+ it 'parses model methods' do
205
237
  content = <<-EOF
206
238
  class Post < ActiveRecord::Base
207
239
  def save; end
@@ -213,7 +245,7 @@ module RailsBestPractices
213
245
  expect(methods.get_methods('Post').map(&:method_name)).to eq(%w[save find])
214
246
  end
215
247
 
216
- it 'should parse model methods with access control' do
248
+ it 'parses model methods with access control' do
217
249
  content = <<-EOF
218
250
  class Post < ActiveRecord::Base
219
251
  def save; end
@@ -232,7 +264,7 @@ module RailsBestPractices
232
264
  expect(methods.get_methods('Post', 'private').map(&:method_name)).to eq(['find_by_sql'])
233
265
  end
234
266
 
235
- it 'should parse model methods with module ::' do
267
+ it 'parses model methods with module ::' do
236
268
  content = <<-EOF
237
269
  class Admin::Blog::Post < ActiveRecord::Base
238
270
  def save; end
@@ -244,7 +276,7 @@ module RailsBestPractices
244
276
  expect(methods.get_methods('Admin::Blog::Post').map(&:method_name)).to eq(%w[save find])
245
277
  end
246
278
 
247
- it 'should parse model methods with module' do
279
+ it 'parses model methods with module' do
248
280
  content = <<-EOF
249
281
  module Admin
250
282
  module Blog
@@ -260,7 +292,7 @@ module RailsBestPractices
260
292
  expect(methods.get_methods('Admin::Blog::Post').map(&:method_name)).to eq(%w[save find])
261
293
  end
262
294
 
263
- it 'should not add methods from module' do
295
+ it 'does not add methods from module' do
264
296
  content = <<-EOF
265
297
  class Model < ActiveRecord::Base
266
298
  end
@@ -279,7 +311,7 @@ module RailsBestPractices
279
311
  end
280
312
 
281
313
  context 'scope' do
282
- it 'should treat named_scope as method' do
314
+ it 'treats named_scope as method' do
283
315
  content = <<-EOF
284
316
  class Post < ActiveRecord::Base
285
317
  named_scope :active, conditions: {active: true}
@@ -290,7 +322,7 @@ module RailsBestPractices
290
322
  expect(methods.get_methods('Post').map(&:method_name)).to eq(['active'])
291
323
  end
292
324
 
293
- it 'should treat scope as method' do
325
+ it 'treats scope as method' do
294
326
  content = <<-EOF
295
327
  class Post < ActiveRecord::Base
296
328
  scope :active, where(active: true)
@@ -303,7 +335,7 @@ module RailsBestPractices
303
335
  end
304
336
 
305
337
  context 'alias' do
306
- it 'should treat alias as method' do
338
+ it 'treats alias as method' do
307
339
  content = <<-EOF
308
340
  class Post < ActiveRecord::Base
309
341
  alias :new :old
@@ -314,7 +346,7 @@ module RailsBestPractices
314
346
  expect(methods.get_methods('Post').map(&:method_name)).to eq(['new'])
315
347
  end
316
348
 
317
- it 'should treat alias_method as method' do
349
+ it 'treats alias_method as method' do
318
350
  content = <<-EOF
319
351
  class Post < ActiveRecord::Base
320
352
  alias_method :new, :old
@@ -325,7 +357,7 @@ module RailsBestPractices
325
357
  expect(methods.get_methods('Post').map(&:method_name)).to eq(['new'])
326
358
  end
327
359
 
328
- it 'should treat alias_method_chain as method' do
360
+ it 'treats alias_method_chain as method' do
329
361
  content = <<-EOF
330
362
  class Post < ActiveRecord::Base
331
363
  alias_method_chain :method, :feature
@@ -338,7 +370,7 @@ module RailsBestPractices
338
370
  end
339
371
 
340
372
  context 'attributes' do
341
- it 'should parse mongoid field' do
373
+ it 'parses mongoid field' do
342
374
  content = <<-EOF
343
375
  class Post
344
376
  include Mongoid::Document
@@ -358,7 +390,7 @@ module RailsBestPractices
358
390
  expect(model_attributes.get_attribute_type('Post', 'active')).to eq('Boolean')
359
391
  end
360
392
 
361
- it 'should parse mongomapper field' do
393
+ it 'parses mongomapper field' do
362
394
  content = <<-EOF
363
395
  class Post
364
396
  include MongoMapper::Document
@@ -382,13 +414,17 @@ module RailsBestPractices
382
414
  end
383
415
 
384
416
  context 'no error' do
385
- it 'should raised for finder_sql option' do
417
+ it 'raiseds for finder_sql option' do
386
418
  content = <<-EOF
387
419
  class EventSubscription < ActiveRecord::Base
388
420
  has_many :event_notification_template, finder_sql: ?
389
421
  end
390
422
  EOF
391
- content = content.sub('?', '\'SELECT event_notification_templates.* from event_notification_templates where event_type_id=#{event_type_id} and delivery_method_id=#{delivery_method_id}\'')
423
+ content =
424
+ content.sub(
425
+ '?',
426
+ '\'SELECT event_notification_templates.* from event_notification_templates where event_type_id=#{event_type_id} and delivery_method_id=#{delivery_method_id}\''
427
+ )
392
428
  expect { runner.prepare('app/models/event_subscription.rb', content) }.not_to raise_error
393
429
  end
394
430
  end