Class: Observ::Evaluators::JsonStructureEvaluator

Inherits:
BaseEvaluator
  • Object
show all
Defined in:
app/services/observ/evaluators/json_structure_evaluator.rb

Instance Attribute Summary

Attributes inherited from BaseEvaluator

#name, #options

Instance Method Summary collapse

Methods inherited from BaseEvaluator

#call, #initialize

Constructor Details

This class inherits a constructor from Observ::Evaluators::BaseEvaluator

Instance Method Details

#evaluate(run_item) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'app/services/observ/evaluators/json_structure_evaluator.rb', line 6

def evaluate(run_item)
  required_keys = options[:required_keys] || extract_keys_from_expected(run_item)
  return nil if required_keys.blank?

  output = parse_output(run_item.actual_output)
  return 0.0 if output.nil?

  present_keys = required_keys.count { |key| output.key?(key.to_s) || output.key?(key.to_sym) }
  present_keys.to_f / required_keys.size
end