Sha256: 658f20bc7d2627faf0f7c0f715b18849962d1f8c86326e1bede9bbc54dc27602

Contents?: true

Size: 1.26 KB

Versions: 20

Compression:

Stored size: 1.26 KB

Contents

class TestTrack::Fake::SplitRegistry
  Split = Struct.new(:name, :registry)

  def self.instance
    @instance ||= new
  end

  def to_h
    @to_h ||= splits_with_deterministic_weights
  end

  def splits
    to_h.map do |split, registry|
      Split.new(split, registry)
    end
  end

  private

  def split_hash
    if test_track_schema_yml.present?
      test_track_schema_yml[:splits]
    else
      {}
    end
  end

  def test_track_schema_yml
    unless instance_variable_defined?(:@test_track_schema_yml)
      @test_track_schema_yml = _test_track_schema_yml
    end
    @test_track_schema_yml
  end

  def _test_track_schema_yml
    YAML.load_file(test_track_schema_yml_path).with_indifferent_access
  rescue
    nil
  end

  def test_track_schema_yml_path
    ENV["TEST_TRACK_SCHEMA_FILE_PATH"] || Rails.root.join('db', 'test_track_schema.yml')
  end

  def splits_with_deterministic_weights
    split_hash.each_with_object({}) do |(split_name, weighting_registry), split_registry|
      default_variant = weighting_registry.keys.sort.first

      adjusted_weights = { default_variant => 100 }
      weighting_registry.except(default_variant).each_key do |variant|
        adjusted_weights[variant] = 0
      end

      split_registry[split_name] = adjusted_weights
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
test_track_rails_client-4.0.0.alpha18 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha17 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha16 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha15 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha14 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha13 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha12 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha11 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha10 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha9 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha8 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha7 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha6 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha5 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha4 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha3 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha2 app/models/test_track/fake/split_registry.rb
test_track_rails_client-4.0.0.alpha1 app/models/test_track/fake/split_registry.rb
test_track_rails_client-3.0.1 app/models/test_track/fake/split_registry.rb
test_track_rails_client-3.0.0 app/models/test_track/fake/split_registry.rb