From c5696220938dfc2e448dc90068ad151ccebf72a9 Mon Sep 17 00:00:00 2001 From: Reece Adamson Date: Thu, 11 Apr 2019 15:44:17 -0400 Subject: [PATCH] add some r4 tests --- test/unit/multiversion_test.rb | 157 ++++++++++++++++++++++++++++++--- 1 file changed, 144 insertions(+), 13 deletions(-) diff --git a/test/unit/multiversion_test.rb b/test/unit/multiversion_test.rb index 53704dae..e2aa8629 100644 --- a/test/unit/multiversion_test.rb +++ b/test/unit/multiversion_test.rb @@ -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 @@ -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') @@ -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 @@ -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 @@ -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') @@ -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') @@ -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') @@ -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 @@ -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://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 @@ -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://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') @@ -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://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