示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
            });
        }
示例#5
0
        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");
        }
示例#7
0
 public static TestFlow NextReply(this TestFlow flow)
 {
     return(flow.Send(string.Empty));
 }