Sha256: 63374fd6ba9ee6530e6d84aca9e8250912e87bf3f7aa1cf84bea5f9a6d7ab0e3

Contents?: true

Size: 1.76 KB

Versions: 7

Compression:

Stored size: 1.76 KB

Contents

require_relative 'test_group'
require_relative '../dsl/runnable'
require_relative '../repositories/test_groups'
require_relative '../repositories/test_suites'

module Inferno
  module Entities
    # A `TestSuite` represents a packaged group of tests, usually for a
    # single Implementation Guide
    class TestSuite
      extend DSL::Runnable
      extend DSL::FHIRClient::ClassMethods
      extend DSL::HTTPClient::ClassMethods
      include DSL::FHIRValidation

      class << self
        extend Forwardable

        def_delegator :default_group, :test

        def default_group
          return @default_group if @default_group

          @default_group = Class.new(TestGroup)
          children << @default_group
          @default_group
        end

        def repository
          Inferno::Repositories::TestSuites.new
        end

        def groups
          children.select { |child| child < Inferno::Entities::TestGroup }
        end

        # Methods to configure Inferno::DSL::Runnable

        def group(...)
          child_metadata(group_metadata)
          define_child(...)
        end

        def group_metadata
          {
            class: TestGroup,
            repo: Inferno::Repositories::TestGroups.new
          }
        end

        def reference_hash
          {
            test_suite_id: id
          }
        end

        def find_validator(validator_name)
          validator = fhir_validators[validator_name]

          return validator if validator

          raise Exceptions::ValidatorNotFoundException, validator_name unless validator_name == :default

          fhir_validators[:default] =
            Inferno::DSL::FHIRValidation::Validator.new { |v| v.url default_validator_url }
        end
      end
    end
  end

  TestSuite = Entities::TestSuite
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
inferno_core-0.1.3 lib/inferno/entities/test_suite.rb
inferno_core-0.1.3.pre2 lib/inferno/entities/test_suite.rb
inferno_core-0.1.3.pre lib/inferno/entities/test_suite.rb
inferno_core-0.1.2 lib/inferno/entities/test_suite.rb
inferno_core-0.1.2.pre lib/inferno/entities/test_suite.rb
inferno_core-0.1.1 lib/inferno/entities/test_suite.rb
inferno_core-0.1.1.pre lib/inferno/entities/test_suite.rb