test_track_rails_client 7.1.2 → 8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d4d2661b24f3074456010fedcd9db386a21203d01012a8a7d994305b85e81830
4
- data.tar.gz: f5b831de28f2b7543be6e53649d212670edc2561970e05cfd6e7758e08db348a
3
+ metadata.gz: af3ebf6b69530ee8c1d9e40532e955e09742b00cc0b64aeca8f8870900bc9370
4
+ data.tar.gz: 0fd103511d0c119a12828295eded55430d60c0c3c5b23f0005f72a858aacf5d9
5
5
  SHA512:
6
- metadata.gz: 7726be38a0eb5b6d81a555b9dd489d1e2d0a33faf30481f922d0faf1a7a79bd150f5e66ce541bc5eb9dcb51c17c0fa2da003a67b316ea3ec124955cf1b98240a
7
- data.tar.gz: ffceabaffbeb7966c1de27b47f3e820d1a4322fcd871371ba1c90e4fa3d6ea5d8679caae0082ee1a9580341265b96f897125d6c9c9b89f7880011926ee076e88
6
+ metadata.gz: 3abe63765a18e31c033b2b48971424607b876506c02a895db4dd03c7486c2dbab4ffe9cf61c5dce33f0d89fd575b2fb5a389c9588a1eaa3d8c277228257a5b82
7
+ data.tar.gz: 91df67b0b5d2347db5d903ed7934b05097dc9ac88e813d08f84cfd4d33c0647e3b973c8afa3b540234c7e88515ee6cb51039993431489ac8550a5072ee2f1480
@@ -17,7 +17,7 @@ module TestTrack
17
17
  def build_assignment(visitor_id, split_name, variant, context)
18
18
  assignment = Assignment.new(
19
19
  visitor: Visitor.new(id: visitor_id),
20
- split_name: split_name
20
+ split_name:
21
21
  )
22
22
  assignment.variant = variant
23
23
  assignment.context = context
@@ -28,7 +28,7 @@ module TestTrack
28
28
  tracking_result = maybe_track
29
29
  unless assignment.feature_gate?
