Ejemplo n.º 1
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);*/
        }
Ejemplo n.º 2
0
        public async Task ReturnsWelcomeCardOnConversationUpdate()
        {
            // Arrange
            var mockRootDialog = SimpleMockFactory.CreateMockDialog <Dialog>(null, "mockRootDialog");

            // TODO: do we need state here?
            var memoryStorage = new MemoryStorage();
            var sut           = new DialogAndWelcomeBot <Dialog>(new ConversationState(memoryStorage), new UserState(memoryStorage), mockRootDialog.Object, null);
            var conversationUpdateActivity = new Activity
            {
                Type         = ActivityTypes.ConversationUpdate,
                MembersAdded = new List <ChannelAccount>
                {
                    new ChannelAccount {
                        Id = "theUser"
                    },
                },
                Recipient = new ChannelAccount {
                    Id = "theBot"
                },
            };
            var testAdapter = new TestAdapter(Channels.Test);

            // Act
            // Note: it is kind of obscure that we need to use OnTurnAsync to trigger OnMembersAdded so we get the card
            await testAdapter.ProcessActivityAsync(conversationUpdateActivity, sut.OnTurnAsync, CancellationToken.None);

            var reply = testAdapter.GetNextReply();

            // Assert
            var m = (IMessageActivity)reply;

            Assert.Equal(1, m.Attachments.Count);
            Assert.Equal("application/vnd.microsoft.card.adaptive", m.Attachments.FirstOrDefault()?.ContentType);
        }
Ejemplo n.º 3
0
        public async Task Should_CreateBot_When_Construct()
        {
            //Act
            var welcomeBot = new DialogAndWelcomeBot <Dialog>(conversationStateMock.Object, userStateMock.Object,
                                                              dialogMock.Object, loggerMock.Object, decisionMakerMock.Object, threadedLoggerMock.Object);

            //Assert
            Assert.IsNotNull(welcomeBot);
        }
Ejemplo n.º 4
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 ReturnsWelcomeCardOnConversationUpdate()
        {
            // Arrange
            var mockRootDialog = SimpleMockFactory.CreateMockDialog <Dialog>(null, "mockRootDialog");
            var memoryStorage  = new MemoryStorage();
            var sut            = new DialogAndWelcomeBot <Dialog>(new ConversationState(memoryStorage), new UserState(memoryStorage), mockRootDialog.Object, null);

            // Create conversationUpdate activity
            var conversationUpdateActivity = new Activity
            {
                Type         = ActivityTypes.ConversationUpdate,
                MembersAdded = new List <ChannelAccount>
                {
                    new ChannelAccount {
                        Id = "theUser"
                    },
                },
                Recipient = new ChannelAccount {
                    Id = "theBot"
                },
            };
            var testAdapter = new TestAdapter(Channels.Test);

            // Act
            // Send the conversation update activity to the bot.
            await testAdapter.ProcessActivityAsync(conversationUpdateActivity, sut.OnTurnAsync, CancellationToken.None);

            // Assert we got the welcome card
            var reply = (IMessageActivity)testAdapter.GetNextReply();

            Assert.Equal(1, reply.Attachments.Count);
            Assert.Equal("application/vnd.microsoft.card.adaptive", reply.Attachments.FirstOrDefault()?.ContentType);

            // Assert that we started the main dialog.
            reply = (IMessageActivity)testAdapter.GetNextReply();
            Assert.Equal("Dialog mock invoked", reply.Text);
        }