rubocop-airbnb 2.0.0 → 3.0.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +6 -1
- data/config/rubocop-airbnb.yml +0 -5
- data/config/rubocop-gemspec.yml +3 -0
- data/config/rubocop-layout.yml +6 -10
- data/config/rubocop-lint.yml +9 -4
- data/config/rubocop-naming.yml +3 -0
- data/config/rubocop-performance.yml +0 -19
- data/config/rubocop-rails.yml +6 -0
- data/config/rubocop-style.yml +25 -11
- data/lib/rubocop/airbnb/version.rb +1 -1
- data/lib/rubocop/cop/airbnb/continuation_slash.rb +1 -1
- data/rubocop-airbnb.gemspec +3 -1
- metadata +33 -7
- data/lib/rubocop/cop/airbnb/class_name.rb +0 -47
- data/spec/rubocop/cop/airbnb/class_name_spec.rb +0 -78
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d17d320064046e37b313b570d8f4ab81f6b615b
|
4
|
+
data.tar.gz: 6dead3f9f8849866f8a57c4fc15bb5cb0f0d4176
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1f95f01b2d2bc692b651dbb364fcf5c5a4a17d4007b0ddc120d97ba3025dc314b091b1bb3b088d0f8182cc4cd9088548d794fedbd3a4702fff86632579fea9e7
|
7
|
+
data.tar.gz: 4fd9025bfd1273ed564071eadff4bf17ed416b56def7f24fe10598846b5988cbf9fbf23f2af57072c68c84ebaabae3250467860f1f8557db1cbc4e812bf6dfb5
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# 3.0.0
|
2
|
+
* Update to rubocop 0.76
|
3
|
+
* Enable Rails/IgnoredSkipActionFilterOption
|
4
|
+
* Enable Rails/ReflectionClassName
|
5
|
+
* Disable and delete Airbnb/ClassName
|
6
|
+
* Enable Layout/IndentFirstParameter
|
7
|
+
* Drop support for Ruby 2.2
|
8
|
+
|
1
9
|
# 2.0.0
|
2
10
|
* Upgrade to rubocop-rspec 1.30.0, use ~> to allow for PATCH version flexibility
|
3
11
|
* Upgrade to rubocop 0.58.0, use ~> to allow for PATCH version flexibility
|
data/README.md
CHANGED
@@ -15,6 +15,11 @@ Just put this in your `Gemfile` it depends on the appropriate version of rubocop
|
|
15
15
|
gem 'rubocop-airbnb'
|
16
16
|
```
|
17
17
|
|
18
|
+
Note: If you want to run with Ruby 2.2 you will need to set your version to 2
|
19
|
+
```
|
20
|
+
gem 'rubocop-airbnb', '~> 2'
|
21
|
+
```
|
22
|
+
|
18
23
|
## Usage
|
19
24
|
|
20
25
|
You need to tell RuboCop to load the Airbnb extension. There are three
|
@@ -29,7 +34,7 @@ require:
|
|
29
34
|
```
|
30
35
|
|
31
36
|
Next add the following to `.rubocop.yml`
|
32
|
-
or add before `.rubocop_todo.yml` in your
|
37
|
+
or add before `.rubocop_todo.yml` in your existing `inherit_from`
|
33
38
|
|
34
39
|
```
|
35
40
|
inherit_from:
|
data/config/rubocop-airbnb.yml
CHANGED
@@ -2,11 +2,6 @@
|
|
2
2
|
# They are custom built for use inside Airbnb and address issues that we have experienced in
|
3
3
|
# testing and production.
|
4
4
|
|
5
|
-
Airbnb/ClassName:
|
6
|
-
Description: Use :class_name => "Model" instead of :class_name => Model.name
|
7
|
-
to avoid a long cascade of autoloading.
|
8
|
-
Enabled: true
|
9
|
-
|
10
5
|
Airbnb/ClassOrModuleDeclaredInWrongFile:
|
11
6
|
Description: Declare a class or module in the file that matches its namespace and name.
|
12
7
|
Enabled: true
|
data/config/rubocop-gemspec.yml
CHANGED
data/config/rubocop-layout.yml
CHANGED
@@ -227,7 +227,7 @@ Layout/FirstMethodParameterLineBreak:
|
|
227
227
|
Enabled: false
|
228
228
|
|
229
229
|
# Supports --auto-correct
|
230
|
-
Layout/
|
230
|
+
Layout/IndentFirstArgument:
|
231
231
|
Description: Checks the indentation of the first parameter in a method call.
|
232
232
|
Enabled: true
|
233
233
|
EnforcedStyle: consistent
|
@@ -238,7 +238,7 @@ Layout/FirstParameterIndentation:
|
|
238
238
|
- special_for_inner_method_call_in_parentheses
|
239
239
|
|
240
240
|
# Supports --auto-correct
|
241
|
-
Layout/
|
241
|
+
Layout/IndentFirstArrayElement:
|
242
242
|
Description: Checks the indentation of the first element in an array literal.
|
243
243
|
Enabled: true
|
244
244
|
EnforcedStyle: consistent
|
@@ -248,10 +248,9 @@ Layout/IndentAssignment:
|
|
248
248
|
Description: Checks the indentation of the first line of the right-hand-side of a
|
249
249
|
multi-line assignment.
|
250
250
|
Enabled: true
|
251
|
-
IndentationWidth:
|
252
251
|
|
253
252
|
# Supports --auto-correct
|
254
|
-
Layout/
|
253
|
+
Layout/IndentFirstHashElement:
|
255
254
|
Description: Checks the indentation of the first key in a hash literal.
|
256
255
|
Enabled: true
|
257
256
|
EnforcedStyle: consistent
|
@@ -344,7 +343,6 @@ Layout/MultilineMethodCallIndentation:
|
|
344
343
|
SupportedStyles:
|
345
344
|
- aligned
|
346
345
|
- indented
|
347
|
-
IndentationWidth:
|
348
346
|
|
349
347
|
Layout/MultilineMethodDefinitionBraceLayout:
|
350
348
|
Description: >-
|
@@ -474,11 +472,6 @@ Layout/SpaceInsideBlockBraces:
|
|
474
472
|
EnforcedStyleForEmptyBraces: no_space
|
475
473
|
SpaceBeforeBlockParameters: true
|
476
474
|
|
477
|
-
Layout/SpaceInsideParens:
|
478
|
-
Description: 'No spaces after ( or before ).'
|
479
|
-
StyleGuide: '#spaces-braces'
|
480
|
-
Enabled: true
|
481
|
-
|
482
475
|
Layout/SpaceInsideArrayLiteralBrackets:
|
483
476
|
EnforcedStyle: no_space
|
484
477
|
SupportedStyles:
|
@@ -558,3 +551,6 @@ Layout/TrailingWhitespace:
|
|
558
551
|
Description: Avoid trailing whitespace.
|
559
552
|
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-trailing-whitespace
|
560
553
|
Enabled: true
|
554
|
+
|
555
|
+
Layout/IndentFirstParameter:
|
556
|
+
Enabled: true
|
data/config/rubocop-lint.yml
CHANGED
@@ -80,6 +80,11 @@ Lint/EnsureReturn:
|
|
80
80
|
Lint/ErbNewArguments:
|
81
81
|
Enabled: false
|
82
82
|
|
83
|
+
Lint/FlipFlop:
|
84
|
+
Description: Checks for flip flops
|
85
|
+
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-flip-flops
|
86
|
+
Enabled: false
|
87
|
+
|
83
88
|
Lint/FloatOutOfRange:
|
84
89
|
Description: Catches floating-point literals too large or small for Ruby to represent.
|
85
90
|
Enabled: false
|
@@ -237,20 +242,20 @@ Lint/UnderscorePrefixedVariableName:
|
|
237
242
|
Lint/UnifiedInteger:
|
238
243
|
Enabled: false
|
239
244
|
|
240
|
-
Lint/
|
245
|
+
Lint/RedundantCopDisableDirective:
|
241
246
|
Description: >-
|
242
247
|
Checks for rubocop:disable comments that can be removed.
|
243
248
|
Note: this cop is not disabled when disabling all cops. It must be explicitly disabled.
|
244
249
|
Enabled: true
|
245
250
|
|
246
|
-
Lint/
|
251
|
+
Lint/RedundantCopEnableDirective:
|
247
252
|
Description: Checks for rubocop:enable comments that can be removed.
|
248
253
|
Enabled: true
|
249
254
|
|
250
|
-
Lint/
|
255
|
+
Lint/RedundantRequireStatement:
|
251
256
|
Enabled: false
|
252
257
|
|
253
|
-
Lint/
|
258
|
+
Lint/RedundantSplatExpansion:
|
254
259
|
Enabled: false
|
255
260
|
|
256
261
|
Lint/UnreachableCode:
|
data/config/rubocop-naming.yml
CHANGED
@@ -56,11 +56,6 @@ Performance/FlatMap:
|
|
56
56
|
Performance/InefficientHashSearch:
|
57
57
|
Enabled: false
|
58
58
|
|
59
|
-
# Supports --auto-correct
|
60
|
-
Performance/LstripRstrip:
|
61
|
-
Description: Use `strip` instead of `lstrip.rstrip`.
|
62
|
-
Enabled: false
|
63
|
-
|
64
59
|
# Supports --auto-correct
|
65
60
|
Performance/RangeInclude:
|
66
61
|
Description: Use `Range#cover?` instead of `Range#include?`.
|
@@ -85,11 +80,6 @@ Performance/RedundantMerge:
|
|
85
80
|
Reference: https://github.com/JuanitoFatas/fast-ruby#hashmerge-vs-hash-code
|
86
81
|
Enabled: false
|
87
82
|
|
88
|
-
# Supports --auto-correct
|
89
|
-
Performance/RedundantSortBy:
|
90
|
-
Description: Use `sort` instead of `sort_by { |x| x }`.
|
91
|
-
Enabled: false
|
92
|
-
|
93
83
|
Performance/RegexpMatch:
|
94
84
|
Enabled: false
|
95
85
|
|
@@ -99,12 +89,6 @@ Performance/ReverseEach:
|
|
99
89
|
Reference: https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code
|
100
90
|
Enabled: false
|
101
91
|
|
102
|
-
# Supports --auto-correct
|
103
|
-
Performance/Sample:
|
104
|
-
Description: Use `sample` instead of `shuffle.first`, `shuffle.last`, and `shuffle[Fixnum]`.
|
105
|
-
Reference: https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code
|
106
|
-
Enabled: false
|
107
|
-
|
108
92
|
# Supports --auto-correct
|
109
93
|
Performance/Size:
|
110
94
|
Description: Use `size` instead of `count` for counting the number of elements in
|
@@ -133,9 +117,6 @@ Performance/TimesMap:
|
|
133
117
|
Performance/UnfreezeString:
|
134
118
|
Enabled: false
|
135
119
|
|
136
|
-
Performance/UnneededSort:
|
137
|
-
Enabled: false
|
138
|
-
|
139
120
|
Performance/UriDefaultParser:
|
140
121
|
Enabled: false
|
141
122
|
|
data/config/rubocop-rails.yml
CHANGED
data/config/rubocop-style.yml
CHANGED
@@ -328,11 +328,6 @@ Style/ExpandPathArguments:
|
|
328
328
|
Description: "Use `expand_path(__dir__)` instead of `expand_path('..', __FILE__)`."
|
329
329
|
Enabled: false
|
330
330
|
|
331
|
-
Style/FlipFlop:
|
332
|
-
Description: Checks for flip flops
|
333
|
-
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-flip-flops
|
334
|
-
Enabled: false
|
335
|
-
|
336
331
|
Style/For:
|
337
332
|
Description: Checks use of for or each in multiline loops.
|
338
333
|
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-for-loops
|
@@ -360,10 +355,10 @@ Style/FrozenStringLiteralComment:
|
|
360
355
|
Description: Add the frozen_string_literal comment to the top of files to help transition
|
361
356
|
from Ruby 2.3.0 to Ruby 3.0.
|
362
357
|
Enabled: false
|
363
|
-
EnforcedStyle: when_needed
|
364
358
|
SupportedStyles:
|
365
|
-
- when_needed
|
366
359
|
- always
|
360
|
+
- never
|
361
|
+
EnforcedStyle: always
|
367
362
|
|
368
363
|
Style/GlobalVars:
|
369
364
|
Description: Do not introduce global variables.
|
@@ -735,6 +730,11 @@ Style/RedundantSelf:
|
|
735
730
|
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-self-unless-required
|
736
731
|
Enabled: true
|
737
732
|
|
733
|
+
# Supports --auto-correct
|
734
|
+
Style/RedundantSortBy:
|
735
|
+
Description: Use `sort` instead of `sort_by { |x| x }`.
|
736
|
+
Enabled: false
|
737
|
+
|
738
738
|
# Supports --auto-correct
|
739
739
|
Style/RegexpLiteral:
|
740
740
|
Description: Use / or %r around regular expressions.
|
@@ -763,6 +763,12 @@ Style/ReturnNil:
|
|
763
763
|
Style/SafeNavigation:
|
764
764
|
Enabled: false
|
765
765
|
|
766
|
+
# Supports --auto-correct
|
767
|
+
Style/Sample:
|
768
|
+
Description: Use `sample` instead of `shuffle.first`, `shuffle.last`, and `shuffle[Fixnum]`.
|
769
|
+
Reference: https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code
|
770
|
+
Enabled: false
|
771
|
+
|
766
772
|
# Supports --auto-correct
|
767
773
|
Style/SelfAssignment:
|
768
774
|
Description: Checks for places where self-assignment shorthand should have been used.
|
@@ -856,6 +862,11 @@ Style/StringMethods:
|
|
856
862
|
PreferredMethods:
|
857
863
|
intern: to_sym
|
858
864
|
|
865
|
+
# Supports --auto-correct
|
866
|
+
Style/Strip:
|
867
|
+
Description: Use `strip` instead of `lstrip.rstrip`.
|
868
|
+
Enabled: false
|
869
|
+
|
859
870
|
Style/StructInheritance:
|
860
871
|
Description: Checks for inheritance from Struct.new.
|
861
872
|
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#no-extend-struct-new
|
@@ -922,24 +933,27 @@ Style/UnlessElse:
|
|
922
933
|
Enabled: true
|
923
934
|
|
924
935
|
# Supports --auto-correct
|
925
|
-
Style/
|
936
|
+
Style/RedundantCapitalW:
|
926
937
|
Description: Checks for %W when interpolation is not needed.
|
927
938
|
Enabled: false
|
928
939
|
|
929
|
-
Style/
|
940
|
+
Style/RedundantCondition:
|
930
941
|
Enabled: false
|
931
942
|
|
932
943
|
# Supports --auto-correct
|
933
|
-
Style/
|
944
|
+
Style/RedundantInterpolation:
|
934
945
|
Description: Checks for strings that are just an interpolated expression.
|
935
946
|
Enabled: false
|
936
947
|
|
937
948
|
# Supports --auto-correct
|
938
|
-
Style/
|
949
|
+
Style/RedundantPercentQ:
|
939
950
|
Description: Checks for %q/%Q when single quotes or double quotes would do.
|
940
951
|
StyleGuide: https://github.com/rubocop-hq/ruby-style-guide#percent-q
|
941
952
|
Enabled: false
|
942
953
|
|
954
|
+
Style/RedundantSort:
|
955
|
+
Enabled: false
|
956
|
+
|
943
957
|
Style/UnpackFirst:
|
944
958
|
Enabled: false
|
945
959
|
|
data/rubocop-airbnb.gemspec
CHANGED
@@ -25,7 +25,9 @@ Gem::Specification.new do |spec|
|
|
25
25
|
'Gemfile',
|
26
26
|
]
|
27
27
|
|
28
|
-
spec.add_dependency('rubocop', '~> 0.
|
28
|
+
spec.add_dependency('rubocop', '~> 0.76.0')
|
29
|
+
spec.add_dependency('rubocop-performance', '~> 1.5.0')
|
30
|
+
spec.add_dependency('rubocop-rails', '~> 2.3.2')
|
29
31
|
spec.add_dependency('rubocop-rspec', '~> 1.30.0')
|
30
32
|
spec.add_development_dependency('rspec', '~> 3.5')
|
31
33
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-airbnb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Airbnb Engineering
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -16,14 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.76.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.76.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rubocop-performance
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.5.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.5.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rubocop-rails
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.3.2
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.3.2
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rubocop-rspec
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,7 +113,6 @@ files:
|
|
85
113
|
- lib/rubocop/airbnb/inject.rb
|
86
114
|
- lib/rubocop/airbnb/rails_autoloading.rb
|
87
115
|
- lib/rubocop/airbnb/version.rb
|
88
|
-
- lib/rubocop/cop/airbnb/class_name.rb
|
89
116
|
- lib/rubocop/cop/airbnb/class_or_module_declared_in_wrong_file.rb
|
90
117
|
- lib/rubocop/cop/airbnb/const_assigned_in_wrong_file.rb
|
91
118
|
- lib/rubocop/cop/airbnb/continuation_slash.rb
|
@@ -105,7 +132,6 @@ files:
|
|
105
132
|
- lib/rubocop/cop/airbnb/spec_constant_assignment.rb
|
106
133
|
- lib/rubocop/cop/airbnb/unsafe_yaml_marshal.rb
|
107
134
|
- rubocop-airbnb.gemspec
|
108
|
-
- spec/rubocop/cop/airbnb/class_name_spec.rb
|
109
135
|
- spec/rubocop/cop/airbnb/class_or_module_declared_in_wrong_file_spec.rb
|
110
136
|
- spec/rubocop/cop/airbnb/const_assigned_in_wrong_file_spec.rb
|
111
137
|
- spec/rubocop/cop/airbnb/continuation_slash_spec.rb
|
@@ -145,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
171
|
version: '0'
|
146
172
|
requirements: []
|
147
173
|
rubyforge_project:
|
148
|
-
rubygems_version: 2.
|
174
|
+
rubygems_version: 2.5.1
|
149
175
|
signing_key:
|
150
176
|
specification_version: 4
|
151
177
|
summary: Custom code style checking for Airbnb.
|
@@ -1,47 +0,0 @@
|
|
1
|
-
module RuboCop
|
2
|
-
module Cop
|
3
|
-
module Airbnb
|
4
|
-
# Cop to prevent cross-model references, which result in a cascade of autoloads. E.g.,
|
5
|
-
# belongs_to :user, :class_name => User.name
|
6
|
-
class ClassName < Cop
|
7
|
-
MSG = 'Use "Model" instead of Model.name at class scope to avoid cross-model references. ' \
|
8
|
-
'They cause a long cascade of autoloading, slowing down app startup and slowing down ' \
|
9
|
-
'reloading of zeus after changing a model.'.freeze
|
10
|
-
|
11
|
-
# Is this a has_many, has_one, or belongs_to with a :class_name arg? Make sure the
|
12
|
-
# class name is a hardcoded string. If not, add an offense and return true.
|
13
|
-
def on_send(node)
|
14
|
-
association_statement =
|
15
|
-
node.command?(:has_many) ||
|
16
|
-
node.command?(:has_one) ||
|
17
|
-
node.command?(:belongs_to)
|
18
|
-
|
19
|
-
return unless association_statement
|
20
|
-
|
21
|
-
class_pair = class_name_node(node)
|
22
|
-
|
23
|
-
if class_pair && !string_class_name?(class_pair)
|
24
|
-
add_offense(class_pair)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
private
|
29
|
-
|
30
|
-
# Return the descendant node that is a hash pair (:key => value) whose key
|
31
|
-
# is :class_name.
|
32
|
-
def class_name_node(node)
|
33
|
-
node.descendants.detect do |e|
|
34
|
-
e.is_a?(Parser::AST::Node) &&
|
35
|
-
e.pair_type? &&
|
36
|
-
e.children[0].children[0] == :class_name
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Given a hash pair :class_name => value, is the value a hardcoded string?
|
41
|
-
def string_class_name?(class_pair)
|
42
|
-
class_pair.children[1].str_type?
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
describe RuboCop::Cop::Airbnb::ClassName do
|
2
|
-
subject(:cop) { described_class.new }
|
3
|
-
|
4
|
-
describe "belongs_to" do
|
5
|
-
it 'rejects with Model.name' do
|
6
|
-
source = [
|
7
|
-
'class Coupon',
|
8
|
-
' belongs_to :user, :class_name => User.name',
|
9
|
-
'end',
|
10
|
-
].join("\n")
|
11
|
-
inspect_source(source)
|
12
|
-
|
13
|
-
expect(cop.offenses.size).to eq(1)
|
14
|
-
expect(cop.offenses.map(&:line).sort).to eq([2])
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'passes with "Model"' do
|
18
|
-
source = [
|
19
|
-
'class Coupon',
|
20
|
-
' belongs_to :user, :class_name => "User"',
|
21
|
-
'end',
|
22
|
-
].join("\n")
|
23
|
-
inspect_source(source)
|
24
|
-
|
25
|
-
expect(cop.offenses).to be_empty
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "has_many" do
|
30
|
-
it 'rejects with Model.name' do
|
31
|
-
source = [
|
32
|
-
'class Coupon',
|
33
|
-
' has_many :reservations, :class_name => Reservation2.name',
|
34
|
-
'end',
|
35
|
-
].join("\n")
|
36
|
-
inspect_source(source)
|
37
|
-
|
38
|
-
expect(cop.offenses.size).to eq(1)
|
39
|
-
expect(cop.offenses.map(&:line)).to eq([2])
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'passes with "Model"' do
|
43
|
-
source = [
|
44
|
-
'class Coupon',
|
45
|
-
' has_many :reservations, :class_name => "Reservation2"',
|
46
|
-
'end',
|
47
|
-
].join("\n")
|
48
|
-
inspect_source(source)
|
49
|
-
|
50
|
-
expect(cop.offenses).to be_empty
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "has_one" do
|
55
|
-
it 'rejects with Model.name' do
|
56
|
-
source = [
|
57
|
-
'class Coupon',
|
58
|
-
' has_one :loss, :class_name => Payments::Loss.name',
|
59
|
-
'end',
|
60
|
-
].join("\n")
|
61
|
-
inspect_source(source)
|
62
|
-
|
63
|
-
expect(cop.offenses.size).to eq(1)
|
64
|
-
expect(cop.offenses.map(&:line)).to eq([2])
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'passes with "Model"' do
|
68
|
-
source = [
|
69
|
-
'class Coupon',
|
70
|
-
' has_one :loss, :class_name => "Payments::Loss"',
|
71
|
-
'end',
|
72
|
-
].join("\n")
|
73
|
-
inspect_source(source)
|
74
|
-
|
75
|
-
expect(cop.offenses).to be_empty
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|