30
30
  Remote::AssignmentEvent.create!(
31
- visitor_id: visitor_id,
31
+ visitor_id:,
32
32
  split_name: assignment.split_name,
33
33
  context: assignment.context,
34
34
  mixpanel_result: tracking_result
@@ -2,9 +2,9 @@ module TestTrack
2
2
  class IdentifierCreationJob < ApplicationJob
3
3
  def perform(identifier_type:, visitor_id:, value:)
4
4
  Remote::Identifier.create!(
5
- identifier_type: identifier_type,
6
- visitor_id: visitor_id,
7
- value: value
5
+ identifier_type:,
6
+ visitor_id:,
7
+ value:
8
8
  )
9
9
  end
10
10
  end
@@ -28,7 +28,7 @@ class TestTrack::Assignment
28
28
  def _variant
29
29
  return if visitor.offline?
30
30
 
31
- variant = TestTrack::VariantCalculator.new(visitor: visitor, split_name: split_name).variant
31
+ variant = TestTrack::VariantCalculator.new(visitor:, split_name:).variant
32
32
  variant&.to_s
33
33
  end
34
34
  end
@@ -45,13 +45,13 @@ class TestTrack::ConfigUpdater
45
45
  attr_reader :schema_file_path
46
46
 
47
47
  def create_split(name, weighting_registry)
48
- TestTrack::Remote::SplitConfig.new(name: name, weighting_registry: weighting_registry).tap do |split_config|
48
+ TestTrack::Remote::SplitConfig.new(name:, weighting_registry:).tap do |split_config|
49
49
  raise split_config.errors.full_messages.join("\n") unless split_config.save
50
50
  end
51
51
  end
52
52
 
53
53
  def create_identifier_type(name)
54
- TestTrack::Remote::IdentifierType.new(name: name).tap do |identifier_type|
54
+ TestTrack::Remote::IdentifierType.new(name:).tap do |identifier_type|
55
55
  raise identifier_type.errors.full_messages.join("\n") unless identifier_type.save
56
56
  end
57
57
  end
@@ -13,14 +13,14 @@ class TestTrack::Fake::SplitDetail
13
13
 
14
14
  def _details
15
15
  {
16
- name: name,
16
+ name:,
17
17
  hypothesis: "user will interact more with blue banner",
18
18
  location: "home screen",
19
19
  platform: "mobile",
20
20
  owner: "mobile team",
21
21
  assignment_criteria: "user has mobile app",
22
22
  description: "banner test to see if users will interact more",
23
- variant_details: variant_details
23
+ variant_details:
24
24
  }
25
25
  end
26
26
 
@@ -28,7 +28,7 @@ class TestTrack::Fake::Visitor
28
28
 
29
29
  def _assignments
30
30
  split_registry.split_names.map do |split_name|
31
- variant = TestTrack::VariantCalculator.new(visitor: self, split_name: split_name).variant
31
+ variant = TestTrack::VariantCalculator.new(visitor: self, split_name:).variant
32
32
  Assignment.new(split_name, variant, false, "the_context")
33
33
  end
34
34
  end
@@ -15,7 +15,7 @@ class TestTrack::NotifyAssignmentJob
15
15
  tracking_result = maybe_track
16
16
  unless assignment.feature_gate?
17
17
  TestTrack::Remote::AssignmentEvent.create!(
18
- visitor_id: visitor_id,
18
+ visitor_id:,
19
19
  split_name: assignment.split_name,
20
20
  context: assignment.context,
21
21
  mixpanel_result: tracking_result
@@ -4,6 +4,6 @@ class TestTrack::Remote::FakeServer
4
4
  def self.reset!(seed)
5
5
  raise('Cannot reset FakeServer if TestTrack is enabled.') if TestTrack.enabled?
6
6
 
7
- put('api/v1/reset', seed: seed)
7
+ put('api/v1/reset', seed:)
8
8
  end
9
9
  end
@@ -16,7 +16,7 @@ class TestTrack::Remote::SplitDetail
16
16
 
17
17
  def self.fake_instance_attributes(name)
18
18
  {
19
- name: name,
19
+ name:,
20
20
  hypothesis: "fake hypothesis",
21
21
  assignment_criteria: "fake criteria for everyone",
22
22
  description: "fake but still good description",
@@ -24,7 +24,7 @@ class TestTrack::UnsyncedAssignmentsNotifier
24
24
 
25
25
  def assignment_job_args(assignment)
26
26
  {
27
- visitor_id: visitor_id,
27
+ visitor_id:,
28
28
  context: assignment.context,
29
29
  split_name: assignment.split_name,
30
30
  variant: assignment.variant
@@ -24,7 +24,7 @@ class TestTrack::Visitor
24
24
 
25
25
  raise ArgumentError, "must provide block to `vary` for #{split_name}" unless block_given?
26
26
 
27
- v = TestTrack::VaryDsl.new(assignment: assignment_for(split_name), context: context, split_registry: split_registry)
27
+ v = TestTrack::VaryDsl.new(assignment: assignment_for(split_name), context:, split_registry:)
28
28
  yield v
29
29
  v.send :run
30
30
  end
@@ -36,9 +36,9 @@ class TestTrack::Visitor
36
36
  context = require_option!(opts, :context)
37
37
  raise "unknown opts: #{opts.keys.to_sentence}" if opts.present?
38
38
 
39
- ab_configuration = TestTrack::AbConfiguration.new split_name: split_name, true_variant: true_variant, split_registry: split_registry
39
+ ab_configuration = TestTrack::AbConfiguration.new(split_name:, true_variant:, split_registry:)
40
40
 
41
- vary(split_name, context: context) do |v|
41
+ vary(split_name, context:) do |v|
42
42
  v.when ab_configuration.variants[:true] do # rubocop:disable Lint/BooleanSymbol
43
43
  true
44
44
  end
@@ -148,7 +148,7 @@ class TestTrack::Visitor
148
148
  end
149
149
 
150
150
  def generate_assignment_for(split_name)
151
- assignment_registry[split_name] = TestTrack::Assignment.new(visitor: self, split_name: split_name)
151
+ assignment_registry[split_name] = TestTrack::Assignment.new(visitor: self, split_name:)
152
152
  end
153
153
 
154
154
  def maybe_prefix(split_name)
@@ -70,8 +70,8 @@ class TestTrack::WebSession
70
70
 
71
71
  def visitors
72
72
  @visitors ||= TestTrack::WebSessionVisitorRepository.new(
73
- current_identity: current_identity,
74
- unauthenticated_visitor_id: unauthenticated_visitor_id
73
+ current_identity:,
74
+ unauthenticated_visitor_id:
75
75
  )
76
76
  end
77
77
 
@@ -81,7 +81,7 @@ class TestTrack::WebSession
81
81
 
82
82
  def set_cookie(name, value)
83
83
  cookies[name] = {
84
- value: value,
84
+ value:,
85
85
  domain: cookie_domain,
86
86
  secure: request.ssl?,
87
87
  httponly: false,
data/lib/test_track.rb CHANGED
@@ -142,6 +142,6 @@ module TestTrack
142
142
  end
143
143
 
144
144
  def app_ab(split_name, context:)
145
- app.test_track_ab(split_name, context: context)
145
+ app.test_track_ab(split_name, context:)
146
146
  end
147
147
  end
@@ -18,10 +18,10 @@ module TestTrackRailsClient::AssignmentHelper
18
18
  weights: { variant.to_s => 100 },
19
19
  feature_gate: split_name.end_with?('_enabled')
20
20
  }
21
- assignments << { split_name: split_name, variant: variant.to_s, unsynced: false }
21
+ assignments << { split_name:, variant: variant.to_s, unsynced: false }
22
22
  end
23
23
 
24
- visitor_attributes = { id: "fake_visitor_id", assignments: assignments }
24
+ visitor_attributes = { id: "fake_visitor_id", assignments: }
25
25
 
26
26
  allow(TestTrack::Remote::Visitor).to receive(:fake_instance_attributes).and_return(visitor_attributes)
27
27
  allow(TestTrack::Remote::SplitRegistry).to receive(:fake_instance_attributes).and_return(split_registry)
@@ -1,3 +1,3 @@
1
1
  module TestTrackRailsClient
2
- VERSION = "7.1.2".freeze
2
+ VERSION = "8.0.0".freeze
3
3
  end
@@ -1,8 +1,11 @@
1
1
  module Her
2
2
  module Model
3
3
  module Associations
4
- class AssociationProxy < (ActiveSupport.const_defined?('ProxyObject') ? ActiveSupport::ProxyObject : ActiveSupport::BasicObject)
4
+ class AssociationProxy < BasicObject
5
5
 
6
+ undef_method :==
7
+ undef_method :equal?
8
+
6
9
  # @private
7
10
  def self.install_proxy_methods(target_name, *names)
8
11
  names.each do |name|
@@ -26,6 +29,10 @@ module Her
26
29
  @_her_association
27
30
  end
28
31
 
32
+ def raise(*args)
33
+ ::Object.send(:raise, *args)
34
+ end
35
+
29
36
  # @private
30
37
  def method_missing(name, *args, &block)
31
38
  if name == :object_id # avoid redefining object_id
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_track_rails_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.2
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan O'Neill
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2024-07-24 00:00:00.000000000 Z
16
+ date: 2025-01-24 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: activejob
@@ -21,28 +21,40 @@ dependencies:
21
21
  requirements:
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: '6.0'
24
+ version: '7.0'
25
+ - - "<"
26
+ - !ruby/object:Gem::Version
27
+ version: '8.1'
25
28
  type: :runtime
26
29
  prerelease: false
27
30
  version_requirements: !ruby/object:Gem::Requirement
28
31
  requirements:
29
32
  - - ">="
30
33
  - !ruby/object:Gem::Version
31
- version: '6.0'
34
+ version: '7.0'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '8.1'
32
38
  - !ruby/object:Gem::Dependency
33
39
  name: activemodel
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - ">="
37
43
  - !ruby/object:Gem::Version
38
- version: '6.0'
44
+ version: '7.0'
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: '8.1'
39
48
  type: :runtime
40
49
  prerelease: false
41
50
  version_requirements: !ruby/object:Gem::Requirement
42
51
  requirements:
43
52
  - - ">="
44
53
  - !ruby/object:Gem::Version
45
- version: '6.0'
54
+ version: '7.0'
55
+ - - "<"
56
+ - !ruby/object:Gem::Version
57
+ version: '8.1'
46
58
  - !ruby/object:Gem::Dependency
47
59
  name: faraday
48
60
  requirement: !ruby/object:Gem::Requirement
@@ -119,14 +131,20 @@ dependencies:
119
131
  requirements:
120
132
  - - ">="
121
133
  - !ruby/object:Gem::Version
122
- version: '5.1'
134
+ version: '7.0'
135
+ - - "<"
136
+ - !ruby/object:Gem::Version
137
+ version: '8.1'
123
138
  type: :runtime
124
139
  prerelease: false
125
140
  version_requirements: !ruby/object:Gem::Requirement
126
141
  requirements:
127
142
  - - ">="
128
143
  - !ruby/object:Gem::Version
129
- version: '5.1'
144
+ version: '7.0'
145
+ - - "<"
146
+ - !ruby/object:Gem::Version
147
+ version: '8.1'
130
148
  - !ruby/object:Gem::Dependency
131
149
  name: request_store
132
150
  requirement: !ruby/object:Gem::Requirement
@@ -170,7 +188,7 @@ dependencies:
170
188
  - !ruby/object:Gem::Version
171
189
  version: '0'
172
190
  - !ruby/object:Gem::Dependency
173
- name: pry-rails
191
+ name: betterlint
174
192
  requirement: !ruby/object:Gem::Requirement
175
193
  requirements:
176
194
  - - ">="
@@ -184,7 +202,7 @@ dependencies:
184
202
  - !ruby/object:Gem::Version
185
203
  version: '0'
186
204
  - !ruby/object:Gem::Dependency
187
- name: rails-controller-testing
205
+ name: pry-rails
188
206
  requirement: !ruby/object:Gem::Requirement
189
207
  requirements:
190
208
  - - ">="
@@ -198,7 +216,7 @@ dependencies:
198
216
  - !ruby/object:Gem::Version
199
217
  version: '0'
200
218
  - !ruby/object:Gem::Dependency
201
- name: rspec-rails
219
+ name: rails-controller-testing
202
220
  requirement: !ruby/object:Gem::Requirement
203
221
  requirements:
204
222
  - - ">="
@@ -212,21 +230,7 @@ dependencies:
212
230
  - !ruby/object:Gem::Version
213
231
  version: '0'
214
232
  - !ruby/object:Gem::Dependency
215
- name: rubocop
216
- requirement: !ruby/object:Gem::Requirement
217
- requirements:
218
- - - "~>"
219
- - !ruby/object:Gem::Version
220
- version: 1.48.0
221
- type: :development
222
- prerelease: false
223
- version_requirements: !ruby/object:Gem::Requirement
224
- requirements:
225
- - - "~>"
226
- - !ruby/object:Gem::Version
227
- version: 1.48.0
228
- - !ruby/object:Gem::Dependency
229
- name: rubocop-performance
233
+ name: rspec-rails
230
234
  requirement: !ruby/object:Gem::Requirement
231
235
  requirements:
232
236
  - - ">="
@@ -240,35 +244,35 @@ dependencies:
240
244
  - !ruby/object:Gem::Version
241
245
  version: '0'
242
246
  - !ruby/object:Gem::Dependency
243
- name: rubocop-rails
247
+ name: shoulda-matchers
244
248
  requirement: !ruby/object:Gem::Requirement
245
249
  requirements:
246
250
  - - ">="
247
251
  - !ruby/object:Gem::Version
248
- version: '0'
252
+ version: '2.8'
249
253
  type: :development
250
254
  prerelease: false
251
255
  version_requirements: !ruby/object:Gem::Requirement
252
256
  requirements:
253
257
  - - ">="
254
258
  - !ruby/object:Gem::Version
255
- version: '0'
259
+ version: '2.8'
256
260
  - !ruby/object:Gem::Dependency
257
- name: shoulda-matchers
261
+ name: simplecov
258
262
  requirement: !ruby/object:Gem::Requirement
259
263
  requirements:
260
264
  - - ">="
261
265
  - !ruby/object:Gem::Version
262
- version: '2.8'
266
+ version: '0'
263
267
  type: :development
264
268
  prerelease: false
265
269
  version_requirements: !ruby/object:Gem::Requirement
266
270
  requirements:
267
271
  - - ">="
268
272
  - !ruby/object:Gem::Version
269
- version: '2.8'
273
+ version: '0'
270
274
  - !ruby/object:Gem::Dependency
271
- name: simplecov
275
+ name: timecop
272
276
  requirement: !ruby/object:Gem::Requirement
273
277
  requirements:
274
278
  - - ">="
@@ -282,7 +286,7 @@ dependencies:
282
286
  - !ruby/object:Gem::Version
283
287
  version: '0'
284
288
  - !ruby/object:Gem::Dependency
285
- name: timecop
289
+ name: webmock
286
290
  requirement: !ruby/object:Gem::Requirement
287
291
  requirements:
288
292
  - - ">="
@@ -296,19 +300,19 @@ dependencies:
296
300
  - !ruby/object:Gem::Version
297
301
  version: '0'
298
302
  - !ruby/object:Gem::Dependency
299
- name: webmock
303
+ name: zeitwerk
300
304
  requirement: !ruby/object:Gem::Requirement
301
305
  requirements:
302
- - - ">="
306
+ - - "<"
303
307
  - !ruby/object:Gem::Version
304
- version: '0'
308
+ version: '2.7'
305
309
  type: :development
306
310
  prerelease: false
307
311
  version_requirements: !ruby/object:Gem::Requirement
308
312
  requirements:
309
- - - ">="
313
+ - - "<"
310
314
  - !ruby/object:Gem::Version
311
- version: '0'
315
+ version: '2.7'
312
316
  description: Easy split testing and feature flagging for Rails with TestTrack server
313
317
  email:
314
318
  - ryan.oneill@betterment.com
@@ -446,14 +450,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
446
450
  requirements:
447
451
  - - ">="
448
452
  - !ruby/object:Gem::Version
449
- version: '3.0'
453
+ version: '3.1'
450
454
  required_rubygems_version: !ruby/object:Gem::Requirement
451
455
  requirements:
452
456
  - - ">="
453
457
  - !ruby/object:Gem::Version
454
458
  version: '0'
455
459
  requirements: []
456
- rubygems_version: 3.5.15
460
+ rubygems_version: 3.5.23
457
461
  signing_key:
458
462
  specification_version: 4
459
463
  summary: Rails client for TestTrack