Ejemplo n.º 1
0
        public async Task TestFetchingDocumentUnderneathAPathAndSavingDocuments()
        {
            var testName      = nameof(TestFetchingDocumentUnderneathAPathAndSavingDocuments);
            var testInputPath = TestHelper.GetInputFolderPath(testsSubpath, testName);

            CdmCorpusDefinition corpus = new CdmCorpusDefinition();

            corpus.SetEventCallback(new EventCallback {
                Invoke = CommonDataModelLoader.ConsoleStatusReport
            }, CdmStatusLevel.Warning);
            LocalAdapter localAdapter = new LocalAdapter(testInputPath);

            corpus.Storage.Mount("local", localAdapter);
            corpus.Storage.DefaultNamespace = "local";
            corpus.Storage.Unmount("cdm");

            var manifestFromModelJson = await corpus.FetchObjectAsync <CdmManifestDefinition>("sub-folder/model.json");

            // Swap out the adapter for a fake one so that we aren't actually saving files.
            ConcurrentDictionary <string, string> allDocs = new ConcurrentDictionary <string, string>();
            var testAdapter = new TestStorageAdapter(allDocs);

            corpus.Storage.SetAdapter("local", testAdapter);

            var newManifestFromModelJsonName = "model.json";
            await manifestFromModelJson.SaveAsAsync(newManifestFromModelJsonName, true);

            // Verify that model.json persistence was called by comparing the saved document to the original model.json.
            var serializedManifest     = allDocs[$"/sub-folder/{newManifestFromModelJsonName}"];
            var expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromModelJson.Name);

            TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest);
        }
Ejemplo n.º 2
0
        private async Task TestConversationStateBlobStorage_Method(IStorage blobs)
        {
            if (StorageEmulatorHelper.CheckEmulator())
            {
                // Arrange
                var conversationState = new ConversationState(blobs);
                var propAccessor      = conversationState.CreateProperty <Prop>("prop");
                var adapter           = new TestStorageAdapter();
                var activity          = new Activity
                {
                    ChannelId    = "123",
                    Conversation = new ConversationAccount {
                        Id = "abc"
                    },
                };

                // Act
                var turnContext1 = new TurnContext(adapter, activity);
                var propValue1   = await propAccessor.GetAsync(turnContext1, () => new Prop());

                propValue1.X = "hello";
                propValue1.Y = "world";
                await conversationState.SaveChangesAsync(turnContext1, force : true);

                var turnContext2 = new TurnContext(adapter, activity);
                var propValue2   = await propAccessor.GetAsync(turnContext2);

                // Assert
                Assert.Equal("hello", propValue2.X);
                Assert.Equal("world", propValue2.Y);
            }
        }
Ejemplo n.º 3
0
        public async Task TestSavingInvalidModelJsonAndOdiJsonName()
        {
            CdmCorpusDefinition corpus = new CdmCorpusDefinition();

            corpus.SetEventCallback(new EventCallback {
                Invoke = CommonDataModelLoader.ConsoleStatusReport
            }, CdmStatusLevel.Warning);
            corpus.Storage.Unmount("cdm");
            corpus.Storage.DefaultNamespace = "local";
            var manifest = new CdmManifestDefinition(corpus.Ctx, "manifest");

            corpus.Storage.FetchRootFolder("local").Documents.Add(manifest);


            Dictionary <string, string> allDocs = new Dictionary <string, string>();
            var testAdapter = new TestStorageAdapter(allDocs);

            corpus.Storage.SetAdapter("local", testAdapter);

            var newManifestFromModelJsonName = "my.model.json";
            await manifest.SaveAsAsync(newManifestFromModelJsonName, true);

            // TODO: because we can load documents properly now, SaveAsAsync returns false. Will check the value returned from SaveAsAsync() when the problem is solved
            Assert.IsFalse(allDocs.ContainsKey($"/{newManifestFromModelJsonName}"));

            var newManifestFromOdiName = "my.odi.json";
            await manifest.SaveAsAsync(newManifestFromOdiName, true);

            Assert.IsFalse(allDocs.ContainsKey($"/{newManifestFromOdiName}"));
        }
        public async Task TestConversationStateBlobStorage()
        {
            // Arrange
            var storageAccount    = CloudStorageAccount.Parse(ConnectionString);
            var storage           = new AzureBlobStorage(storageAccount, ContainerName);
            var conversationState = new ConversationState(storage);
            var propAccessor      = conversationState.CreateProperty <Prop>("prop");
            var adapter           = new TestStorageAdapter();
            var activity          = new Activity
            {
                ChannelId    = "123",
                Conversation = new ConversationAccount {
                    Id = "abc"
                },
            };

            // Act
            var turnContext1 = new TurnContext(adapter, activity);
            var propValue1   = await propAccessor.GetAsync(turnContext1, () => new Prop());

            propValue1.X = "hello";
            propValue1.Y = "world";
            await conversationState.SaveChangesAsync(turnContext1, force : true);

            var turnContext2 = new TurnContext(adapter, activity);
            var propValue2   = await propAccessor.GetAsync(turnContext2);

            // Assert
            Assert.AreEqual("hello", propValue2.X);
            Assert.AreEqual("world", propValue2.Y);
        }
