Class: Dcc::Validate::Schematron::Rules::UsedMethodsPlacement

Inherits:
Base show all
Defined in:
lib/dcc/validate/schematron/rules/used_methods_placement.rb

Overview

dcc:usedMethods must appear somewhere (global, list, or quantity level). Error if missing everywhere.

Instance Method Summary collapse

Methods inherited from Dcc::Validate::Schematron::Rule

#code, #severity

Instance Method Details

#check_on(dcc) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/dcc/validate/schematron/rules/used_methods_placement.rb', line 11

def check_on(dcc)
  issues = []
  return issues unless Dcc::TypeGuards.has_attribute?(dcc, :measurement_results)

  mr_list = safe_attr(dcc.measurement_results, :measurement_result)
  return issues if mr_list.empty?

  any_used = mr_list.any? do |mr|
    Dcc::TypeGuards.has_attribute?(mr, :used_methods) && !mr.used_methods.nil? ||
      mr_has_descendant?(mr, :used_methods)
  end

  issues << issue(
    severity: :error,
    message: "dcc:usedMethods is missing in every measurementResult and its descendants",
  ) unless any_used

  issues
end