コード例 #1
0
        public async Task TestPatternWithNonExistingFolder()
        {
            var corpus      = TestHelper.GetLocalCorpus(testsSubpath, "TestPatternWithNonExistingFolder");
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestPatternWithNonExistingFolder", "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(corpus, null), "entities", "local", "/", JsonConvert.DeserializeObject <ManifestContent>(content));
            int errorLogged = 0;

            corpus.SetEventCallback(new EventCallback
            {
                Invoke = (CdmStatusLevel statusLevel, string message) =>
                {
                    if (message.Contains("Failed to fetch all files in the folder location 'local:/testLocation' described by a partition pattern. Exception:"))
                    {
                        errorLogged++;
                    }
                }
            }, CdmStatusLevel.Warning);

            await cdmManifest.FileStatusCheckAsync();

            Assert.AreEqual(1, errorLogged);
            Assert.AreEqual(cdmManifest.Entities[0].DataPartitions.Count, 0);
            // make sure the last check time is still being set
            Assert.IsNotNull(cdmManifest.Entities[0].DataPartitionPatterns[0].LastFileStatusCheckTime);
        }
コード例 #2
0
        public void TestLoadLegacyEntityDeclaration()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestLoadLegacyEntityDeclaration", "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "", "", "", JsonConvert.DeserializeObject <ManifestContent>(content));

            // Local entity declaration.
            Assert.AreEqual("testPath", cdmManifest.Entities[0].EntityPath);

            // Referenced entity declaration.
            Assert.AreEqual("Account.cdm.json/Account", cdmManifest.Entities[1].EntityPath);
        }
コード例 #3
0
        public void TestLoadFolderWithSubFolders()
        {
            var content = TestHelper.GetInputFileContent(testsSubpath, "TestLoadFolderWithSubFolders", "subManifest.manifest.cdm.json");

            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "testEntity", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(cdmManifest.SubManifests.Count, 1);
            var subManifest = cdmManifest.SubManifests[0];

            Assert.AreEqual(subManifest.GetName(), "sub folder declaration");
            Assert.AreEqual(subManifest.Explanation, "test sub explanation");
            Assert.AreEqual(subManifest.Definition, "test definition");
        }
コード例 #4
0
        public void TestLoadReferencedEntity()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestLoadReferencedEntity", "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "testEntity", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(cdmManifest.Entities.Count, 1);
            Assert.AreEqual(cdmManifest.Entities[0].ObjectType, CdmObjectType.ReferencedEntityDeclarationDef);
            var entity = cdmManifest.Entities[0];

            Assert.AreEqual(entity.EntityName, "testEntity");
            Assert.AreEqual(entity.Explanation, "test explanation");
            Assert.AreEqual(entity.EntityPath, "testNamespace:/testPath");
            Assert.AreEqual(entity.ExhibitsTraits.Count, 1);
        }
コード例 #5
0
        public void TestFolioWithEverything()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestFolioWithEverything", "complete.folio.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "docName", "someNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(1, cdmManifest.SubManifests.Count);
            Assert.AreEqual(2, cdmManifest.Entities.Count);
            Assert.AreEqual("cdmTest", cdmManifest.ManifestName);

            content     = TestHelper.GetInputFileContent(testsSubpath, "TestFolioWithEverything", "noname.folio.cdm.json");
            cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "docName.folio.cdm.json", "someNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));
            Assert.AreEqual(1, cdmManifest.SubManifests.Count);
            Assert.AreEqual(2, cdmManifest.Entities.Count);
            Assert.AreEqual("docName", cdmManifest.ManifestName);
        }
コード例 #6
0
ファイル: ManifestImplTest.cs プロジェクト: minettes/CDM
        public void TestManifestWithBlankFields()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "testManifestWithBlankFields", "blank.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "cdmTest", "someNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.IsNull(cdmManifest.Schema);
            Assert.IsNull(cdmManifest.DocumentVersion);
            Assert.AreEqual(TimeUtils.GetFormattedDateString((DateTimeOffset)cdmManifest.LastFileModifiedTime), "2008-09-15T23:53:23.000Z");
            Assert.AreEqual(cdmManifest.Explanation, "test cdm folder for cdm version 1.0+");
            Assert.AreEqual(cdmManifest.Imports.Count, 1);
            Assert.AreEqual(cdmManifest.Imports[0].CorpusPath, "/primitives.cdm.json");
            Assert.AreEqual(cdmManifest.Entities.Count, 0);
            Assert.AreEqual(cdmManifest.ExhibitsTraits.Count, 1);
            Assert.AreEqual(cdmManifest.SubManifests.Count, 0);
        }
