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