radius-spec 0.9.0 → 0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b6b5e94783c4ccbdf8bdf80de184fc19cd52ac9ee9f2a7f92329b261bdb00f59
4
- data.tar.gz: e492ea78f99e146011d2279e74fc1a3b1091aac13f311ef81324df43088ce440
3
+ metadata.gz: e8cf443a1c6510d208f4c05e3411461e850d11243ddfb8c72403cd6ad5cf42bb
4
+ data.tar.gz: b3eb1c7facabda9825bda8fd5d112e61bb9f356dabb0924846e103dda307633b
5
5
  SHA512:
6
- metadata.gz: 83005750c2029b0a2765e176a8d819ed7984376c13ac17b881b442d055956ffd28548c32af56bb7298b1cc60d976c0c3cb25d10bbc2aed5bec0f4b16c72e8324
7
- data.tar.gz: 95d8183b73cfa36c5f3e01680bf6d2212016e2355d0a14ed95b7d38800b4d2e44ce9d08dbcdd0336bf6beb20731bfb3a834258a13b6ad357443918c4ec505ae8
6
+ metadata.gz: 6c9172e6e540bc8826a5ba39084c7a26fbccace68c54445dc9ed67c07228ed83044be16547fd1ec4524fbe649cf000f384a0f430928a79c903a9ba2389ea3f47
7
+ data.tar.gz: 7a1903a1749717032feeea5f02c171e48173ea16a5bbc1f6ec5a3e487462aa47be3608906954d10f37d4526768e614c4ea5a023cf1b75fa9ca76e27e902d961d
data/CHANGELOG.md CHANGED
@@ -1,3 +1,47 @@
1
+ ## 0.10.0 (October 18, 2021)
2
+
3
+ [Full Changelog](https://github.com/RadiusNetworks/radius-spec/compare/v0.9.0...v0.10.0)
4
+
5
+ ### Enhancements
6
+
7
+ - Upgrade to Rubocop Rails 2.8.x (Aaron Hill, Aaron Kromer, Ben Reynolds, James Nebeker, JC Avena, Sam Kim, Alex
8
+ Stone #30, #32)
9
+ - Adjust common Rubocop Rails configuration (Aaron Hill, Aaron Kromer, Ben Reynolds, James Nebeker, JC Avena,
10
+ Sam Kim, Alex Stone #30, #32)
11
+ - Enable `Rails/AttributeDefaultBlockValue` by default
12
+ - Enable `Rails/ArelStar` by default
13
+ - Enable `Rails/DefaultScope` by default
14
+ - Enable `Rails/FindById` by default
15
+ - Enable `Rails/PluckId` by default
16
+ - Enable `Rails/WhereEquals` by default
17
+ - Use the more aggressive `aggressive` check for `Rails/PluckInWhere`
18
+ - Use the more aggressive `aggressive` check for `Rails/ShortI18n`
19
+ - Switch to new `AllowedMethods` attribute name for `Rails/SkipsModelValidations`
20
+ - Disable `Rails/SquishedSQLHeredocs` by default
21
+ - Adjust common Rubocop configuration (Aaron Hill, Aaron Kromer, JC Avena, Sam
22
+ Kim #32, #34)
23
+ - Enable `Style/ClassMethodsDefinitions` by default
24
+ - Enable `Style/CombinableLoops` by default
25
+ - Enable `Style/KeywordParametersOrder` by default
26
+ - Enable `Style/RedundantSelfAssignment` by default
27
+ - Enable `Style/SoleNestedConditional` by default
28
+ - Enable `Lint/DuplicateRequire` by default
29
+ - Enable `Lint/EmptyFile` by default
30
+ - Enable `Lint/TrailingCommaInAttributeDeclaration` by default
31
+ - Enable `Lint/UselessMethodDefinition` by default
32
+ - Exclude the following testing methods from `Metrics/BlockLength`
33
+ - 'describe'
34
+ - 'shared_context'
35
+ - 'shared_examples'
36
+ - 'RSpec.describe'
37
+ - 'RSpec.shared_context'
38
+ - 'RSpec.shared_examples'
39
+
40
+ ### Bug Fixes
41
+
42
+ None
43
+
44
+
1
45
  ## 0.9.0 (September 30, 2021)
2
46
 
3
47
  [Full Changelog](https://github.com/RadiusNetworks/radius-spec/compare/v0.8.0...v0.9.0)
data/bin/bundle ADDED
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'bundle' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "rubygems"
12
+
13
+ m = Module.new do
14
+ module_function
15
+
16
+ def invoked_as_script?
17
+ File.expand_path($0) == File.expand_path(__FILE__)
18
+ end
19
+
20
+ def env_var_version
21
+ ENV["BUNDLER_VERSION"]
22
+ end
23
+
24
+ def cli_arg_version
25
+ return unless invoked_as_script? # don't want to hijack other binstubs
26
+ return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
27
+ bundler_version = nil
28
+ update_index = nil
29
+ ARGV.each_with_index do |a, i|
30
+ if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
31
+ bundler_version = a
32
+ end
33
+ next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
34
+ bundler_version = $1
35
+ update_index = i
36
+ end
37
+ bundler_version
38
+ end
39
+
40
+ def gemfile
41
+ gemfile = ENV["BUNDLE_GEMFILE"]
42
+ return gemfile if gemfile && !gemfile.empty?
43
+
44
+ File.expand_path("../../Gemfile", __FILE__)
45
+ end
46
+
47
+ def lockfile
48
+ lockfile =
49
+ case File.basename(gemfile)
50
+ when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
51
+ else "#{gemfile}.lock"
52
+ end
53
+ File.expand_path(lockfile)
54
+ end
55
+
56
+ def lockfile_version
57
+ return unless File.file?(lockfile)
58
+ lockfile_contents = File.read(lockfile)
59
+ return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
60
+ Regexp.last_match(1)
61
+ end
62
+
63
+ def bundler_version
64
+ @bundler_version ||=
65
+ env_var_version || cli_arg_version ||
66
+ lockfile_version
67
+ end
68
+
69
+ def bundler_requirement
70
+ return "#{Gem::Requirement.default}.a" unless bundler_version
71
+
72
+ bundler_gem_version = Gem::Version.new(bundler_version)
73
+
74
+ requirement = bundler_gem_version.approximate_recommendation
75
+
76
+ return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")
77
+
78
+ requirement += ".a" if bundler_gem_version.prerelease?
79
+
80
+ requirement
81
+ end
82
+
83
+ def load_bundler!
84
+ ENV["BUNDLE_GEMFILE"] ||= gemfile
85
+
86
+ activate_bundler
87
+ end
88
+
89
+ def activate_bundler
90
+ gem_error = activation_error_handling do
91
+ gem "bundler", bundler_requirement
92
+ end
93
+ return if gem_error.nil?
94
+ require_error = activation_error_handling do
95
+ require "bundler/version"
96
+ end
97
+ return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))
98
+ warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
99
+ exit 42
100
+ end
101
+
102
+ def activation_error_handling
103
+ yield
104
+ nil
105
+ rescue StandardError, LoadError => e
106
+ e
107
+ end
108
+ end
109
+
110
+ m.load_bundler!
111
+
112
+ if m.invoked_as_script?
113
+ load Gem.bin_path("bundler", "bundle")
114
+ end
data/common_rubocop.yml CHANGED
@@ -4,7 +4,7 @@ AllCops:
4
4
  # version by version without having to worry about adding an entry for each
5
5
  # new "enabled by default" check. If we want to jump multiple versions and
6
6
  # wish to be notified of all the enw check, then we'll need to change
7
- # `NewCops` to `pending.
7
+ # `NewCops` to `pending`.
8
8
  NewCops: enable
9
9
  Exclude:
10
10
  # Exclude generated binstubs
@@ -217,9 +217,15 @@ Metrics/BlockLength:
217
217
  - 'spec/support/model_factories.rb'
218
218
  ExcludedMethods:
219
219
  - 'chdir'
220
+ - 'describe'
220
221
  - 'refine'
222
+ - 'shared_context'
223
+ - 'shared_examples'
221
224
  - 'Capybara.register_driver'
222
225
  - 'RSpec.configure'
226
+ - 'RSpec.describe'
227
+ - 'RSpec.shared_context'
228
+ - 'RSpec.shared_examples'
223
229
  - 'VCR.configure'
224
230
 
225
231
  # We want length related code metrics to count Hashs, Arrays, and
@@ -395,6 +401,15 @@ Style/BlockDelimiters:
395
401
  - proc
396
402
  - it
397
403
 
404
+ # As a team we prefer the more explicit `def self.method_name` style. We find
405
+ # the explicitness easier to read and grep for on the CLI.
406
+ #
407
+ # Configuration parameters: EnforcedStyle.
408
+ # SupportedStyles: def_self, self_class
409
+ Style/ClassMethodsDefinitions:
410
+ Enabled: true
411
+ EnforcedStyle: def_self
412
+
398
413
  # Prefer `Time` over `DateTime`.
399
414
  #
400
415
  # While these are not necessarily interchangeable we prefer `Time`. According
@@ -106,6 +106,11 @@ Rails/ApplicationRecord:
106
106
  Rails/CreateTableWithTimestamps:
107
107
  Enabled: false
108
108
 
109
+ # This cop looks for uses of default_scope because named scopes are preferred:
110
+ # https://rails.rubystyle.guide/#named-scopes
111
+ Rails/DefaultScope:
112
+ Enabled: true
113
+
109
114
  # Usage of `find_by` is more expressive of intent than `where.first`. We should
110
115
  # check all app code, not just the models to improve intent expression.
111
116
  #
@@ -119,6 +124,11 @@ Rails/FindBy:
119
124
  - 'app/**/*.rb'
120
125
  - 'lib/**/*.rb'
121
126
 
127
+ # This cop enforces that ActiveRecord#find is used instead of where.take!, find_by!, and find_by_id!
128
+ # to retrieve a single record by primary key when you expect it to be found.
129
+ Rails/FindById:
130
+ Enabled: true
131
+
122
132
  # Usage of `each` for large datasets can be a performance issue; specially a
123
133
  # drain on system memory. When possible it's better to use `find_each` so that
124
134
  # chunks of data are evaluated at a time.
@@ -174,6 +184,21 @@ Rails/IndexBy:
174
184
  Rails/IndexWith:
175
185
  Enabled: false
176
186
 
187
+ # This cop enforces the use of ids over pluck(:id) and pluck(primary_key).
188
+ # https://rails.rubystyle.guide/#ids
189
+ Rails/PluckId:
190
+ Enabled: true
191
+
192
+ # This cop identifies places where pluck is used in where query methods and can be replaced with
193
+ # select. Since pluck is an eager method and hits the database immediately, using select helps to
194
+ # avoid additional database queries.
195
+ #
196
+ # When the EnforcedStyle is aggressive then all calls to pluck in the where is used as offenses.
197
+ # This may lead to false positives as the cop cannot replace to select between calls to pluck on an
198
+ # ActiveRecord::Relation instance vs a call to pluck on an Array instance.
199
+ Rails/PluckInWhere:
200
+ EnforcedStyle: aggressive
201
+
177
202
  # The ActiveSupport monkey patches for `present?` are nearly all defined as:
178
203
  #
179
204
  # !blank?
@@ -234,6 +259,13 @@ Rails/ReadWriteAttribute:
234
259
  Rails/SaveBang:
235
260
  Enabled: true
236
261
 
262
+ # This cop enforces that short forms of I18n methods are used: t instead of translate and l instead
263
+ # of localize. We want this because it's a pain to use the full method names over and over in view
264
+ # code. When the EnforcedStyle is aggressive then all translate and localize calls without a
265
+ # receiver are added as offenses.
266
+ Rails/ShortI18n:
267
+ EnforcedStyle: aggressive
268
+
237
269
  # According to the Rails docs while the following methods skip validations they
238
270
  # only update the specified (single) attribute reducing risks. We'd rather not
239
271
  # warn for those cases:
@@ -251,14 +283,19 @@ Rails/SaveBang:
251
283
  # - http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html
252
284
  # - http://api.rubyonrails.org/classes/ActiveRecord/Relation.html
253
285
  #
254
- # Configuration parameters: Blacklist, Whitelist.
255
- # Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
286
+ # Configuration parameters: ForbiddenMethods, AllowedMethods.
287
+ # ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
256
288
  Rails/SkipsModelValidations:
257
- Whitelist:
289
+ AllowedMethods:
258
290
  - 'decrement!'
259
291
  - 'increment!'
260
292
  - 'touch'
261
293
 
294
+ # We don't want to be forced to use squish in SQL or JSON heredocs (especially
295
+ # in specs).
296
+ Rails/SquishedSQLHeredocs:
297
+ Enabled: false
298
+
262
299
  # Rails uses compact style by default so we're disabling this with a :hammer:
263
300
  # for things likely to be generated by Rails (i.e. most things in app).
264
301
  #
@@ -110,6 +110,14 @@ module Radius
110
110
  class TemplateNotFound < KeyError; end
111
111
 
112
112
  class << self
113
+ # rubocop:disable Style/ClassMethodsDefinitions
114
+ # Style Note: We are using this class method style because we need to
115
+ # call `alias_method` within this module's singleton class context.
116
+ # Ruby did not introduce access to `singleton_class` until 2.7. Once we
117
+ # drop support for Ruby < 2.7 we can switch styles and use:
118
+ #
119
+ # singleton_class.alias_method :factory, :define_factory
120
+
113
121
  # Suggested method for defining multiple factory templates at once.
114
122
  #
115
123
  # Most projects end up having many domain models which need factories
@@ -283,6 +291,7 @@ module Radius
283
291
  def templates
284
292
  @templates ||= {}
285
293
  end
294
+ # rubocop:enable Style/ClassMethodsDefinitions
286
295
  end
287
296
 
288
297
  module_function
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Radius
4
4
  module Spec
5
- VERSION = "0.9.0"
5
+ VERSION = "0.10.0"
6
6
  end
7
7
  end
data/radius-spec.gemspec CHANGED
@@ -31,8 +31,8 @@ Gem::Specification.new do |spec|
31
31
  spec.required_ruby_version = ">= 2.5" # rubocop:disable Gemspec/RequiredRubyVersion
32
32
 
33
33
  spec.add_runtime_dependency "rspec", "~> 3.7"
34
- spec.add_runtime_dependency "rubocop", "~> 0.89.0"
35
- spec.add_runtime_dependency "rubocop-rails", "~> 2.6.0"
34
+ spec.add_runtime_dependency "rubocop", "~> 0.90.0"
35
+ spec.add_runtime_dependency "rubocop-rails", "~> 2.9.1"
36
36
 
37
37
  spec.add_development_dependency "bundler", ">= 2.2.10"
38
38
  spec.add_development_dependency "rake", ">= 12.0", "< 14.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: radius-spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Radius Networks
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2021-09-30 00:00:00.000000000 Z
12
+ date: 2021-10-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -31,28 +31,28 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.89.0
34
+ version: 0.90.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.89.0
41
+ version: 0.90.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rubocop-rails
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 2.6.0
48
+ version: 2.9.1
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 2.6.0
55
+ version: 2.9.1
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +126,7 @@ files:
126
126
  - benchmarks/style_hash_like_case.rb
127
127
  - benchmarks/unfreeze_string.rb
128
128
  - benchmarks/unpack_first.rb
129
+ - bin/bundle
129
130
  - bin/ci
130
131
  - bin/console
131
132
  - bin/pry
@@ -150,8 +151,8 @@ licenses:
150
151
  - Apache-2.0
151
152
  metadata:
152
153
  bug_tracker_uri: https://github.com/RadiusNetworks/radius-spec/issues
153
- changelog_uri: https://github.com/RadiusNetworks/radius-spec/blob/v0.9.0/CHANGELOG.md
154
- source_code_uri: https://github.com/RadiusNetworks/radius-spec/tree/v0.9.0
154
+ changelog_uri: https://github.com/RadiusNetworks/radius-spec/blob/v0.10.0/CHANGELOG.md
155
+ source_code_uri: https://github.com/RadiusNetworks/radius-spec/tree/v0.10.0
155
156
  post_install_message:
156
157
  rdoc_options: []
157
158
  require_paths:
@@ -167,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubygems_version: 3.1.2
171
+ rubygems_version: 3.1.6
171
172
  signing_key:
172
173
  specification_version: 4
173
174
  summary: Radius Networks RSpec setup and plug-ins