class Crucible::Tests::SearchTest

Attributes

canSearchById[R]
conformance[RW]
resource_class[RW]
searchParams[RW]

Public Class Methods

new(client1, client2=nil) click to toggle source
Calls superclass method Crucible::Tests::BaseTest::new
# File lib/tests/suites/search_test.rb, line 39
def initialize(client1, client2=nil)
  super(client1, client2)
end

Public Instance Methods

category() click to toggle source
# File lib/tests/suites/search_test.rb, line 34
def category
  resource = @resource_class.nil? ? "Uncategorized" : resource_category(@resource_class.name.demodulize)
  {id: "search_#{resource.parameterize}", title: "#{resource} Search"}
end
define_metadata(method) click to toggle source
# File lib/tests/suites/search_test.rb, line 213
def define_metadata(method)
  links "#{REST_SPEC_LINK}##{method}"
  links "#{BASE_SPEC_LINK}/#{resource_class.name.demodulize.downcase}.html"
  validates resource: resource_class.name.demodulize, methods: [method]
end
description() click to toggle source
# File lib/tests/suites/search_test.rb, line 30
def description
  "Execute suite of searches for #{resource_class.name.demodulize} resources."
end
execute(resource_class=nil) click to toggle source
# File lib/tests/suites/search_test.rb, line 10
def execute(resource_class=nil)
  if resource_class
    @resource_class = resource_class
    {"SearchTest_#{@resource_class.name.demodulize}" => execute_test_methods}
  else
    results = {}
    Crucible::Tests::BaseSuite.fhir_resources.each do | klass |
      @resource_class = klass
      results.merge!({"SearchTest_#{@resource_class.name.demodulize}" => execute_test_methods})
    end
    results
  end
end
id() click to toggle source
# File lib/tests/suites/search_test.rb, line 24
def id
  suffix = resource_class
  suffix = resource_class.name.demodulize if !resource_class.nil?
  "SearchTest_#{suffix}"
end
result_id_suffix() click to toggle source

this allows results to have unique ids for resource based tests

# File lib/tests/suites/search_test.rb, line 44
def result_id_suffix
  resource_class.name.demodulize
end
setup() click to toggle source

Search Test

  1. First, get the conformance statement.

  2. Lookup the allowed search parameters for each resource.

  3. Perform suite of tests against each resource.

# File lib/tests/suites/search_test.rb, line 58
def setup
  @conformance = @client.conformance_statement if @conformance.nil?

  @canSearchById = false

  unless @conformance.nil?
    @conformance.rest.each do |rest|
      rest.resource.each do |resource|
        @searchParams = resource.searchParam if(resource.type.downcase == "#{@resource_class.name.demodulize.downcase}" )
      end
    end
  end

  index = @searchParams.find_index {|item| item.name=="_id" } if !@searchParams.nil?
  @canSearchById = !index.nil?
end
supplement_test_description(desc) click to toggle source
# File lib/tests/suites/search_test.rb, line 48
def supplement_test_description(desc)
  "#{desc} #{resource_class.name.demodulize}"
end