public async Task DialogFlowUseCases(TestDataObject testData) { // Arrange var bookingTestData = testData.GetObject <BookingDialogTestCase>(); var mockFlightBookingService = new Mock <IFlightBookingService>(); mockFlightBookingService .Setup(x => x.BookFlight(It.IsAny <BookingDetails>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(bookingTestData.FlightBookingServiceResult)); var mockGetBookingDetailsDialog = SimpleMockFactory.CreateMockDialog <GetBookingDetailsDialog>(bookingTestData.GetBookingDetailsDialogResult).Object; var sut = new BookingDialog(mockGetBookingDetailsDialog, mockFlightBookingService.Object); var testClient = new DialogTestClient(Channels.Test, sut, middlewares: _middlewares); // Act/Assert Output.WriteLine($"Test Case: {bookingTestData.Name}"); for (var i = 0; i < bookingTestData.UtterancesAndReplies.GetLength(0); i++) { var utterance = bookingTestData.UtterancesAndReplies[i, 0]; // Send the activity and receive the first reply or just pull the next // activity from the queue if there's nothing to send var reply = !string.IsNullOrEmpty(utterance) ? await testClient.SendActivityAsync <IMessageActivity>(utterance) : testClient.GetNextReply <IMessageActivity>(); Assert.Equal(bookingTestData.UtterancesAndReplies[i, 1], reply.Text); } Assert.Equal(bookingTestData.ExpectedDialogResult.Status, testClient.DialogTurnResult.Status); }
public async Task DialogFlowUseCases(TestDataObject testData) { // Arrange var bookingTestData = testData.GetObject <BookingDialogTestCase>(); var sut = new BookingDialog(); var testClient = new DialogTestClient(Channels.Test, sut, bookingTestData.InitialBookingDetails, _middlewares); // Execute the test case Output.WriteLine($"Test Case: {bookingTestData.Name}"); for (var i = 0; i < bookingTestData.UtterancesAndReplies.GetLength(0); i++) { IMessageActivity reply; if (bookingTestData.UtterancesAndReplies[i, 0] != "") { reply = await testClient.SendActivityAsync <IMessageActivity>(bookingTestData.UtterancesAndReplies[i, 0]); } else { reply = testClient.GetNextReply <IMessageActivity>(); } Assert.Equal(bookingTestData.UtterancesAndReplies[i, 1], reply?.Text); } var bookingResults = (BookingDetails)testClient.DialogTurnResult.Result; Assert.Equal(bookingTestData.ExpectedBookingDetails?.Origin, bookingResults?.Origin); Assert.Equal(bookingTestData.ExpectedBookingDetails?.Destination, bookingResults?.Destination); Assert.Equal(bookingTestData.ExpectedBookingDetails?.TravelDate, bookingResults?.TravelDate); }
public MainDialogTests(ITestOutputHelper output) : base(output) { _mockLogger = new Mock <ILogger <MainDialog> >(); var mockFlightBookingService = new Mock <IFlightBookingService>(); mockFlightBookingService .Setup(x => x.BookFlight(It.IsAny <BookingDetails>(), It.IsAny <CancellationToken>())) .Returns(Task.FromResult(true)); _mockBookingDialog = SimpleMockFactory.CreateMockDialog <BookingDialog>(null, new Mock <GetBookingDetailsDialog>().Object, mockFlightBookingService.Object).Object; }
public MainDialogTests(ITestOutputHelper output) : base(output) { _mockLogger = new Mock <ILogger <MainDialog> >(); var expectedBookingDialogResult = new BookingDetails() { Destination = "Seattle", Origin = "New York", TravelDate = $"{DateTime.UtcNow.AddDays(1):yyyy-MM-dd}" }; _mockBookingDialog = SimpleMockFactory.CreateMockDialog <BookingDialog>(expectedBookingDialogResult).Object; }
// Dependency injection uses this constructor to instantiate MainDialog public MainDialog(FlightBookingRecognizer luisRecognizer, BookingDialog bookingDialog, ILogger <MainDialog> logger) : base(nameof(MainDialog)) { _luisRecognizer = luisRecognizer; Logger = logger; AddDialog(new TextPrompt(nameof(TextPrompt))); AddDialog(bookingDialog); AddDialog(new WaterfallDialog(nameof(WaterfallDialog), new WaterfallStep[] { IntroStepAsync, ActStepAsync, FinalStepAsync, })); // The initial child Dialog to run. InitialDialogId = nameof(WaterfallDialog); }
public async Task ShouldBeAbleToCancelAtAnyTime(TestDataObject testData) { // Arrange var bookingTestData = testData.GetObject <BookingDialogTestCase>(); var sut = new BookingDialog(); var testClient = new DialogTestClient(Channels.Test, sut, bookingTestData.InitialBookingDetails, _middlewares); // Execute the test case Output.WriteLine($"Test Case: {bookingTestData.Name}"); for (var i = 0; i < bookingTestData.UtterancesAndReplies.GetLength(0); i++) { var reply = await testClient.SendActivityAsync <IMessageActivity>(bookingTestData.UtterancesAndReplies[i, 0]); Assert.Equal(bookingTestData.UtterancesAndReplies[i, 1], reply.Text); } Assert.Equal(DialogTurnStatus.Complete, testClient.DialogTurnResult.Status); Assert.Null(testClient.DialogTurnResult.Result); }