コード例 #7
0
        public void TestLoadNoPartition()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestLoadNoPartition", "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "", "", "", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(1, cdmManifest.Entities.Count);
            Assert.AreEqual(cdmManifest.Entities[0].ObjectType, CdmObjectType.LocalEntityDeclarationDef);
            var entity = cdmManifest.Entities[0];

            Assert.AreEqual("Account", entity.EntityName);
            Assert.AreEqual("Account explanation", entity.Explanation);
            Assert.AreEqual("Account.cdm.json/Account", entity.EntityPath);
            Assert.AreEqual(1, entity.ExhibitsTraits.Count);
            Assert.AreEqual(0, entity.DataPartitions.Count);
            Assert.AreEqual(0, entity.DataPartitionPatterns.Count);
        }
コード例 #8
0
        public void TestDataPartitionArgumentsAreSerializedAppropriately()
        {
            var readFile    = TestHelper.GetInputFileContent(testsSubpath, nameof(TestDataPartitionArgumentsAreSerializedAppropriately), "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(
                new ResolveContext(new CdmCorpusDefinition(), null), "entities", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(readFile));
            var obtainedCdmFolder = ManifestPersistence.ToData(cdmManifest, null, null);

            if (doesWriteTestDebuggingFiles)
            {
                TestHelper.WriteActualOutputFileContent(testsSubpath, nameof(TestDataPartitionArgumentsAreSerializedAppropriately),
                                                        "savedManifest.manifest.cdm.json", ModelJsonTestsBase.Serialize(obtainedCdmFolder));
            }
            var expectedOutput = TestHelper.GetExpectedOutputFileContent(testsSubpath, nameof(TestDataPartitionArgumentsAreSerializedAppropriately), "savedManifest.manifest.cdm.json");

            TestHelper.AssertSameObjectWasSerialized(expectedOutput, ModelJsonTestsBase.Serialize(obtainedCdmFolder));
        }
コード例 #9
0
        public void TestLoadFolderWithNoEntityFolders()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestLoadFolderWithNoEntityFolders", "empty.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "cdmTest", "someNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(cdmManifest.Schema, "CdmManifestDefinition.cdm.json");
            Assert.AreEqual(cdmManifest.ManifestName, "cdmTest");
            Assert.AreEqual(cdmManifest.JsonSchemaSemanticVersion, "0.9.0");
            Assert.AreEqual(TimeUtils.GetFormattedDateString((DateTimeOffset)cdmManifest.LastFileModifiedTime), "2008-09-15T23:53:23.000Z");
            Assert.AreEqual(cdmManifest.Explanation, "test cdm folder for cdm version 0.9+");
            Assert.AreEqual(cdmManifest.Imports.Count, 1);
            Assert.AreEqual(cdmManifest.Imports[0].CorpusPath, "/primitives.cdm.json");
            Assert.AreEqual(cdmManifest.Entities.Count, 0);
            Assert.AreEqual(cdmManifest.ExhibitsTraits.Count, 1);
            Assert.AreEqual(cdmManifest.SubManifests.Count, 0);
        }
コード例 #10
0
        public void TestManifestForCopyData()
        {
            var             content        = TestHelper.GetInputFileContent(testsSubpath, "TestManifestForCopyData", "complete.manifest.cdm.json");
            var             cdmManifest    = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "docName", "someNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));
            ManifestContent manifestObject = CdmObjectBase.CopyData(cdmManifest, null, null);

            Assert.AreEqual(manifestObject.Schema, "CdmManifestDefinition.cdm.json");
            Assert.AreEqual(manifestObject.JsonSchemaSemanticVersion, "1.0.0");
            Assert.AreEqual(manifestObject.ManifestName, "cdmTest");
            Assert.AreEqual(manifestObject.Explanation, "test cdm folder for cdm version 1.0+");
            Assert.AreEqual(manifestObject.Imports.Count, 1);
            Assert.AreEqual(manifestObject.Imports[0].CorpusPath, "/primitives.cdm.json");
            Assert.AreEqual(manifestObject.ExhibitsTraits.Count, 1);
            Assert.AreEqual(manifestObject.Entities.Count, 2);
            Assert.AreEqual(manifestObject.Entities[0]["entityName"], "testEntity");
            Assert.AreEqual(manifestObject.SubManifests.Count, 1);
            Assert.AreEqual(manifestObject.SubManifests[0].Definition, "test definition");
            Assert.AreEqual(manifestObject.LastFileModifiedTime, null);
        }
