public async Task SavesTurnStateUsingMockWithVirtualSaveChangesAsync() { // Note: this test requires that SaveChangesAsync is made virtual in order to be able to create a mock. var memoryStorage = new MemoryStorage(); var mockConversationState = new Mock <ConversationState>(memoryStorage) { CallBase = true, }; var mockUserState = new Mock <UserState>(memoryStorage) { CallBase = true, }; var mockRootDialog = SimpleMockFactory.CreateMockDialog <Dialog>(null, "mockRootDialog"); var mockLogger = new Mock <ILogger <DialogBot <Dialog> > >(); // Act var sut = new DialogBot <Dialog>(mockConversationState.Object, mockUserState.Object, mockRootDialog.Object, mockLogger.Object); var testAdapter = new TestAdapter(); var testFlow = new TestFlow(testAdapter, sut); await testFlow.Send("Hi").StartTestAsync(); // Assert that SaveChangesAsync was called mockConversationState.Verify(x => x.SaveChangesAsync(It.IsAny <TurnContext>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()), Times.Once); mockUserState.Verify(x => x.SaveChangesAsync(It.IsAny <TurnContext>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()), Times.Once); }
public async Task LogsInformationToILogger() { // Arrange var memoryStorage = new MemoryStorage(); var conversationState = new ConversationState(memoryStorage); var userState = new UserState(memoryStorage); var mockRootDialog = SimpleMockFactory.CreateMockDialog <Dialog>(null, "mockRootDialog"); var mockLogger = new Mock <ILogger <DialogBot <Dialog> > >(); mockLogger.Setup(x => x.Log(It.IsAny <LogLevel>(), It.IsAny <EventId>(), It.IsAny <object>(), null, It.IsAny <Func <object, Exception, string> >())); // Run the bot var sut = new DialogBot <Dialog>(conversationState, userState, mockRootDialog.Object, mockLogger.Object); var testAdapter = new TestAdapter(); var testFlow = new TestFlow(testAdapter, sut); await testFlow.Send("Hi").StartTestAsync(); // Assert that log was changed with the expected parameters mockLogger.Verify( x => x.Log( LogLevel.Information, It.IsAny <EventId>(), It.Is <object>(o => o.ToString() == "Running dialog with Message Activity."), null, (Func <object, Exception, string>)It.IsAny <object>()), Times.Once); }
public async Task Test() { //Assert var welcomeBot = new DialogAndWelcomeBot <Dialog>(conversationStateMock.Object, userStateMock.Object, dialogMock.Object, loggerMock.Object, decisionMakerMock.Object, threadedLoggerMock.Object); var logger = new Mock <ILogger <DialogAndWelcomeBot <Dialog> > >(); logger.Setup(x => x.Log(It.IsAny <LogLevel>(), It.IsAny <EventId>(), It.IsAny <object>(), null, It.IsAny <Func <object, Exception, string> >())); //Act var adapter = new TestAdapter(); var testFlow = new TestFlow(adapter, welcomeBot); await testFlow.Send("message").StartTestAsync(); //Assert /* logger.Verify( * x => x.Log( * LogLevel.Information, * It.IsAny<EventId>(), * It.Is<object>(o => o.ToString() == ""), * null, * It.IsAny<Func<object, Exception, string>>()), * Times.Once);*/ }
public async Task TestAdapter_TestFlow(Type exceptionType) { Exception innerException = (Exception)Activator.CreateInstance(exceptionType); var promise = new TaskCompletionSource <bool>(); promise.SetException(innerException); var adapter = this.CreateAdapter(); TestFlow testFlow = new TestFlow(promise.Task, adapter); testFlow.Send(new Activity()); Task task = testFlow.StartTest(); await task.ContinueWith(action => { Assert.IsInstanceOfType(action.Exception.InnerException, exceptionType); }); }
public async Task Should_SaveTurnState_When_SaveChangesAsync() { //Assert var welcomeBot = new DialogAndWelcomeBot <Dialog>(conversationStateMock.Object, userStateMock.Object, dialogMock.Object, loggerMock.Object, decisionMakerMock.Object, threadedLoggerMock.Object); //Act var adapter = new TestAdapter(); var testFlow = new TestFlow(adapter, welcomeBot); await testFlow.Send("message").StartTestAsync(); //Assert conversationStateMock.Verify(x => x.SaveChangesAsync(It.IsAny <TurnContext>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()), Times.Once); userStateMock.Verify(x => x.SaveChangesAsync(It.IsAny <TurnContext>(), It.IsAny <bool>(), It.IsAny <CancellationToken>()), Times.Once); }
public async Task SavesTurnStateUsingMemoryStorage() { // TODO: Figure out how to implement this test. // Note: this doesn't require a virtual SaveChangesAsync and it manually inspects storage to ensure the save methods were called. var memoryStorage = new MemoryStorage(); var conversationState = new ConversationState(memoryStorage); var userState = new UserState(memoryStorage); var mockRootDialog = new Mock <Dialog>("mockRootDialog"); mockRootDialog.Setup(x => x.ContinueDialogAsync(It.IsAny <DialogContext>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(new DialogTurnResult(DialogTurnStatus.Empty))); var mockLogger = new Mock <ILogger <DialogBot <Dialog> > >(); // Run the bot var sut = new DialogBot <Dialog>(conversationState, userState, mockRootDialog.Object, mockLogger.Object); var testAdapter = new TestAdapter(); var testFlow = new TestFlow(testAdapter, sut); await testFlow.Send("Hi").StartTestAsync(); // Assert that SaveChangesAsyncWasCalled Assert.True(false, "TODO"); }
public static TestFlow NextReply(this TestFlow flow) { return(flow.Send(string.Empty)); }