Class: DaVinciDTRTestKit::DTRAdaptiveNextQuestionRequestValidationTest
- Inherits:
-
Inferno::Test
- Object
- Inferno::Test
- DaVinciDTRTestKit::DTRAdaptiveNextQuestionRequestValidationTest
show all
- Includes:
- URLs
- Defined in:
- lib/davinci_dtr_test_kit/client_groups/adaptive_questionnaire/dtr_adaptive_next_question_request_validation_test.rb
Instance Method Summary
collapse
Methods included from URLs
#base_url, #ehr_authorize_url, #ehr_token_url, #fhir_base_url, #next_url, #payer_token_url, #questionnaire_package_url, #questionnaire_response_url, #registration_url, #resume_fail_url, #resume_pass_url, #suite_id, #supported_payer_url, #token_url, #udap_discovery_url
Instance Method Details
#assert_valid_resource_type(resource) ⇒ Object
35
36
37
38
39
|
# File 'lib/davinci_dtr_test_kit/client_groups/adaptive_questionnaire/dtr_adaptive_next_question_request_validation_test.rb', line 35
def assert_valid_resource_type(resource)
type = resource.resourceType
valid = ['Parameters', 'QuestionnaireResponse'].include?(type)
assert valid, "Request body not valid. Expected Parameters or QuestionnaireResponse, got #{type}"
end
|
#next_request_tag ⇒ Object
41
42
43
|
# File 'lib/davinci_dtr_test_kit/client_groups/adaptive_questionnaire/dtr_adaptive_next_question_request_validation_test.rb', line 41
def next_request_tag
config.options[:next_tag]
end
|
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/davinci_dtr_test_kit/client_groups/adaptive_questionnaire/dtr_adaptive_next_question_request_validation_test.rb', line 45
def perform_requests_validation
requests.each_with_index do |r, index|
if r.url != next_url
add_message('warning',
"Request #{index} made to wrong URL: #{r.url}. Should instead be to #{next_url}")
end
assert_valid_json(r.request_body)
input_params = FHIR.from_contents(r.request_body)
assert input_params.present?, 'Request does not contain a recognized FHIR object'
assert_valid_resource_type(input_params)
if input_params.is_a?(FHIR::Parameters)
questionnaire_response_params = input_params.parameter.select do |param|
param.name == 'questionnaire-response'
end
qr_params_count = questionnaire_response_params.length
assert qr_params_count == 1,
"Input parameter must contain one `parameter:questionnaire-response` slice. Found #{qr_params_count}"
questionnaire_response = questionnaire_response_params.first.resource
assert_resource_type(:questionnaire_response, resource: questionnaire_response)
end
rescue Inferno::Exceptions::AssertionException => e
add_message('error', "Request #{index}: #{e.message}")
next
end
end
|