test_track_rails_client 7.1.2 → 8.1.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: 22a09ce0733fcb557b0360e49bc13076c4f697fc1f6d91d6dabf9debbf90dbef
4
+ data.tar.gz: dd1c212c68b7575e26c55d68c3abd2ba77ccbe9732c9450e22f0a89d107b5d42
5
5
  SHA512:
6
- metadata.gz: 7726be38a0eb5b6d81a555b9dd489d1e2d0a33faf30481f922d0faf1a7a79bd150f5e66ce541bc5eb9dcb51c17c0fa2da003a67b316ea3ec124955cf1b98240a
7
- data.tar.gz: ffceabaffbeb7966c1de27b47f3e820d1a4322fcd871371ba1c90e4fa3d6ea5d8679caae0082ee1a9580341265b96f897125d6c9c9b89f7880011926ee076e88
6
+ metadata.gz: 28798ccf0163307ef362c76d7d9d74ef2c69dca3ab9d198e495362af393483ed62ee33e92e944201a31234aabd957e5e6d055a73261fd6a7d742216fd866b169
7
+ data.tar.gz: 98feb2a15aec301983be61d62e3bb3c22e0979d682c1162ab735c55f7af86d45402be6a5cbc9d974c592b1fc102091cb0a6269fb629a5913ac4e3d05af6398d9
@@ -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.1.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.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan O'Neill
@@ -10,10 +10,9 @@ authors:
10
10
  - John Mileham
11
11
  - Alan Norton
12
12
  - Sam Moore
13
- autorequire:
14
13
  bindir: bin
15
14
  cert_chain: []
16
- date: 2024-07-24 00:00:00.000000000 Z
15
+ date: 2025-03-14 00:00:00.000000000 Z
17
16
  dependencies:
18
17
  - !ruby/object:Gem::Dependency
19
18
  name: activejob
@@ -21,28 +20,40 @@ dependencies:
21
20
  requirements:
22
21
  - - ">="
23
22
  - !ruby/object:Gem::Version
24
- version: '6.0'
23
+ version: '7.0'
24
+ - - "<"
25
+ - !ruby/object:Gem::Version
26
+ version: '8.1'
25
27
  type: :runtime
26
28
  prerelease: false
27
29
  version_requirements: !ruby/object:Gem::Requirement
28
30
  requirements:
29
31
  - - ">="
30
32
  - !ruby/object:Gem::Version
31
- version: '6.0'
33
+ version: '7.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '8.1'
32
37
  - !ruby/object:Gem::Dependency
33
38
  name: activemodel
34
39
  requirement: !ruby/object:Gem::Requirement
35
40
  requirements:
36
41
  - - ">="
37
42
  - !ruby/object:Gem::Version
38
- version: '6.0'
43
+ version: '7.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '8.1'
39
47
  type: :runtime
40
48
  prerelease: false
41
49
  version_requirements: !ruby/object:Gem::Requirement
42
50
  requirements:
43
51
  - - ">="
44
52
  - !ruby/object:Gem::Version
45
- version: '6.0'
53
+ version: '7.0'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '8.1'
46
57
  - !ruby/object:Gem::Dependency
47
58
  name: faraday
48
59
  requirement: !ruby/object:Gem::Requirement
@@ -119,14 +130,20 @@ dependencies:
119
130
  requirements:
120
131
  - - ">="
121
132
  - !ruby/object:Gem::Version
122
- version: '5.1'
133
+ version: '7.0'
134
+ - - "<"
135
+ - !ruby/object:Gem::Version
136
+ version: '8.1'
123
137
  type: :runtime
124
138
  prerelease: false
125
139
  version_requirements: !ruby/object:Gem::Requirement
126
140
  requirements:
127
141
  - - ">="
128
142
  - !ruby/object:Gem::Version
129
- version: '5.1'
143
+ version: '7.0'
144
+ - - "<"
145
+ - !ruby/object:Gem::Version
146
+ version: '8.1'
130
147
  - !ruby/object:Gem::Dependency
131
148
  name: request_store
132
149
  requirement: !ruby/object:Gem::Requirement
@@ -142,13 +159,13 @@ dependencies:
142
159
  - !ruby/object:Gem::Version
143
160
  version: '1.3'
144
161
  - !ruby/object:Gem::Dependency
145
- name: sprockets-rails
162
+ name: appraisal
146
163
  requirement: !ruby/object:Gem::Requirement
147
164
  requirements:
148
165
  - - ">="
149
166
  - !ruby/object:Gem::Version
150
167
  version: '0'
151
- type: :runtime
168
+ type: :development
152
169
  prerelease: false
