Module: Igniter::Contracts::Assembly::HookResultPolicies

Defined in:
lib/igniter/contracts/assembly/hook_result_policies.rb

Class Method Summary collapse

Class Method Details

.execution_result(result) ⇒ Object



20
21
22
23
24
# File 'lib/igniter/contracts/assembly/hook_result_policies.rb', line 20

def execution_result(result)
  return "must return an ExecutionResult" unless result.is_a?(Execution::ExecutionResult)

  nil
end

.operations_array(result) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/igniter/contracts/assembly/hook_result_policies.rb', line 9

def operations_array(result)
  return "must return an Array of operations" unless result.is_a?(Array)

  result.each_with_index do |operation, index|
    message = validate_operation(operation)
    return "must return an Array of operations; element #{index} #{message}" if message
  end

  nil
end

.validate_operation(operation) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/igniter/contracts/assembly/hook_result_policies.rb', line 36

def validate_operation(operation)
  return "must be an Execution::Operation" unless operation.is_a?(Execution::Operation)
  return "must use Symbol kind" unless operation.kind.is_a?(Symbol)
  return "must use Symbol name" unless operation.name.is_a?(Symbol)
  return "must use Hash attributes" unless operation.attributes.is_a?(Hash)

  nil
end

.validation_findings(result) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/igniter/contracts/assembly/hook_result_policies.rb', line 26

def validation_findings(result)
  return nil if result.nil?
  return "must return an Array of ValidationFinding entries" unless result.is_a?(Array)

  invalid_index = result.find_index { |entry| !entry.is_a?(Execution::ValidationFinding) }
  return nil if invalid_index.nil?

  "must return an Array of ValidationFinding entries; element #{invalid_index} is invalid"
end