Пример #1
0
    async def test_referenced_entity_declaration_resolution(self):
        corpus = CdmCorpusDefinition()
        corpus.ctx.report_at_level = CdmStatusLevel.WARNING
        corpus.storage.mount('cdm', LocalAdapter(root='../../schemaDocuments'))
        corpus.storage.default_namespace = 'cdm'

        manifest = CdmManifestDefinition(corpus.ctx, 'manifest')

        manifest.entities.append(
            'Account', 'cdm:/core/applicationCommon/foundationCommon/crmCommon/accelerators/healthCare/electronicMedicalRecords/Account.cdm.json/Account')

        referenced_entity_path = \
            'cdm:/core/applicationCommon/foundationCommon/crmCommon/accelerators/healthCare/electronicMedicalRecords/electronicMedicalRecords.manifest.cdm.json/Address'
        referenced_entity = CdmReferencedEntityDeclarationDefinition(corpus.ctx, 'Address')
        referenced_entity.entity_path = referenced_entity_path
        manifest.entities.append(referenced_entity)

        corpus.storage.fetch_root_folder('cdm').documents.append(manifest)

        resolved_manifest = await manifest.create_resolved_manifest_async('resolved_manifest', None)

        self.assertEqual(2, len(resolved_manifest.entities))
        self.assertEqual('core/applicationCommon/foundationCommon/crmCommon/accelerators/healthCare/electronicMedicalRecords/resolved/Account.cdm.json/Account',
                         resolved_manifest.entities[0].entity_path)
        self.assertEqual(referenced_entity_path, resolved_manifest.entities[1].entity_path)
Пример #2
0
    async def test_reference_models(self):
        """Test if the referenceModels is generated correctly."""
        test_name = 'TestReferenceModels'

        corpus = TestHelper.get_local_corpus(self.tests_subpath, test_name)

        manifest = await corpus.fetch_object_async(
            PersistenceLayer.MODEL_JSON_EXTENSION,
            corpus.storage.fetch_root_folder('local'))

        # entity with same modelId but different location
        reference_entity1 = CdmReferencedEntityDeclarationDefinition(
            corpus.ctx, 'ReferenceEntity1')
        reference_entity1.entity_path = 'remote:/contoso/entity1.model.json/Entity1'
        model_id_trait1 = reference_entity1.exhibits_traits.append(
            'is.propertyContent.multiTrait')
        model_id_trait1.is_from_property = True
        model_id_trait1.arguments.append(
            'modelId',
            'f19bbb97-c031-441a-8bd1-61b9181c0b83/1a7ef9c8-c7e8-45f8-9d8a-b80f8ffe4612'
        )
        manifest.entities.append(reference_entity1)

        # entity without modelId but same location
        reference_entity2 = CdmReferencedEntityDeclarationDefinition(
            corpus.ctx, 'ReferenceEntity2')
        reference_entity2.entity_path = 'remote:/contoso/entity.model.json/Entity2'
        manifest.entities.append(reference_entity2)

        # entity with modelId and new location
        reference_entity3 = CdmReferencedEntityDeclarationDefinition(
            corpus.ctx, 'ReferenceEntity3')
        reference_entity3.entity_path = 'remote:/contoso/entity3.model.json/Entity3'
        model_id_trait3 = reference_entity3.exhibits_traits.append(
            'is.propertyContent.multiTrait')
        model_id_trait3.is_from_property = True
        model_id_trait3.arguments.append(
            'modelId', '3b2e040a-c8c5-4508-bb42-09952eb04a50')
        manifest.entities.append(reference_entity3)

        # entity with same modelId and same location
        reference_entity4 = CdmReferencedEntityDeclarationDefinition(
            corpus.ctx, 'ReferenceEntity4')
        reference_entity4.entity_path = 'remote:/contoso/entity.model.json/Entity4'
        model_id_trait4 = reference_entity4.exhibits_traits.append(
            'is.propertyContent.multiTrait')
        model_id_trait4.is_from_property = True
        model_id_trait4.arguments.append(
            'modelId',
            'f19bbb97-c031-441a-8bd1-61b9181c0b83/1a7ef9c8-c7e8-45f8-9d8a-b80f8ffe4612'
        )
        manifest.entities.append(reference_entity4)

        obtained_model_json = json.loads(
            (await ManifestPersistence.to_data(manifest, None, None)).encode())
        self._validate_output(test_name, PersistenceLayer.MODEL_JSON_EXTENSION,
                              obtained_model_json)