示例#1
0
    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)
示例#3
0
    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)
示例#7
0
    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)
示例#10
0
    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)
示例#11
0
    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())
示例#12
0
    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)
示例#14
0
 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