class SplitIoClient::Engine::FallbackTreatmentCalculator

def copy_with_label(fallback_treatment, label)

def copy_with_label(fallback_treatment, label)
  Engine::Models::FallbackTreatment.new(fallback_treatment.treatment, fallback_treatment.config, label)
end

def initialize(fallback_treatment_configuration)

def initialize(fallback_treatment_configuration)
  @label_prefix = 'fallback - '
  @fallback_treatments_configuration = fallback_treatment_configuration
end

def resolve(flag_name, label)

def resolve(flag_name, label)
  default_fallback_treatment = Engine::Models::FallbackTreatment.new(
    Engine::Models::Treatment::CONTROL,
    nil,
    label
  )
  return default_fallback_treatment if @fallback_treatments_configuration.nil?
  if !@fallback_treatments_configuration.by_flag_fallback_treatment.nil? \
      && !@fallback_treatments_configuration.by_flag_fallback_treatment.fetch(flag_name, nil).nil?
    return copy_with_label(
      @fallback_treatments_configuration.by_flag_fallback_treatment[flag_name],
      resolve_label(label)
    )
  end
  return copy_with_label(@fallback_treatments_configuration.global_fallback_treatment, resolve_label(label)) \
    unless @fallback_treatments_configuration.global_fallback_treatment.nil?
  default_fallback_treatment
end

def resolve_label(label)

def resolve_label(label)
  return nil if label.nil?
  @label_prefix + label
end