Class: Dcc::Validate::Schematron::Rules::AdministrativeDataCompleteness

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

Overview

Validates that all required sections are present in dcc:administrativeData: dccSoftware, coreData, items, calibrationLaboratory, respPersons, customer.

Constant Summary collapse

REQUIRED_SECTIONS =
{
  dcc_software: "dccSoftware",
  core_data: "coreData",
  items: "items",
  calibration_laboratory: "calibrationLaboratory",
  resp_persons: "respPersons",
  customer: "customer",
}.freeze

Instance Method Summary collapse

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

#code, #severity

Instance Method Details

#check_on(dcc) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/dcc/validate/schematron/rules/administrative_data_completeness.rb', line 20

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

  admin = dcc.administrative_data
  return [issue(severity: :error, message: "administrativeData is missing")] unless admin

  REQUIRED_SECTIONS.each do |attr, label|
    value = Dcc::TypeGuards.has_attribute?(admin, attr) ? admin.public_send(attr) : nil
    next unless value.nil? || ((value.is_a?(::String) || value.is_a?(::Array)) && value.empty?)

    issues << issue(
      severity: :error,
      message: "dcc:administrativeData/#{label} is missing",
    )
  end
  issues
end