コード例 #11
0
        public void TestLoadNoPartitionAbsoluteNamespaceSet()
        {
            var             content         = TestHelper.GetInputFileContent(testsSubpath, "TestLoadNoPartitionAbsoluteNamespaceSet", "entities.manifest.cdm.json");
            ManifestContent manifestContent = JsonConvert.DeserializeObject <ManifestContent>(content);
            var             cdmManifest     = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "testEntity", "testNamespace", "/", manifestContent);

            Assert.AreEqual(cdmManifest.Entities.Count, 1);
            Assert.AreEqual(cdmManifest.Entities[0].ObjectType, CdmObjectType.LocalEntityDeclarationDef);
            var entity = cdmManifest.Entities[0];

            Assert.AreEqual("Account", entity.EntityName);
            Assert.AreEqual("Account explanation", entity.Explanation);
            Assert.AreEqual("testNamespace:/Account.cdm.json/Account", entity.EntityPath);
            Assert.AreEqual(1, entity.ExhibitsTraits.Count);
            Assert.AreEqual(0, entity.DataPartitions.Count);
            Assert.AreEqual(0, entity.DataPartitionPatterns.Count);

            var manifestToData = ManifestPersistence.ToData(cdmManifest, null, null);

            Assert.AreEqual("testNamespace:/Account.cdm.json/Account", manifestToData.Entities[0].Value <string>("entityPath"));
        }
コード例 #12
0
        public void TestLoadLocalEntitiyWithDataPartitionPattern()
        {
            var content = TestHelper.GetInputFileContent(testsSubpath, "TestLoadLocalEntityWithDataPartitionPattern", "entities.manifest.cdm.json");

            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "entities", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(cdmManifest.Entities.Count, 1);
            Assert.AreEqual(cdmManifest.Entities[0].ObjectType, CdmObjectType.LocalEntityDeclarationDef);
            var entity = cdmManifest.Entities[0];

            Assert.AreEqual(entity.DataPartitionPatterns.Count, 1);
            var pattern = entity.DataPartitionPatterns[0];

            Assert.AreEqual(pattern.Name, "testPattern");
            Assert.AreEqual(pattern.Explanation, "test explanation");
            Assert.AreEqual(pattern.RootLocation, "test location");
            Assert.AreEqual(pattern.RegularExpression.ToString(), "\\s*");
            Assert.AreEqual(pattern.Parameters.Count, 2);
            Assert.AreEqual(pattern.Parameters[0], "testParam1");
            Assert.AreEqual(pattern.Parameters[1], "testParam2");
            Assert.AreEqual(pattern.SpecializedSchema, "test special schema");
            Assert.AreEqual(pattern.ExhibitsTraits.Count, 1);
        }
コード例 #13
0
        public void TestLoadLocalEntitiyWithDataPartition()
        {
            var content     = TestHelper.GetInputFileContent(testsSubpath, "TestLoadLocalEntityWithDataPartition", "entities.manifest.cdm.json");
            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "entities", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(cdmManifest.Entities.Count, 1);
            Assert.AreEqual(cdmManifest.Entities[0].ObjectType, CdmObjectType.LocalEntityDeclarationDef);
            var entity = cdmManifest.Entities[0];

            Assert.AreEqual(entity.DataPartitions.Count, 2);
            var relativePartition = entity.DataPartitions[0];

            Assert.AreEqual(relativePartition.Name, "Sample data partition");
            Assert.AreEqual(relativePartition.Location, "test/location");
            Assert.AreEqual(TimeUtils.GetFormattedDateString(relativePartition.LastFileModifiedTime), "2008-09-15T23:53:23.000Z");
            Assert.AreEqual(relativePartition.ExhibitsTraits.Count, 1);
            Assert.AreEqual(relativePartition.SpecializedSchema, "teststring");

            var testList = relativePartition.Arguments["test"];

            Assert.AreEqual(testList.Count, 3);
            Assert.AreEqual(testList[0], "something");
            Assert.AreEqual(testList[1], "somethingelse");
            Assert.AreEqual(testList[2], "anotherthing");

            var keyList = relativePartition.Arguments["KEY"];

            Assert.AreEqual(keyList.Count, 1);
            Assert.AreEqual(keyList[0], "VALUE");

            Assert.IsFalse(relativePartition.Arguments.ContainsKey("wrong"));

            var absolutePartition = entity.DataPartitions[1];

            Assert.AreEqual(absolutePartition.Location, "local:/some/test/location");
        }
