def test_post_without_to_and_from_concept_url_201(self): source = UserSourceFactory(user=self.user, mnemonic='source') response = self.client.post( source.mappings_url, { "map_type": "Same As", "from_source_url": source.uri, "from_source_version": "2.46", "from_concept_code": "32700-7", "from_concept_name": "Microscopic observation [Identifier] in Blood by Malaria smear", "to_source_url": "/orgs/WHO/sources/ICPC-2/", "to_source_version": "v11", "to_concept_code": "A73", "to_concept_name": "Malaria" }, HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 201) self.assertEqual(response.data['from_source_url'], source.uri) self.assertEqual(response.data['from_source_version'], '2.46') self.assertEqual(response.data['from_concept_code'], '32700-7') self.assertEqual( response.data['from_concept_name'], 'Microscopic observation [Identifier] in Blood by Malaria smear' ) self.assertEqual(response.data['to_source_url'], "/orgs/WHO/sources/ICPC-2/") self.assertEqual(response.data['to_source_version'], 'v11') self.assertEqual(response.data['to_concept_code'], 'A73') self.assertEqual(response.data['to_concept_name'], 'Malaria') mapping = source.mappings.first() self.assertIsNone(mapping.from_concept_id) self.assertIsNone(mapping.to_concept_id) self.assertIsNone(mapping.to_source_id) org = OrganizationFactory(mnemonic='WHO') source = OrganizationSourceFactory(organization=org, mnemonic='ICPC-2') source.update_mappings() mapping.refresh_from_db() self.assertEqual(mapping.to_source_url, source.uri) self.assertEqual(mapping.to_source, source) self.assertIsNone(mapping.to_concept) concept = ConceptFactory(parent=source, mnemonic='A73', names=[LocalizedTextFactory(name='Malaria Updated')]) concept.update_mappings() mapping.refresh_from_db() self.assertEqual(mapping.to_concept_code, 'A73') self.assertEqual(mapping.to_concept_name, 'Malaria') self.assertEqual(mapping.to_source, source) self.assertEqual(mapping.to_source, concept.parent) self.assertEqual(mapping.to_concept, concept)
def test_post_using_canonical_url_201(self): # pylint: disable=too-many-statements source = UserSourceFactory(user=self.user, mnemonic='source') response = self.client.post( source.mappings_url, { "map_type": "Same As", "from_source_url": "http://loinc.org", "from_source_version": "2.46", "from_concept_code": "32700-7", "from_concept_name": "Microscopic observation [Identifier] in Blood by Malaria smear", "to_source_url": "http://who.int/ICPC-2", "to_source_version": "v11", "to_concept_code": "A73", "to_concept_name": "Malaria" }, HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 201) self.assertEqual(response.data['from_source_url'], 'http://loinc.org') self.assertEqual(response.data['from_source_version'], '2.46') self.assertEqual(response.data['from_concept_code'], '32700-7') self.assertEqual( response.data['from_concept_name'], 'Microscopic observation [Identifier] in Blood by Malaria smear' ) self.assertEqual(response.data['to_source_url'], "http://who.int/ICPC-2") self.assertEqual(response.data['to_source_version'], 'v11') self.assertEqual(response.data['to_concept_code'], 'A73') self.assertEqual(response.data['to_concept_name'], 'Malaria') mapping = source.mappings.first() self.assertIsNone(mapping.from_concept_id) self.assertIsNone(mapping.to_concept_id) self.assertIsNone(mapping.to_source_id) to_source = OrganizationSourceFactory(canonical_url="http://who.int/ICPC-2") to_source.update_mappings() mapping.refresh_from_db() self.assertEqual(mapping.to_source_url, to_source.canonical_url) self.assertEqual(mapping.to_source, to_source) self.assertEqual(mapping.to_source_version, 'v11') concept = ConceptFactory(parent=to_source, mnemonic='A73', names=[LocalizedTextFactory(name='foobar')]) concept.update_mappings() mapping.refresh_from_db() self.assertEqual(mapping.to_concept, concept) self.assertTrue(mapping.to_concept_code == concept.mnemonic == 'A73') self.assertEqual(mapping.to_concept_name, 'Malaria') self.assertNotEqual(concept.display_name, 'Malaria') self.assertEqual(mapping.from_concept, None) self.assertEqual(mapping.from_source, None) from_source = OrganizationSourceFactory(canonical_url="http://loinc.org") from_source.update_mappings() mapping.refresh_from_db() self.assertTrue(mapping.from_source_url == from_source.canonical_url == "http://loinc.org") self.assertEqual(mapping.from_source_version, "2.46") self.assertEqual(mapping.from_source, from_source) concept = ConceptFactory(parent=from_source, mnemonic='32700-7', names=[LocalizedTextFactory(name='foobar')]) concept.update_mappings() mapping.refresh_from_db() self.assertEqual(mapping.from_concept, concept) self.assertTrue(mapping.from_concept_code == concept.mnemonic == '32700-7') self.assertEqual(mapping.from_concept_name, 'Microscopic observation [Identifier] in Blood by Malaria smear') self.assertNotEqual(concept.display_name, 'Microscopic observation [Identifier] in Blood by Malaria smear') # retrievals with lookups response = self.client.get( mapping.uri, HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertTrue('from_source' not in response.data) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupConcepts=false', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertTrue('from_source' not in response.data) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupConcepts=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertIsNotNone(response.data['from_concept']) self.assertIsNotNone(response.data['to_concept']) self.assertTrue('from_source' not in response.data) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupFromConcept=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertIsNotNone(response.data['from_concept']) self.assertTrue('to_concept' not in response.data) self.assertTrue('from_source' not in response.data) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupToConcept=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertIsNotNone(response.data['to_concept']) self.assertTrue('from_concept' not in response.data) self.assertTrue('from_source' not in response.data) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupSources=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertIsNotNone(response.data['from_source']) self.assertIsNotNone(response.data['to_source']) response = self.client.get( mapping.uri + '?lookupFromSource=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertIsNotNone(response.data['from_source']) self.assertTrue('to_source' not in response.data) response = self.client.get( mapping.uri + '?lookupToSource=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertIsNotNone(response.data['to_source']) self.assertTrue('from_source' not in response.data) response = self.client.get( mapping.uri + '?lookupFromSource=true&lookupToSource=true', HTTP_AUTHORIZATION='Token ' + self.token, ) self.assertEqual(response.status_code, 200) self.assertEqual(response.data['url'], mapping.uri) self.assertTrue('from_concept' not in response.data) self.assertTrue('to_concept' not in response.data) self.assertIsNotNone(response.data['from_source']) self.assertIsNotNone(response.data['to_source'])