コード例 #1
0
    def test_extra_delete_204(self):
        names = [LocalizedTextFactory()]
        concept = ConceptFactory(parent=self.source,
                                 names=names,
                                 extras=dict(foo='bar', tao='ching'))
        self.assertEqual(concept.versions.count(), 1)

        def extra_url(extra):
            return "/orgs/{}/sources/{}/concepts/{}/extras/{}/".format(
                self.organization.mnemonic, self.source.mnemonic,
                concept.mnemonic, extra)

        response = self.client.delete(extra_url('tao'),
                                      HTTP_AUTHORIZATION='Token ' + self.token,
                                      format='json')

        self.assertEqual(response.status_code, 204)

        concept.refresh_from_db()
        self.assertFalse('tao' in concept.extras)
        self.assertEqual(concept.versions.count(), 2)

        latest_version = concept.get_latest_version()
        self.assertEqual(latest_version.extras, dict(foo='bar'))
        self.assertEqual(latest_version.comment, 'Deleted extra tao.')
コード例 #2
0
    def test_extra_put_200(self):
        names = [LocalizedTextFactory()]
        concept = ConceptFactory(parent=self.source,
                                 names=names,
                                 extras=dict(foo='bar', tao='ching'))

        def extra_url(extra):
            return "/orgs/{}/sources/{}/concepts/{}/extras/{}/".format(
                self.organization.mnemonic, self.source.mnemonic,
                concept.mnemonic, extra)

        response = self.client.put(extra_url('tao'),
                                   dict(tao='te-ching'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)

        concept.refresh_from_db()
        self.assertTrue(
            concept.extras['tao'] == response.data['tao'] == 'te-ching')
        self.assertEqual(concept.versions.count(), 2)

        latest_version = concept.versions.order_by('-created_at').first()
        self.assertEqual(latest_version.extras, dict(foo='bar',
                                                     tao='te-ching'))
        self.assertEqual(latest_version.comment,
                         'Updated extras: tao=te-ching.')
コード例 #3
0
    def test_post_202(self):
        concept = ConceptFactory()
        old_updated_at = concept.updated_at
        url = '/indexes/resources/concepts/'

        response = self.client.post(url, dict(ids='{}'.format(concept.mnemonic)), HTTP_AUTHORIZATION=self.token_header)

        self.assertEqual(response.status_code, 202)
        concept.refresh_from_db()
        self.assertNotEqual(old_updated_at, concept.updated_at)
コード例 #4
0
    def test_put_200(self):
        concept = ConceptFactory(parent=self.source)
        self.assertEqual(concept.versions.count(), 1)
        concepts_url = "/orgs/{}/sources/{}/concepts/{}/".format(
            self.organization.mnemonic, self.source.mnemonic, concept.mnemonic)

        response = self.client.put(concepts_url, {
            **self.concept_payload, 'datatype': 'None',
            'update_comment': 'Updated datatype'
        },
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertListEqual(list(response.data.keys()), [
            'uuid', 'id', 'external_id', 'concept_class', 'datatype', 'url',
            'retired', 'source', 'owner', 'owner_type', 'owner_url',
            'display_name', 'display_locale', 'names', 'descriptions',
            'created_on', 'updated_on', 'versions_url', 'version', 'extras',
            'name', 'type', 'update_comment', 'version_url', 'mappings',
            'updated_by', 'created_by', 'internal_reference_id',
            'parent_concept_urls', 'child_concept_urls'
        ])

        version = Concept.objects.last()
        concept.refresh_from_db()

        self.assertFalse(version.is_versioned_object)
        self.assertTrue(version.is_latest_version)
        self.assertEqual(version.versions.count(), 2)
        self.assertEqual(response.data['uuid'], str(version.id))
        self.assertEqual(response.data['datatype'], 'None')
        self.assertEqual(response.data['update_comment'], 'Updated datatype')
        self.assertEqual(response.data['concept_class'], 'Procedure')
        self.assertEqual(response.data['url'], concept.uri)
        self.assertEqual(response.data['url'], version.versioned_object.uri)
        self.assertEqual(response.data['version_url'], version.uri)
        self.assertFalse(response.data['retired'])
        self.assertEqual(response.data['source'], self.source.mnemonic)
        self.assertEqual(response.data['owner'], self.organization.mnemonic)
        self.assertEqual(response.data['owner_type'], "Organization")
        self.assertEqual(response.data['owner_url'], self.organization.uri)
        self.assertEqual(response.data['display_name'], 'c1 name')
        self.assertEqual(response.data['display_locale'], 'en')
        self.assertEqual(response.data['versions_url'],
                         concept.uri + 'versions/')
        self.assertEqual(response.data['version'], str(version.id))
        self.assertEqual(response.data['extras'], dict(foo='bar'))
        self.assertEqual(response.data['type'], 'Concept')
        self.assertEqual(response.data['version_url'], version.uri)
        self.assertEqual(response.data['mappings'], [])
        self.assertTrue(concept.is_versioned_object)
        self.assertEqual(concept.datatype, "None")
コード例 #5
0
ファイル: tests.py プロジェクト: ibacher/oclapi2
    def test_concept_access_changes_with_source(self):
        source = OrganizationSourceFactory(version=HEAD)
        self.assertEqual(source.public_access, ACCESS_TYPE_EDIT)
        concept = ConceptFactory(parent=source, public_access=ACCESS_TYPE_EDIT)

        self.assertEqual(concept.public_access, ACCESS_TYPE_EDIT)

        source.public_access = ACCESS_TYPE_VIEW
        source.save()
        concept.refresh_from_db()

        self.assertEqual(source.public_access, ACCESS_TYPE_VIEW)
        self.assertEqual(source.public_access, concept.public_access)
コード例 #6
0
ファイル: tests.py プロジェクト: OpenConceptLab/oclapi2
    def test_source_active_inactive_should_affect_children(self):
        source = OrganizationSourceFactory(is_active=True)
        concept = ConceptFactory(parent=source, is_active=True)

        source.is_active = False
        source.save()
        concept.refresh_from_db()

        self.assertFalse(source.is_active)
        self.assertFalse(concept.is_active)

        source.is_active = True
        source.save()
        concept.refresh_from_db()

        self.assertTrue(source.is_active)
        self.assertTrue(concept.is_active)
コード例 #7
0
    def test_extra_put_400(self):
        names = [LocalizedTextFactory()]
        concept = ConceptFactory(parent=self.source,
                                 names=names,
                                 extras=dict(foo='bar', tao='ching'))

        def extra_url(extra):
            return "/orgs/{}/sources/{}/concepts/{}/extras/{}/".format(
                self.organization.mnemonic, self.source.mnemonic,
                concept.mnemonic, extra)

        response = self.client.put(extra_url('tao'),
                                   dict(tao=None),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.data, ['Must specify tao param in body.'])
        concept.refresh_from_db()
        self.assertEqual(concept.extras, dict(foo='bar', tao='ching'))
コード例 #8
0
    def test_delete_204(self):
        names = [LocalizedTextFactory()]
        concept = ConceptFactory(parent=self.source, names=names)
        concepts_url = "/orgs/{}/sources/{}/concepts/{}/".format(
            self.organization.mnemonic, self.source.mnemonic, concept.mnemonic)

        response = self.client.delete(concepts_url,
                                      {'update_comment': 'Deleting it'},
                                      HTTP_AUTHORIZATION='Token ' + self.token,
                                      format='json')

        self.assertEqual(response.status_code, 204)

        concept.refresh_from_db()

        self.assertEqual(concept.versions.count(), 2)
        latest_version = concept.versions.order_by('-created_at').first()
        self.assertTrue(latest_version.retired)
        self.assertTrue(concept.retired)
        self.assertTrue(latest_version.comment, 'Deleting it')
コード例 #9
0
class ConceptExtraRetrieveUpdateDestroyViewTest(OCLAPITestCase):
    def setUp(self):
        super().setUp()
        self.extras = dict(foo='bar', tao='ching')
        self.concept = ConceptFactory(extras=self.extras,
                                      names=[LocalizedTextFactory()])
        self.user = UserProfileFactory(
            organizations=[self.concept.parent.organization])
        self.token = self.user.get_token()

    def test_get_200(self):
        response = self.client.get(self.concept.uri + 'extras/foo/',
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(foo='bar'))

    def test_get_404(self):
        response = self.client.get(self.concept.uri + 'extras/bar/',
                                   format='json')

        self.assertEqual(response.status_code, 404)

    def test_put_200(self):
        self.assertEqual(self.concept.versions.count(), 1)
        self.assertEqual(self.concept.get_latest_version().extras, self.extras)
        self.assertEqual(self.concept.extras, self.extras)

        response = self.client.put(self.concept.uri + 'extras/foo/',
                                   dict(foo='foobar'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(response.data, dict(foo='foobar'))
        self.assertEqual(self.concept.versions.count(), 2)
        self.assertEqual(self.concept.get_latest_version().extras,
                         dict(foo='foobar', tao='ching'))
        self.concept.refresh_from_db()
        self.assertEqual(self.concept.extras, dict(foo='foobar', tao='ching'))

    def test_put_400(self):
        self.assertEqual(self.concept.versions.count(), 1)
        self.assertEqual(self.concept.get_latest_version().extras, self.extras)
        self.assertEqual(self.concept.extras, self.extras)

        response = self.client.put(self.concept.uri + 'extras/foo/',
                                   dict(tao='foobar'),
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 400)
        self.assertEqual(response.data, ['Must specify foo param in body.'])
        self.assertEqual(self.concept.versions.count(), 1)
        self.assertEqual(self.concept.get_latest_version().extras, self.extras)
        self.concept.refresh_from_db()
        self.assertEqual(self.concept.extras, self.extras)

    def test_delete_204(self):
        self.assertEqual(self.concept.versions.count(), 1)
        self.assertEqual(self.concept.get_latest_version().extras, self.extras)
        self.assertEqual(self.concept.extras, self.extras)

        response = self.client.delete(self.concept.uri + 'extras/foo/',
                                      HTTP_AUTHORIZATION='Token ' + self.token,
                                      format='json')

        self.assertEqual(response.status_code, 204)
        self.assertEqual(self.concept.versions.count(), 2)
        self.assertEqual(self.concept.get_latest_version().extras,
                         dict(tao='ching'))
        self.assertEqual(self.concept.versions.first().extras,
                         dict(foo='bar', tao='ching'))
        self.concept.refresh_from_db()
        self.assertEqual(self.concept.extras, dict(tao='ching'))
コード例 #10
0
    def test_put_200_openmrs_schema(self):  # pylint: disable=too-many-statements
        self.create_lookup_concept_classes()
        source = OrganizationSourceFactory(
            custom_validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS)
        name = LocalizedTextFactory(locale='fr')
        concept = ConceptFactory(parent=source, names=[name])
        self.assertEqual(concept.versions.count(), 1)
        response = self.client.put(concept.uri, {
            **self.concept_payload, 'datatype': 'None',
            'update_comment': 'Updated datatype'
        },
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)
        self.assertListEqual(list(response.data.keys()), [
            'uuid', 'id', 'external_id', 'concept_class', 'datatype', 'url',
            'retired', 'source', 'owner', 'owner_type', 'owner_url',
            'display_name', 'display_locale', 'names', 'descriptions',
            'created_on', 'updated_on', 'versions_url', 'version', 'extras',
            'name', 'type', 'update_comment', 'version_url', 'mappings',
            'updated_by', 'created_by', 'internal_reference_id',
            'parent_concept_urls', 'child_concept_urls'
        ])

        names = response.data['names']

        version = Concept.objects.last()
        concept.refresh_from_db()

        self.assertFalse(version.is_versioned_object)
        self.assertTrue(version.is_latest_version)
        self.assertEqual(version.versions.count(), 2)
        self.assertEqual(response.data['uuid'], str(version.id))
        self.assertEqual(response.data['datatype'], 'None')
        self.assertEqual(response.data['update_comment'], 'Updated datatype')
        self.assertEqual(response.data['concept_class'], 'Procedure')
        self.assertEqual(response.data['url'], concept.uri)
        self.assertEqual(response.data['url'], version.versioned_object.uri)
        self.assertEqual(response.data['version_url'], version.uri)
        self.assertFalse(response.data['retired'])
        self.assertEqual(response.data['source'], source.mnemonic)
        self.assertEqual(response.data['owner'], source.organization.mnemonic)
        self.assertEqual(response.data['owner_type'], "Organization")
        self.assertEqual(response.data['owner_url'], source.organization.uri)
        self.assertEqual(response.data['display_name'], 'c1 name')
        self.assertEqual(response.data['display_locale'], 'en')
        self.assertEqual(response.data['versions_url'],
                         concept.uri + 'versions/')
        self.assertEqual(response.data['version'], str(version.id))
        self.assertEqual(response.data['extras'], dict(foo='bar'))
        self.assertEqual(response.data['type'], 'Concept')
        self.assertEqual(response.data['version_url'], version.uri)
        self.assertEqual(response.data['mappings'], [])
        self.assertTrue(concept.is_versioned_object)
        self.assertEqual(concept.datatype, "None")

        # same names in update
        names[0]['uuid'] = str(name.id)
        [name.pop('type', None) for name in names]  # pylint: disable=expression-not-assigned
        response = self.client.put(concept.uri, {
            **self.concept_payload, 'names': names,
            'datatype': 'Numeric',
            'update_comment': 'Updated datatype'
        },
                                   HTTP_AUTHORIZATION='Token ' + self.token,
                                   format='json')

        self.assertEqual(response.status_code, 200)

        concept.refresh_from_db()
        self.assertEqual(concept.datatype, "Numeric")
        self.assertEqual(concept.names.count(), 1)

        latest_version = concept.get_latest_version()
        prev_version = latest_version.prev_version
        self.assertEqual(latest_version.names.count(), 1)
        self.assertEqual(prev_version.names.count(), 1)
        self.assertEqual(prev_version.names.first().name,
                         latest_version.names.first().name)
        self.assertEqual(prev_version.names.first().locale,
                         latest_version.names.first().locale)