test_track_rails_client 7.1.1 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b1c0d5e3f14e82a63f34d8ab019c2f433014cdcf590ba339e70cf54996178a1a
4
- data.tar.gz: e45737b7d5dba5cffec0219292091252fbac298ac48189cbf827cde52c408d5c
3
+ metadata.gz: af3ebf6b69530ee8c1d9e40532e955e09742b00cc0b64aeca8f8870900bc9370
4
+ data.tar.gz: 0fd103511d0c119a12828295eded55430d60c0c3c5b23f0005f72a858aacf5d9
5
5
  SHA512:
6
- metadata.gz: 2b892995788d2baccf116d1cf233fd763159b9047a068196feb4fa89dbc70c0ffc6ab1670d1d57da9bdd5359f9d8f455619a456e0a4b70f93b84df966a1122af
7
- data.tar.gz: 15e46fb3134a62060b3bf931f0b99912151bc75c3be74493c8b12956951d42a67014101086f773f002abfcce661a058485969c24f0f613413fd2ec57e6fd6160
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
@@ -12,7 +12,7 @@ class TestTrack::ApplicationIdentity
12
12
  end
13
13
 
14
14
  def identity
15
- Identity.new(app_name)
15
+ @identity ||= Identity.new(app_name)
16
16
  end
17
17
 
18
18
  class Identity
@@ -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.1".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.1
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-03-13 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.6
460
+ rubygems_version: 3.5.23
457
461
  signing_key:
458
462
  specification_version: 4
459
463
  summary: Rails client for TestTrack