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); }
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); } }
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); }
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 }