def test_import_concepts_into_openmrs_validated_source_with_valid_records( self): test_file = open( './integration_tests/fixtures/concepts_for_openmrs_validation.json', 'rb') stderr_stub = TestStream() user = create_user() source = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) importer = ConceptsImporter(source, test_file, 'test', TestStream(), stderr_stub, save_validation_errors=False) importer.import_concepts(total=5) self.assertTrue(OPENMRS_MUST_HAVE_EXACTLY_ONE_PREFERRED_NAME in stderr_stub.getvalue()) self.assertTrue( OPENMRS_SHORT_NAME_CANNOT_BE_PREFERRED in stderr_stub.getvalue()) self.assertTrue( OPENMRS_SHORT_NAME_CANNOT_BE_PREFERRED in stderr_stub.getvalue()) self.assertTrue(OPENMRS_NAMES_EXCEPT_SHORT_MUST_BE_UNIQUE in stderr_stub.getvalue()) self.assertEquals( 2, Concept.objects.exclude( concept_class__in=LOOKUP_CONCEPT_CLASSES).count()) self.assertEquals( 2, ConceptVersion.objects.exclude( concept_class__in=LOOKUP_CONCEPT_CLASSES).count())
def test_concept_should_have_exactly_one_preferred_name_per_locale_negative( self): user = create_user() source_with_open_mrs = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = { 'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic } data = json.dumps( open_mrs_concept_template({ "names": [{ "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED", "locale_preferred": True }, { "name": "grip2", "locale": 'en', "name_type": "FULLY_SPECIFIED", "locale_preferred": True }] })) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
def test_import_concepts_into_openmrs_validated_source_with_valid_records( self): test_file = open( './integration_tests/fixtures/concepts_for_openmrs_validation.json', 'rb') stderr_stub = TestStream() user = create_user() source = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) importer = ConceptsImporter(source, test_file, 'test', TestStream(), stderr_stub) importer.import_concepts(total=5) self.assertTrue( "Custom validation rules require a concept to have exactly one preferred name" in stderr_stub.getvalue()) self.assertTrue( "Custom validation rules require a preferred name to be different than a short name" in stderr_stub.getvalue()) self.assertTrue( "Custom validation rules require a preferred name not to be an index/search term" in stderr_stub.getvalue()) self.assertTrue( "Custom validation rules require all names except type=SHORT to be unique" in stderr_stub.getvalue()) self.assertEquals( 2, Concept.objects.exclude(concept_class='Concept Class').count()) self.assertEquals( 2, ConceptVersion.objects.exclude( concept_class='Concept Class').count())
def test_name_should_be_unique_unless_short_term_positive(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = {'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic} data = json.dumps(open_mrs_concept_template( {"names": [{ "name": "grip", "locale": 'en', "name_type": "SHORT" }, { "name": "grip", "locale": 'en', "name_type": "SHORT" }, { "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED" }] } )) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def test_name_should_be_unique_unless_short_term_positive(self): user = create_user() source_with_open_mrs = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = { 'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic } data = json.dumps( open_mrs_concept_template({ "names": [{ "name": "grip", "locale": 'en', "name_type": "SHORT" }, { "name": "grip", "locale": 'en', "name_type": "SHORT" }, { "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED" }] })) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def test_concept_should_have_exactly_one_preferred_name_per_locale_negative(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = {'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic} data = json.dumps(open_mrs_concept_template( {"names": [{ "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED", "locale_preferred": True }, { "name": "grip2", "locale": 'en', "name_type": "FULLY_SPECIFIED", "locale_preferred": True }] } )) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
def test_create_concept_without_description_negative(self): user = create_user() source_with_open_mrs = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = { 'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic } data = json.dumps({ "id": "12399000", "concept_class": "conceptclass", "names": [{ "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED" }] }) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
def create_source_and_user_fixture(self): user = create_user() source_with_open_mrs = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) return source_with_open_mrs, user
def test_concepts_should_have_unique_fully_specified_name_per_locale_positive(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = {'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic} data = json.dumps(open_mrs_concept_template()) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def test_concept_id_should_allow_underscore_positive(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = {'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic} data = json.dumps(underscore_concept_template()) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_201_CREATED)
def test_import_concepts_into_openmrs_validated_source_with_valid_records(self): test_file = open('./integration_tests/fixtures/concepts_for_openmrs_validation.json', 'rb') stderr_stub = TestStream() user = create_user() source = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) importer = ConceptsImporter(source, test_file, 'test', TestStream(), stderr_stub) importer.import_concepts(total=5) self.assertTrue("Custom validation rules require a concept to have exactly one preferred name" in stderr_stub.getvalue()) self.assertTrue("Custom validation rules require a preferred name to be different than a short name" in stderr_stub.getvalue()) self.assertTrue("Custom validation rules require a preferred name not to be an index/search term" in stderr_stub.getvalue()) self.assertTrue("Custom validation rules require all names except type=SHORT to be unique" in stderr_stub.getvalue()) self.assertEquals(2, Concept.objects.count()) self.assertEquals(2, ConceptVersion.objects.count())
def test_import_concepts_into_openmrs_validated_source_with_valid_records(self): test_file = open("./integration_tests/fixtures/concepts_for_openmrs_validation.json", "rb") stderr_stub = TestStream() user = create_user() source = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) importer = ConceptsImporter(source, test_file, "test", TestStream(), stderr_stub, save_validation_errors=False) importer.import_concepts(total=5) self.assertTrue(OPENMRS_MUST_HAVE_EXACTLY_ONE_PREFERRED_NAME in stderr_stub.getvalue()) self.assertTrue(OPENMRS_SHORT_NAME_CANNOT_BE_PREFERRED in stderr_stub.getvalue()) self.assertTrue(OPENMRS_SHORT_NAME_CANNOT_BE_PREFERRED in stderr_stub.getvalue()) self.assertTrue(OPENMRS_NAMES_EXCEPT_SHORT_MUST_BE_UNIQUE in stderr_stub.getvalue()) self.assertEquals(2, Concept.objects.exclude(concept_class__in=LOOKUP_CONCEPT_CLASSES).count()) self.assertEquals(2, ConceptVersion.objects.exclude(concept_class__in=LOOKUP_CONCEPT_CLASSES).count())
def test_create_concept_without_description_negative(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) kwargs = {'org': self.org1.mnemonic, 'source': source_with_open_mrs.mnemonic} data = json.dumps({ "id": "12399000", "concept_class": "conceptclass", "names": [{ "name": "grip", "locale": 'en', "name_type": "FULLY_SPECIFIED" }] }) response = self.client.post(reverse('concept-create', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.status_code, status.HTTP_400_BAD_REQUEST)
def create_source_and_user_fixture(self): user = create_user() source_with_open_mrs = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS, organization=self.org1) self.client.login(username=user.username, password=user.password) return source_with_open_mrs, user