Class: Crucible::Tests::SearchTest

Inherits:
BaseSuite show all
Defined in:
lib/tests/suites/search_test.rb

Constant Summary

Constants inherited from BaseSuite

BaseSuite::EXCLUDED_RESOURCES

Constants inherited from BaseTest

BaseTest::BASE_SPEC_LINK, BaseTest::JSON_FIELDS, BaseTest::METADATA_FIELDS, BaseTest::REST_SPEC_LINK, BaseTest::STATUS

Instance Attribute Summary collapse

Attributes inherited from BaseTest

#tags, #tests_subset, #warnings

Instance Method Summary collapse

Methods inherited from BaseSuite

#build_messages, #collect_metadata, fhir_resources, #links, #metadata, #parse_operation_outcome, #requires, #resource_category, test, #title, #validates

Methods inherited from BaseTest

#author, #details, #execute_test_method, #execute_test_methods, #ignore_client_exception, #multiserver, #requires_authorization, #tests, #warning

Methods included from Assertions

#assert, #assert_bundle_entry_count, #assert_bundle_response, #assert_bundle_transactions_okay, #assert_equal, #assert_etag_present, #assert_last_modified_present, #assert_minimum, #assert_navigation_links, #assert_operator, #assert_resource_content_type, #assert_resource_type, #assert_response_bad, #assert_response_code, #assert_response_conflict, #assert_response_created, #assert_response_gone, #assert_response_not_found, #assert_response_ok, #assert_valid_content_location_present, #assert_valid_profile, #assert_valid_resource_content_type_present, #assertion_negated, #skip

Constructor Details

#initialize(client1, client2 = nil) ⇒ SearchTest

Returns a new instance of SearchTest.



39
40
41
# File 'lib/tests/suites/search_test.rb', line 39

def initialize(client1, client2=nil)
  super(client1, client2)
end

Instance Attribute Details

#canSearchByIdObject (readonly)

Returns the value of attribute canSearchById.



8
9
10
# File 'lib/tests/suites/search_test.rb', line 8

def canSearchById
  @canSearchById
end

#conformanceObject

Returns the value of attribute conformance.



6
7
8
# File 'lib/tests/suites/search_test.rb', line 6

def conformance
  @conformance
end

#resource_classObject

Returns the value of attribute resource_class.



5
6
7
# File 'lib/tests/suites/search_test.rb', line 5

def resource_class
  @resource_class
end

#searchParamsObject

Returns the value of attribute searchParams.



7
8
9
# File 'lib/tests/suites/search_test.rb', line 7

def searchParams
  @searchParams
end

Instance Method Details

#categoryObject



34
35
36
37
# 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) ⇒ Object



213
214
215
216
217
# File 'lib/tests/suites/search_test.rb', line 213

def (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

#descriptionObject



30
31
32
# 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) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# 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

#idObject



24
25
26
27
28
# 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_suffixObject

this allows results to have unique ids for resource based tests



44
45
46
# File 'lib/tests/suites/search_test.rb', line 44

def result_id_suffix
  resource_class.name.demodulize
end

#setupObject

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.



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# 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) ⇒ Object



48
49
50
# File 'lib/tests/suites/search_test.rb', line 48

def supplement_test_description(desc)
  "#{desc} #{resource_class.name.demodulize}"
end