module Inferno::DSL::Assertions

Public Instance Methods

assert(test, message = '') click to toggle source
# File lib/inferno/dsl/assertions.rb, line 6
def assert(test, message = '')
  raise Exceptions::AssertionException, message unless test
end
assert_resource_type(resource_type, resource: self.resource) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 22
def assert_resource_type(resource_type, resource: self.resource)
  resource_type_name = normalize_resource_type(resource_type)

  assert resource&.resourceType == resource_type_name,
         bad_resource_type_message(resource_type_name, resource&.resourceType)
end
assert_response_status(status, response: self.response) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 14
def assert_response_status(status, response: self.response)
  assert Array.wrap(status).include?(response[:status]), bad_response_status_message(status, response[:status])
end
assert_valid_bundle_entries(bundle: resource, resource_types: {}) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 38
def assert_valid_bundle_entries(bundle: resource, resource_types: {})
  assert_resource_type('Bundle', resource: bundle)

  types_to_check = normalize_types_to_check(resource_types)

  invalid_resources =
    bundle
      .entry
      .map(&:resource)
      .select { |resource| types_to_check.empty? || types_to_check.include?(resource.resourceType) }
      .reject do |resource|
        validation_params = { resource: resource }
        profile = types_to_check[resource.resourceType]
        validation_params[:profile_url] = profile if profile

        resource_is_valid?(**validation_params)
      end

  assert invalid_resources.empty?, invalid_bundle_entries_message(invalid_resources)
end
assert_valid_json(maybe_json_string, message = '') click to toggle source
# File lib/inferno/dsl/assertions.rb, line 86
def assert_valid_json(maybe_json_string, message = '')
  assert JSON.parse(maybe_json_string)
rescue JSON::ParserError
  assert false, "Invalid JSON. #{message}"
end
assert_valid_resource(resource: self.resource, profile_url: nil) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 33
def assert_valid_resource(resource: self.resource, profile_url: nil)
  assert resource_is_valid?(resource: resource, profile_url: profile_url),
         invalid_resource_message(profile_url)
end
bad_resource_type_message(expected, received) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 18
def bad_resource_type_message(expected, received)
  "Bad resource type received: expected #{expected}, but received #{received}"
end
bad_response_status_message(expected, received) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 10
def bad_response_status_message(expected, received)
  "Bad response status: expected #{Array.wrap(expected).join(', ')}, but received #{received}"
end
invalid_bundle_entries_message(invalid_resources) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 59
def invalid_bundle_entries_message(invalid_resources)
  identifier_strings =
    invalid_resources
      .map { |resource| "#{resource.resourceType}##{resource.id}" }
      .join(', ')
  "The following bundle entries are invalid: #{identifier_strings}"
end
invalid_resource_message(profile_url) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 29
def invalid_resource_message(profile_url)
  "Resource does not conform to the profile: #{profile_url}"
end
normalize_resource_type(resource_type) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 67
def normalize_resource_type(resource_type)
  if resource_type.is_a? Class
    resource_type.name.demodulize
  else
    resource_type.to_s.camelize
  end
end
normalize_types_to_check(resource_types) click to toggle source
# File lib/inferno/dsl/assertions.rb, line 75
def normalize_types_to_check(resource_types)
  case resource_types
  when Hash
    resource_types.transform_keys { |type| normalize_resource_type(type) }
  when String
    { normalize_resource_type(resource_types) => nil }
  when Array
    resource_types.each_with_object({}) { |type, types| types[normalize_resource_type(type)] = nil }
  end
end