153
170
  version_requirements: !ruby/object:Gem::Requirement
154
171
  requirements:
@@ -156,7 +173,7 @@ dependencies:
156
173
  - !ruby/object:Gem::Version
157
174
  version: '0'
158
175
  - !ruby/object:Gem::Dependency
159
- name: appraisal
176
+ name: betterlint
160
177
  requirement: !ruby/object:Gem::Requirement
161
178
  requirements:
162
179
  - - ">="
@@ -212,35 +229,21 @@ dependencies:
212
229
  - !ruby/object:Gem::Version
213
230
  version: '0'
214
231
  - !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
232
+ name: shoulda-matchers
230
233
  requirement: !ruby/object:Gem::Requirement
231
234
  requirements:
232
235
  - - ">="
233
236
  - !ruby/object:Gem::Version
234
- version: '0'
237
+ version: '2.8'
235
238
  type: :development
236
239
  prerelease: false
237
240
  version_requirements: !ruby/object:Gem::Requirement
238
241
  requirements:
239
242
  - - ">="
240
243
  - !ruby/object:Gem::Version
241
- version: '0'
244
+ version: '2.8'
242
245
  - !ruby/object:Gem::Dependency
243
- name: rubocop-rails
246
+ name: simplecov
244
247
  requirement: !ruby/object:Gem::Requirement
245
248
  requirements:
246
249
  - - ">="
@@ -254,21 +257,21 @@ dependencies:
254
257
  - !ruby/object:Gem::Version
255
258
  version: '0'
256
259
  - !ruby/object:Gem::Dependency
257
- name: shoulda-matchers
260
+ name: sprockets-rails
258
261
  requirement: !ruby/object:Gem::Requirement
259
262
  requirements:
260
263
  - - ">="
261
264
  - !ruby/object:Gem::Version
262
- version: '2.8'
265
+ version: '0'
263
266
  type: :development
264
267
  prerelease: false
265
268
  version_requirements: !ruby/object:Gem::Requirement
266
269
  requirements:
267
270
  - - ">="
268
271
  - !ruby/object:Gem::Version
269
- version: '2.8'
272
+ version: '0'
270
273
  - !ruby/object:Gem::Dependency
271
- name: simplecov
274
+ name: timecop
272
275
  requirement: !ruby/object:Gem::Requirement
273
276
  requirements:
274
277
  - - ">="
@@ -282,7 +285,7 @@ dependencies:
282
285
  - !ruby/object:Gem::Version
283
286
  version: '0'
284
287
  - !ruby/object:Gem::Dependency
285
- name: timecop
288
+ name: webmock
286
289
  requirement: !ruby/object:Gem::Requirement
287
290
  requirements:
288
291
  - - ">="
@@ -296,19 +299,19 @@ dependencies:
296
299
  - !ruby/object:Gem::Version
297
300
  version: '0'
298
301
  - !ruby/object:Gem::Dependency
299
- name: webmock
302
+ name: zeitwerk
300
303
  requirement: !ruby/object:Gem::Requirement
301
304
  requirements:
302
- - - ">="
305
+ - - "<"
303
306
  - !ruby/object:Gem::Version
304
- version: '0'
307
+ version: '2.7'
305
308
  type: :development
306
309
  prerelease: false
307
310
  version_requirements: !ruby/object:Gem::Requirement
308
311
  requirements:
309
- - - ">="
312
+ - - "<"
310
313
  - !ruby/object:Gem::Version
311
- version: '0'
314
+ version: '2.7'
312
315
  description: Easy split testing and feature flagging for Rails with TestTrack server
313
316
  email:
314
317
  - ryan.oneill@betterment.com
@@ -438,7 +441,6 @@ homepage: https://github.com/Betterment
438
441
  licenses:
439
442
  - MIT
440
443
  metadata: {}
441
- post_install_message:
442
444
  rdoc_options: []
443
445
  require_paths:
444
446
  - lib
@@ -446,15 +448,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
446
448
  requirements:
447
449
  - - ">="
448
450
  - !ruby/object:Gem::Version
449
- version: '3.0'
451
+ version: '3.1'
450
452
  required_rubygems_version: !ruby/object:Gem::Requirement
451
453
  requirements:
452
454
  - - ">="
453
455
  - !ruby/object:Gem::Version
454
456
  version: '0'
455
457
  requirements: []
456
- rubygems_version: 3.5.15
457
- signing_key:
458
+ rubygems_version: 3.6.5
458
459
  specification_version: 4
459
460
  summary: Rails client for TestTrack
460
461
  test_files: []