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