Module: TestTrackRailsClient::AssignmentHelper

Defined in:
lib/test_track_rails_client/assignment_helper.rb

Instance Method Summary collapse

Instance Method Details

#stub_test_track_assignments(assignment_registry) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/MethodLength



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/test_track_rails_client/assignment_helper.rb', line 2

def stub_test_track_assignments(assignment_registry) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  raise "Cannot stub test track assignments when TestTrack is enabled" if TestTrack.enabled?

  split_registry = TestTrack::Fake::SplitRegistry.instance.to_h.deep_dup
  assignments = []
  app_name = URI.parse(TestTrack.private_url).user

  assignment_registry.each do |split_name, variant|
    prefixed_split_name = "#{app_name}.#{split_name}"
    split_name = if split_registry['splits'].key?(prefixed_split_name)
                   prefixed_split_name
                 else
                   split_name.to_s
                 end

    split_registry['splits'][split_name] = {
      weights: { variant.to_s => 100 },
      feature_gate: split_name.end_with?('_enabled')
    }
    assignments << { split_name: split_name, variant: variant.to_s, unsynced: false }
  end

  visitor_attributes = { id: "fake_visitor_id", assignments: assignments }

  allow(TestTrack::Remote::Visitor).to receive(:fake_instance_attributes).and_return(visitor_attributes)
  allow(TestTrack::Remote::SplitRegistry).to receive(:fake_instance_attributes).and_return(split_registry)
end