Class: Hackle::TargetExperimentFlowEvaluator

Inherits:
Object
  • Object
show all
Includes:
ExperimentFlowEvaluator
Defined in:
lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb

Instance Method Summary collapse

Constructor Details

#initialize(target_determiner:) ⇒ TargetExperimentFlowEvaluator

Returns a new instance of TargetExperimentFlowEvaluator.

Parameters:



97
98
99
100
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 97

def initialize(target_determiner:)
  # @type [ExperimentTargetDeterminer]
  @target_determiner = target_determiner
end

Instance Method Details

#evaluate(request, context, next_flow) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 102

def evaluate(request, context, next_flow)
  if request.experiment.type != ExperimentType::AB_TEST
    raise ArgumentError, "experiment type must be AB_TEST [#{request.experiment.id}]"
  end

  is_user_in_experiment_target = @target_determiner.user_in_experiment_target?(request, context)
  if is_user_in_experiment_target
    next_flow.evaluate(request, context)
  else
    ExperimentEvaluation.create_default(request, context, DecisionReason::NOT_IN_EXPERIMENT_TARGET)
  end
end