Module: Igniter::Contracts::Execution::StepResultValidators
- Defined in:
- lib/igniter/contracts/execution/step_result_validators.rb
Class Method Summary collapse
- .step_operations(operations) ⇒ Object
-
.validate_step_callables(operations:, profile: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument.
-
.validate_step_dependencies(operations:, profile: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument.
Class Method Details
.step_operations(operations) ⇒ Object
38 39 40 |
# File 'lib/igniter/contracts/execution/step_result_validators.rb', line 38 def step_operations(operations) operations.select { |operation| operation.kind == :step } end |
.validate_step_callables(operations:, profile: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/igniter/contracts/execution/step_result_validators.rb', line 25 def validate_step_callables(operations:, profile: nil) # rubocop:disable Lint/UnusedMethodArgument missing = step_operations(operations) .reject { |operation| operation.attributes[:callable].respond_to?(:call) } .map(&:name) return [] if missing.empty? [ValidationFinding.new( code: :missing_step_callable, message: "step nodes require a callable: #{missing.map(&:to_s).join(", ")}", subjects: missing )] end |
.validate_step_dependencies(operations:, profile: nil) ⇒ Object
rubocop:disable Lint/UnusedMethodArgument
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/igniter/contracts/execution/step_result_validators.rb', line 9 def validate_step_dependencies(operations:, profile: nil) # rubocop:disable Lint/UnusedMethodArgument available = operations.reject(&:output?).map(&:name) missing = step_operations(operations) .flat_map { |operation| Array(operation.attributes[:depends_on]) } .map(&:to_sym) .reject { |name| available.include?(name) } .uniq return [] if missing.empty? [ValidationFinding.new( code: :missing_step_dependencies, message: "step dependencies are not defined: #{missing.map(&:to_s).join(", ")}", subjects: missing )] end |