Skip to content

Commit

Permalink
add some r4 tests
Browse files Browse the repository at this point in the history
  • Loading branch information
radamson committed Apr 11, 2019
1 parent 395f73b commit c569622
Showing 1 changed file with 144 additions and 13 deletions.
157 changes: 144 additions & 13 deletions test/unit/multiversion_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,21 @@ def test_dstu2_patient_manual
assert client.read(FHIR::DSTU2::Patient, 'foo').resource.is_a?(FHIR::DSTU2::Patient)
end


def test_r4_patient_manual
stub_request(:get, /r4/).to_return(body: FHIR::Patient.new({ 'id': 'foo' }).to_json)
client = FHIR::Client.new('r4')
client.default_json
client.use_r4
assert_equal :r4, client.fhir_version
assert client.read(FHIR::Patient, 'foo').resource.is_a?(FHIR::Patient)
end

def test_stu3_patient_klass_access
stub_request(:get, /stu3/).to_return(body: FHIR::STU3::Patient.new.to_json)
client = FHIR::Client.new('stu3')
client.default_json
FHIR::Model.client = client
FHIR::STU3::Model.client = client
assert FHIR::STU3::Patient.read('foo').is_a?(FHIR::STU3::Patient)
end

Expand All @@ -63,6 +73,15 @@ def test_dstu2_patient_klass_access
assert FHIR::DSTU2::Patient.read('foo').is_a?(FHIR::DSTU2::Patient)
end

def test_r4_patient_klass_access
stub_request(:get, /r4/).to_return(body: FHIR::Patient.new({ 'id': 'foo' }).to_json)
client = FHIR::Client.new('r4')
client.default_json
client.use_r4
FHIR::Model.client = client
assert FHIR::Patient.read('foo').is_a?(FHIR::Patient)
end

def test_dstu2_reply_fhir_version
stub_request(:get, /dstu2/).to_return(body: FHIR::DSTU2::Patient.new({ 'id': 'foo' }).to_json)
client = FHIR::Client.new('dstu2')
Expand All @@ -74,9 +93,18 @@ def test_dstu2_reply_fhir_version
end

def test_stu3_reply_fhir_version
stub_request(:get, /stu3/).to_return(body: FHIR::Patient.new({ 'id': 'foo' }).to_json)
stub_request(:get, /stu3/).to_return(body: FHIR::STU3::Patient.new({ 'id': 'foo' }).to_json)
client = FHIR::Client.new('stu3')
client.default_json
FHIR::STU3::Model.client = client
patient = FHIR::STU3::Patient.read('foo')
assert_equal :stu3, client.reply.fhir_version
end

def test_r4_reply_fhir_version
stub_request(:get, /r4/).to_return(body: FHIR::Patient.new({ 'id': 'foo' }).to_json)
client = FHIR::Client.new('r4')
client.default_json
FHIR::Model.client = client
patient = FHIR::Patient.read('foo')
assert_equal :stu3, client.reply.fhir_version
Expand All @@ -90,12 +118,12 @@ def test_stu3_accept_mime_type_json
assert_equal 'application/fhir+json', client.read(FHIR::STU3::Patient, 'foo').request[:headers]['Accept']
end

