Ejemplo n.º 1
0
    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)