def test_organization_extension_update(self): # confirm clearing one of several extensions works self.promote_user(role_name=ROLE.ADMIN.value) self.login() en_AU = LocaleConstants().AustralianEnglish # Populate db with complete org, and set many fields org = Organization(name='test', phone='800-800-5665', timezone='US/Pacific') org.identifiers.append( Identifier(value='state:NY', system=PRACTICE_REGION)) org.locales.append(en_AU) org.default_locale = 'en_AU' rp = ResearchProtocol(name='rp1') with SessionScope(db): db.session.add(rp) db.session.add(org) db.session.commit() org, rp = map(db.session.merge, (org, rp)) org_id, rp_id = org.id, rp.id org.research_protocols.append(rp) data = org.as_fhir() input = { k: v for k, v in data.items() if k in ('name', 'resourceType') } # Replace locale extension with null value, copy # over others. input['extension'] = [ e for e in data['extension'] if e['url'] != LocaleExtension.extension_url ] input['extension'].append({'url': LocaleExtension.extension_url}) response = self.client.put('/api/organization/{}'.format(org_id), content_type='application/json', data=json.dumps(input)) assert response.status_code == 200 # Pull the updated db entry org = Organization.query.get(org_id) en_AU = db.session.merge(en_AU) # Confirm all the unmentioned entries survived assert org.phone == '800-800-5665' assert org.default_locale == 'en_AU' assert org.locales.count() == 0 assert org.timezone == 'US/Pacific' assert org.research_protocol(as_of_date=datetime.utcnow()).id == rp_id # Confirm empty extension isn't included in result results = response.json for e in results['extension']: assert 'url' in e assert len(e.keys()) > 1
def test_organization_extension_update(self): # confirm clearing one of several extensions works self.promote_user(role_name=ROLE.ADMIN.value) self.login() en_AU = LocaleConstants().AustralianEnglish # Populate db with complete org, and set many fields org = Organization( name='test', phone='800-800-5665', timezone='US/Pacific') org.identifiers.append(Identifier( value='state:NY', system=PRACTICE_REGION)) org.locales.append(en_AU) org.default_locale = 'en_AU' rp = ResearchProtocol(name='rp1') with SessionScope(db): db.session.add(rp) db.session.add(org) db.session.commit() org, rp = map(db.session.merge, (org, rp)) org_id, rp_id = org.id, rp.id org.research_protocols.append(rp) data = org.as_fhir() input = {k: v for k, v in data.items() if k in ( 'name', 'resourceType')} # Replace locale extension with null value, copy # over others. input['extension'] = [ e for e in data['extension'] if e['url'] != LocaleExtension.extension_url] input['extension'].append({'url': LocaleExtension.extension_url}) response = self.client.put( '/api/organization/{}'.format(org_id), content_type='application/json', data=json.dumps(input)) assert response.status_code == 200 # Pull the updated db entry org = Organization.query.get(org_id) en_AU = db.session.merge(en_AU) # Confirm all the unmentioned entries survived assert org.phone == '800-800-5665' assert org.default_locale == 'en_AU' assert org.locales.count() == 0 assert org.timezone == 'US/Pacific' assert org.research_protocol(as_of_date=datetime.utcnow()).id == rp_id # Confirm empty extension isn't included in result results = response.json for e in results['extension']: assert 'url' in e assert len(e.keys()) > 1
def test_rp_inheritance(self): rp = ResearchProtocol(name="test_rp") with SessionScope(db): db.session.add(rp) db.session.commit() rp = db.session.merge(rp) parent = Organization(name='parent', id=101) parent.research_protocols.append(rp) child = Organization(name='child', partOf_id=101) with SessionScope(db): db.session.add(parent) db.session.add(child) db.session.commit() parent, child, rp = map(db.session.merge, (parent, child, rp)) self.assertEqual(1, len(parent.research_protocols)) self.assertEqual(parent.research_protocols[0].id, rp.id) self.assertEqual(0, len(child.research_protocols)) self.assertEqual(child.research_protocol(as_of_date=datetime.utcnow()).id, rp.id)
def test_rp_inheritance(self): rp = ResearchProtocol(name="test_rp") with SessionScope(db): db.session.add(rp) db.session.commit() rp = db.session.merge(rp) parent = Organization(name='parent', id=101) parent.research_protocols.append(rp) child = Organization(name='child', partOf_id=101) with SessionScope(db): db.session.add(parent) db.session.add(child) db.session.commit() parent, child, rp = map(db.session.merge, (parent, child, rp)) assert len(parent.research_protocols) == 1 assert parent.research_protocols[0].id == rp.id assert len(child.research_protocols) == 0 assert (child.research_protocol(as_of_date=datetime.utcnow()).id == rp.id)