def test_stu3_content_type_mime_type_json
stub_request(:post, /stu3/).to_return(body: FHIR::STU3::Patient.new({'id': 'foo'}).to_json)
client = FHIR::Client.new('stu3')
def test_r4_accept_mime_type_json
stub_request(:get, /r4/).to_return(body: FHIR::Patient.new({'id': 'foo'}).to_json)
client = FHIR::Client.new('r4')
client.default_json
assert_equal :stu3, client.fhir_version
assert client.create(FHIR::STU3::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/fhir+json')
assert_equal 'application/fhir+json', client.read(FHIR::Patient, 'foo').request[:headers]['Accept']
end

def test_dstu2_accept_mime_type_json
Expand All @@ -108,6 +136,15 @@ def test_dstu2_accept_mime_type_json
assert_equal 'application/json+fhir', client.read(FHIR::DSTU2::Patient, 'foo').request[:headers]['Accept']
end

def test_stu3_content_type_mime_type_json
stub_request(:post, /stu3/).to_return(body: FHIR::STU3::Patient.new({'id': 'foo'}).to_json)
client = FHIR::Client.new('stu3')
client.default_json
assert_equal :stu3, client.fhir_version
assert client.create(FHIR::STU3::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/fhir+json')
end


def test_dstu2_content_type_mime_type_json
stub_request(:post, /dstu2/).to_return(body: FHIR::DSTU2::Patient.new({'id': 'foo'}).to_json)
client = FHIR::Client.new('dstu2')
Expand All @@ -118,6 +155,15 @@ def test_dstu2_content_type_mime_type_json
assert client.create(FHIR::DSTU2::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/json+fhir')
end

def test_r4_content_type_mime_type_json
stub_request(:post, /r4/).to_return(body: FHIR::Patient.new({'id': 'foo'}).to_json)
client = FHIR::Client.new('r4')
client.default_json
client.use_r4
assert_equal :r4, client.fhir_version
assert client.create(FHIR::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/fhir+json')
end

def test_stu3_accept_mime_type_xml
stub_request(:get, /stu3/).to_return(body: FHIR::STU3::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('stu3')
Expand All @@ -126,24 +172,45 @@ def test_stu3_accept_mime_type_xml
assert_equal 'application/fhir+xml', client.read(FHIR::STU3::Patient, 'foo').request[:headers]['Accept']
end

def test_dstu2_accept_mime_type_xml
stub_request(:get, /dstu2/).to_return(body: FHIR::DSTU2::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('dstu2')
client.default_xml
client.use_dstu2
assert_equal :dstu2, client.fhir_version
# dstu2 fhir type was changed in stu3
assert_equal 'application/xml+fhir', client.read(FHIR::DSTU2::Patient, 'foo').request[:headers]['Accept']
end

def test_r4_accept_mime_type_xml
stub_request(:get, /r4/).to_return(body: FHIR::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_r4
assert_equal :r4, client.fhir_version
# dstu2 fhir type was changed in stu3
assert_equal 'application/fhir+xml', client.read(FHIR::Patient, 'foo').request[:headers]['Accept']
end

def test_stu3_content_type_mime_type_xml
stub_request(:post, /stu3/).to_return(body: FHIR::STU3::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('stu3')
client.default_xml
client.use_stu3
assert_equal :stu3, client.fhir_version
assert client.create(FHIR::STU3::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/fhir+xml')
end

def test_dstu2_accept_mime_type_xml
stub_request(:get, /dstu2/).to_return(body: FHIR::DSTU2::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('dstu2')
def test_r4_content_type_mime_type_xml
stub_request(:post, /r4/).to_return(body: FHIR::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_dstu2
assert_equal :dstu2, client.fhir_version
# dstu2 fhir type was changed in stu3
assert_equal 'application/xml+fhir', client.read(FHIR::DSTU2::Patient, 'foo').request[:headers]['Accept']
client.use_r4
assert_equal :r4, client.fhir_version
assert client.create(FHIR::Patient.new({'id': 'foo'})).request[:headers]['Content-Type'].include?('application/fhir+xml')
end


def test_dstu2_content_type_mime_type_xml
stub_request(:post, /dstu2/).to_return(body: FHIR::DSTU2::Patient.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('dstu2')
Expand Down Expand Up @@ -181,6 +248,20 @@ def test_stu3_transaction
assert reply.resource.is_a?(FHIR::STU3::Bundle)
end

def test_r4_transaction
stub_request(:post, /r4/).to_return(body: FHIR::Bundle.new({'id': 'foo'}).to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_r4
client.begin_transaction
client.add_transaction_request('GET', 'Patient/foo')
client.add_transaction_request('POST', nil, FHIR::Observation.new({'id': 'foo'}))
reply = client.end_transaction
assert_equal :r4, reply.fhir_version
assert_equal 'application/fhir+xml', reply.request[:headers]['Accept']
assert reply.resource.is_a?(FHIR::Bundle)
end

def test_dstu2_patient_record
bundle = FHIR::DSTU2::Bundle.new({'id': 'foo'})
bundle.entry << FHIR::DSTU2::Bundle::Entry.new
Expand Down Expand Up @@ -210,6 +291,21 @@ def test_stu3_patient_record
assert reply.resource.entry.last.resource.is_a?(FHIR::STU3::Patient)
end

def test_r4_patient_record
bundle = FHIR::Bundle.new({'id': 'foo'})
bundle.entry << FHIR::Bundle::Entry.new
bundle.entry.last.resource = FHIR::Patient.new({'id': 'example-patient'})
stub_request(:get, 'http:https://r4/Patient/example-patient/$everything').to_return(body: bundle.to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_r4
reply = client.fetch_patient_record('example-patient')
assert_equal :r4, reply.fhir_version
assert_equal 'application/fhir+xml', reply.request[:headers]['Accept']
assert reply.resource.is_a?(FHIR::Bundle)
assert reply.resource.entry.last.resource.is_a?(FHIR::Patient)
end

def test_dstu2_encounter_record
bundle = FHIR::DSTU2::Bundle.new({'id': 'foo'})
bundle.entry << FHIR::DSTU2::Bundle::Entry.new
Expand Down Expand Up @@ -239,6 +335,21 @@ def test_stu3_encounter_record
assert reply.resource.entry.last.resource.is_a?(FHIR::STU3::Encounter)
end

def test_r4_encounter_record
bundle = FHIR::Bundle.new({'id': 'foo'})
bundle.entry << FHIR::Bundle::Entry.new
bundle.entry.last.resource = FHIR::Encounter.new({'id': 'example-encounter'})
stub_request(:get, 'http:https://r4/Encounter/example-encounter/$everything').to_return(body: bundle.to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_r4
reply = client.fetch_encounter_record('example-encounter')
assert_equal :r4, reply.fhir_version
assert_equal 'application/fhir+xml', reply.request[:headers]['Accept']
assert reply.resource.is_a?(FHIR::Bundle)
assert reply.resource.entry.last.resource.is_a?(FHIR::Encounter)
end

def test_dstu2_terminology_valueset_lookup
stub_request(:post, /dstu2/).to_return(body: FHIR::DSTU2::Parameters.new({'id': 'results'}).to_xml)
client = FHIR::Client.new('dstu2')
Expand Down Expand Up @@ -278,4 +389,24 @@ def test_stu3_terminology_code_system_lookup
assert reply.resource.is_a?(FHIR::STU3::Parameters)
end

def test_r4_terminology_code_system_lookup
stub_request(:post, /r4/).to_return(body: FHIR::Parameters.new({'id': 'results'}).to_xml)
client = FHIR::Client.new('r4')
client.default_xml
client.use_r4
options = {
:operation => {
:method => :get,
:parameters => {
'code' => { type: 'Code', value: 'chol-mmol' },
'system' => { type: 'Uri', value: 'http:https://hl7.org/fhir/CodeSystem/example-crucible' }
}
}
}
reply = client.code_system_lookup(options)
assert_equal :r4, reply.fhir_version
assert_equal 'application/fhir+xml', reply.request[:headers]['Accept']
assert reply.resource.is_a?(FHIR::Parameters)
end

end

0 comments on commit c569622

Please sign in to comment.