public async Task MapBookingRequest_ShouldReturn_ValidBookingRequest() { // Arrange var bookingGuid = Guid.NewGuid(); var startDate = DateTime.Now.AddDays(-2); var startTime = DateTime.Today.Add(new TimeSpan(1, 0, 0)); var expectedValue = startDate.Date.Add(startTime.TimeOfDay); var customerFirstnameElement = new ElementBuilder() .WithType(EElementType.Textbox) .WithTargetMapping("customer.firstname") .Build(); var page = new PageBuilder() .WithElement(customerFirstnameElement) .WithValidatedModel(true) .WithPageSlug("page-one") .Build(); var schema = new FormSchemaBuilder() .WithPage(page) .Build(); _mockSchemaFactory.Setup(_ => _.Build(It.IsAny <string>())) .ReturnsAsync(schema); var element = new ElementBuilder() .WithType(EElementType.Booking) .WithQuestionId("booking") .WithAppointmentType(bookingGuid) .Build(); var viewModel = new Dictionary <string, object> { { $"{element.Properties.QuestionId}-{BookingConstants.APPOINTMENT_DATE}", startDate.ToString() }, { $"{element.Properties.QuestionId}-{BookingConstants.APPOINTMENT_START_TIME}", startTime.ToString() } }; // Act var result = await _service.MapBookingRequest("guid", element, viewModel, "form"); // Assert Assert.IsType <BookingRequest>(result); Assert.Equal(bookingGuid, result.AppointmentId); Assert.Equal(expectedValue, result.StartDateTime); _mockSchemaFactory.Verify(_ => _.Build(It.IsAny <string>()), Times.Once); _mockElementMapper.Verify(_ => _.GetAnswerValue(It.IsAny <IElement>(), It.IsAny <FormAnswers>()), Times.Once); }