예제 #1
0
        public void WhenNoDatesPassedIn_WeDefaultToTodayAndOneWeekFromToday()
        {
            // Arrange
            var now = DateTime.Now;
            var expectedStartDate = now.Date;
            var expectedEndDate   = now.Date.AddDays(7);

            var mockLogger = this.GetMockLogger <SchedulesController>();

            var mockScheduleService = new Mock <IScheduleService>();

            mockScheduleService.Setup(r => r.GetSchedules(It.IsAny <DateTime>(), It.IsAny <DateTime>()))
            .Returns(new List <Schedule>());

            var dateTimeProvider = new UnitTestDateTimeProvider(now);

            SchedulesController controller = new SchedulesController(mockLogger.Object, mapper,
                                                                     mockScheduleService.Object, dateTimeProvider);


            // Act
            var response = controller.Get(new GetSchedulesParameters());

            // Assert
            mockScheduleService.Verify(r => r.GetSchedules(expectedStartDate, expectedEndDate), Times.Once());
        }
        public void Today_ReturnsToday()
        {
            // Arrange
            var targetDateTime = new DateTime(2019, 12, 1, 11, 30, 00);
            UnitTestDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(targetDateTime);

            // Act
            var result = dateTimeProvider.Today;

            // Assert
            result.Year.Should().Be(2019);
            result.Month.Should().Be(12);
            result.Day.Should().Be(1);
            result.Hour.Should().Be(0);
            result.Minute.Should().Be(0);
            result.Second.Should().Be(0);
            result.Kind.Should().Be(DateTimeKind.Local);
        }
        public void ValidateScheduleStartAndEndCannotBeTheSame()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 8, 0, 0); // 1:00 PM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, 11, 0, 0),
                EndTime    = new DateTime(2017, 10, 9, 11, 0, 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeFalse();
        }
        public void ValidateScheduleStartCannotBeInThePast()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 13, 0, 0); // 1:00 PM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, hour: 10, minute: 0, second: 0),
                EndTime    = new DateTime(2017, 10, 9, hour: 14, minute: 0, second: 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeFalse();
        }
        public void ValidateGoodSchedulesShouldPass()
        {
            // Arrange
            DateTime          testDateTime     = new DateTime(2017, 10, 9, 8, 0, 0); // 8:00 AM
            IDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(testDateTime);

            CreateFoodTruckScheduleModel model = new CreateFoodTruckScheduleModel()
            {
                LocationId = 1,
                StartTime  = new DateTime(2017, 10, 9, 10, 0, 0),
                EndTime    = new DateTime(2017, 10, 9, 14, 0, 0)
            };

            // Act
            var validator = new CreateFoodTruckScheduleModelValidator(dateTimeProvider);
            var result    = validator.Validate(model);

            // Assert
            result.IsValid.Should().BeTrue();
        }
        public void CurrentUtcDateTime_ReturnsCurrentUtcDateTime()
        {
            // Arrange
            var targetDateTime = new DateTime(2019, 12, 1, 22, 30, 00, DateTimeKind.Local);
            UnitTestDateTimeProvider dateTimeProvider = new UnitTestDateTimeProvider(targetDateTime);
            DateTime expectedDateTime = targetDateTime.ToUniversalTime();

            // Act
            var result = dateTimeProvider.CurrentUtcDateTime;

            // Assert
            result.Year.Should().Be(expectedDateTime.Year);
            result.Month.Should().Be(expectedDateTime.Month);
            result.Day.Should().Be(expectedDateTime.Day);
            result.Hour.Should().Be(expectedDateTime.Hour);
            result.Minute.Should().Be(expectedDateTime.Minute);
            result.Second.Should().Be(expectedDateTime.Second);

            result.Kind.Should().Be(DateTimeKind.Utc);
        }