示例#1
0
        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);
        }