module Inferno::DSL::RequestStorage

This module handles storing and retrieving requests/responses made by FHIR/HTTP clients

Public Class Methods

included(klass) click to toggle source
# File lib/inferno/dsl/request_storage.rb, line 6
def self.included(klass)
  klass.extend ClassMethods
end

Public Instance Methods

load_named_requests() click to toggle source

@api private

# File lib/inferno/dsl/request_storage.rb, line 64
def load_named_requests
  requests_repo = Inferno::Repositories::Requests.new
  self.class.named_requests_used.map do |request_name|
    request = requests_repo.find_named_request(test_session_id, request_name)
    raise StandardError, "Unable to find '#{request_name}' request" if request.nil?

    requests << request
  end
end
named_request(name) click to toggle source

TODO: do a check in the test runner

# File lib/inferno/dsl/request_storage.rb, line 40
def named_request(name)
  requests.find { |request| request.name == name.to_sym }
end
request() click to toggle source

Returns the most recent FHIR/HTTP request

@return [Inferno::Entities::Request]

# File lib/inferno/dsl/request_storage.rb, line 20
def request
  requests.last
end
requests() click to toggle source

Returns the FHIR/HTTP requests that have been made in this `Test`

@return [Array<Inferno::Entities::Request>]

# File lib/inferno/dsl/request_storage.rb, line 13
def requests
  @requests ||= []
end
resource() click to toggle source

Returns the FHIR resource from the response to the most recent FHIR request

@return [FHIR::Model, nil]

# File lib/inferno/dsl/request_storage.rb, line 35
def resource
  request&.resource
end
response() click to toggle source

Returns the response from the most recent FHIR/HTTP request

@return [Hash, nil]

# File lib/inferno/dsl/request_storage.rb, line 27
def response
  request&.response
end
store_request(direction, name = nil, &block) click to toggle source

@api private

# File lib/inferno/dsl/request_storage.rb, line 45
def store_request(direction, name = nil, &block)
  response = block.call

  request =
    if response.is_a? FHIR::ClientReply
      Entities::Request.from_fhir_client_reply(
        response, direction: direction, name: name, test_session_id: test_session_id
      )
    else
      Entities::Request.from_http_response(
        response, direction: direction, name: name, test_session_id: test_session_id
      )
    end

  requests << request
  request
end