Beispiel #1
0
        public void ScheduleGenerator_FirstWeekDayRun_ShouldGenerateTwoWeeksFromCurrent()
        {
            SetupRandom(10);
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();
            var result         = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 10, result.Count);
        }
Beispiel #2
0
        public void ScheduleGenerator_WeekDayRunHaveNextWeekEntries_ShouldGenerateEmpty()
        {
            SetupRandom();

            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = GetDayEntries(engineers.Take(2).ToList(), new DateTime(2018, 1, 8));
            var result         = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Empty(result);
        }
Beispiel #3
0
        public void ScheduleGenerator_WeekendDayRun_ShouldGenerateNextWeek()
        {
            SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 6),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
        }
Beispiel #4
0
        public void ScheduleGenerator_WeekDayRun_ShouldGenerateNextWeek()
        {
            SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = GetDayEntries(engineers.Take(2).ToList(), new DateTime(2018, 1, 5));

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 4),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
            Assert.NotEqual(engineers[0].Id, result[0].EngineerId);
            Assert.NotEqual(engineers[1].Id, result[0].EngineerId);
        }
Beispiel #5
0
        public void ScheduleGenerator_WeekendDayRun_ShouldCallRandomForAllCounts()
        {
            var randomMock     = SetupRandom();
            var fixture        = new Fixture();
            var engineers      = GetEngineers();
            var generator      = new ScheduleGenerator();
            var lastDayEntries = new List <ScheduleEntry>();

            var result = generator.GenerateSchedule(new ScheduleGenerationRequest
            {
                Date              = new DateTime(2018, 1, 6),
                Engineers         = engineers,
                LastDueDayEntries = lastDayEntries
            });

            AssertScheduleRules(result, lastDayEntries);
            Assert.Equal(Constants.ShiftsPerDay * 5, result.Count);
            for (int i = 1; i <= engineers.Count; i++)
            {
                randomMock.Verify(r => r.Next(It.Is <int>(p => p == i)), Times.Once);
            }
        }