Ejemplo n.º 5
0
        public async Task TestFetchingAndSavingDocumentsWithCaseInsensitiveCheck()
        {
            var testName      = "TestFetchingAndSavingDocumentsWithCaseInsensitiveCheck";
            var testInputPath = TestHelper.GetInputFolderPath(testsSubpath, testName);

            CdmCorpusDefinition corpus = new CdmCorpusDefinition();

            corpus.SetEventCallback(new EventCallback {
                Invoke = CommonDataModelLoader.ConsoleStatusReport
            }, CdmStatusLevel.Warning);
            LocalAdapter localAdapter = new LocalAdapter(testInputPath);

            corpus.Storage.Mount("local", localAdapter);
            corpus.Storage.DefaultNamespace = "local";
            corpus.Storage.Unmount("cdm");


            var manifest = await corpus.FetchObjectAsync <CdmManifestDefinition>("empty.Manifest.cdm.json");

            var manifestFromModelJson = await corpus.FetchObjectAsync <CdmManifestDefinition>("Model.json");

            var manifestFromOdi = await corpus.FetchObjectAsync <CdmManifestDefinition>("Odi.json");

            // Swap out the adapter for a fake one so that we aren't actually saving files.
            Dictionary <string, string> allDocs = new Dictionary <string, string>();
            var testAdapter = new TestStorageAdapter(allDocs);

            corpus.Storage.SetAdapter("local", testAdapter);

            var newManifestName = "empty.MANIFEST.CDM.json";
            await manifest.SaveAsAsync(newManifestName, true);

            // Verify that manifest persistence was called by comparing the saved document to the original manifest.
            var serializedManifest     = allDocs[$"/{newManifestName}"];
            var expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifest.Name);

            TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest);

            var newManifestFromModelJsonName = "MODEL.json";
            await manifestFromModelJson.SaveAsAsync(newManifestFromModelJsonName, true);

            // Verify that model.json persistence was called by comparing the saved document to the original model.json.
            serializedManifest     = allDocs[$"/{newManifestFromModelJsonName}"];
            expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromModelJson.Name);
            TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest);

            var newManifestFromOdiName = "ODI.json";
            await manifestFromOdi.SaveAsAsync(newManifestFromOdiName, true);

            // Verify that ODI persistence was called by comparing the saved document to the original ODI document.
            serializedManifest     = allDocs[$"/{newManifestFromOdiName}"];
            expectedOutputManifest = TestHelper.GetExpectedOutputFileContent(testsSubpath, testName, manifestFromOdi.Name);
            TestHelper.AssertSameObjectWasSerialized(expectedOutputManifest, serializedManifest);
            // TODO: We need to check the odi.json for linked documents too, will add it when Bug 232672 is fixed
        }