Esempio n. 1
0
        public void FindEngineersAvailableOn_Check_Consecutive_Days(DateTime date, int nEngineers)
        {
            string contextName = $"FindEngineersAvailableOn_Check_Consecutive_Days";

            _contextNames.Add(contextName);
            DbContextOptions <BAUDbContext> options = DbContextUtils.GetContextOptions(contextName);
            IShiftRepository repository             = null;
            const int        shiftDuration          = 4;

            // fake data
            using (BAUDbContext context = new BAUDbContext(options))
            {
                var engineer1 = new Engineer {
                    Name = "1"
                };
                var engineer2 = new Engineer {
                    Name = "2"
                };
                var engineer3 = new Engineer {
                    Name = "3"
                };
                var engineer4 = new Engineer {
                    Name = "4"
                };
                var engineer5 = new Engineer {
                    Name = "5"
                };
                var engineer6 = new Engineer {
                    Name = "6"
                };
                var engineer7 = new Engineer {
                    Name = "7"
                };
                var engineer8 = new Engineer {
                    Name = "8"
                };
                var engineer9 = new Engineer {
                    Name = "9"
                };
                var engineer10 = new Engineer {
                    Name = "10"
                };
                var engineersList = new List <Engineer>
                {
                    engineer1, engineer2, engineer3, engineer4,
                    engineer5, engineer6, engineer7, engineer8,
                    engineer9, engineer10,
                };

                context.Engineers.AddRange(engineersList);

                var today  = new DateTime(2017, 12, 11);
                var shifts = new List <EngineerShift>
                {
                    //first week
                    new EngineerShift {
                        Date = today.Date, Duration = shiftDuration, Engineer = engineer1
                    },
                    new EngineerShift {
                        Date = today.Date, Duration = shiftDuration, Engineer = engineer2
                    },
                    new EngineerShift {
                        Date = today.Date.AddDays(1), Duration = shiftDuration, Engineer = engineer7
                    },
                    new EngineerShift {
                        Date = today.Date.AddDays(2), Duration = shiftDuration, Engineer = engineer3
                    },
                    new EngineerShift {
                        Date = today.Date.AddDays(2), Duration = shiftDuration, Engineer = engineer4
                    },
                    new EngineerShift {
                        Date = today.Date.AddDays(4), Duration = shiftDuration, Engineer = engineer5
                    },
                    new EngineerShift {
                        Date = today.Date.AddDays(4), Duration = shiftDuration, Engineer = engineer6
                    },
                };

                context.EngineersShifts.AddRange(shifts);
                context.SaveChanges();
            }

            // test
            using (var context = new BAUDbContext(options))
            {
                repository = new ShiftRepository(context, ConfigurationTestBuilder.GetConfiguration());
                IList <Engineer> availableEngineers = repository.FindEngineersAvailableOn(date);
                Assert.Equal(nEngineers, availableEngineers.Count);
            }
        }