コード例 #14
0
        public void TestLoadLocalEntitiyWithDataPartitionPattern()
        {
            var content = TestHelper.GetInputFileContent(testsSubpath, "TestLoadLocalEntityWithDataPartitionPattern", "entities.manifest.cdm.json");

            var cdmManifest = ManifestPersistence.FromObject(new ResolveContext(new CdmCorpusDefinition(), null), "entities", "testNamespace", "/", JsonConvert.DeserializeObject <ManifestContent>(content));

            Assert.AreEqual(2, cdmManifest.Entities.Count);

            var entity1 = cdmManifest.Entities[0];

            Assert.AreEqual(CdmObjectType.LocalEntityDeclarationDef, entity1.ObjectType);
            Assert.AreEqual(1, entity1.DataPartitionPatterns.Count);
            var pattern1 = entity1.DataPartitionPatterns[0];

            Assert.AreEqual("testPattern", pattern1.Name);
            Assert.AreEqual("test explanation", pattern1.Explanation);
            Assert.AreEqual("test location", pattern1.RootLocation);
            Assert.AreEqual("\\s*", pattern1.RegularExpression.ToString());
            Assert.AreEqual(2, pattern1.Parameters.Count);
            Assert.AreEqual("testParam1", pattern1.Parameters[0]);
            Assert.AreEqual("testParam2", pattern1.Parameters[1]);
            Assert.AreEqual("test special schema", pattern1.SpecializedSchema);
            Assert.AreEqual(1, pattern1.ExhibitsTraits.Count);

            var entity2 = cdmManifest.Entities[1];

            Assert.AreEqual(CdmObjectType.LocalEntityDeclarationDef, entity2.ObjectType);
            Assert.AreEqual(1, entity2.DataPartitionPatterns.Count);
            var pattern2 = entity2.DataPartitionPatterns[0];

            Assert.AreEqual("testPattern2", pattern2.Name);
            Assert.AreEqual("test location2", pattern2.RootLocation);
            Assert.AreEqual("/*.csv", pattern2.GlobPattern);

            var manifestData = ManifestPersistence.ToData(cdmManifest, new ResolveOptions(), new CopyOptions());

            Assert.AreEqual(2, manifestData.Entities.Count);

            var entityData1 = manifestData.Entities[0];

            Assert.AreEqual(1, entityData1.Value <JArray>("dataPartitionPatterns").Count);
            var patternData1 = entityData1.Value <JArray>("dataPartitionPatterns").First;

            Assert.AreEqual("testPattern", patternData1.Value <JToken>("name"));
            Assert.AreEqual("test explanation", patternData1.Value <JToken>("explanation"));
            Assert.AreEqual("test location", patternData1.Value <JToken>("rootLocation"));
            Assert.AreEqual("\\s*", patternData1.Value <JToken>("regularExpression"));
            Assert.AreEqual(2, patternData1.Value <JArray>("parameters").Count);
            Assert.AreEqual("testParam1", patternData1.Value <JArray>("parameters")[0]);
            Assert.AreEqual("testParam2", patternData1.Value <JArray>("parameters")[1]);
            Assert.AreEqual("test special schema", patternData1.Value <JToken>("specializedSchema"));
            Assert.AreEqual(1, patternData1.Value <JArray>("exhibitsTraits").Count);

            var entityData2 = manifestData.Entities[1];

            Assert.AreEqual(1, entityData2.Value <JArray>("dataPartitionPatterns").Count);
            var patternData2 = entityData2.Value <JArray>("dataPartitionPatterns").First;

            Assert.AreEqual("testPattern2", patternData2.Value <JToken>("name"));
            Assert.AreEqual("test location2", patternData2.Value <JToken>("rootLocation"));
            Assert.AreEqual("/*.csv", patternData2.Value <JToken>("globPattern"));
        }