public void Filter_Given_LessThanTwoEngineers_Throws_NotEnoughEngineersException(int engineersNumber)
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoDidntHadShiftYesterday(engineersNumber)
                            .Build();
            var sut = new ChooseTwoRandomEngineersFilter();

            //act and assert
            Assert.Throws <NotEnoughEngineersException>(() => sut.Filter(engineers));
        }
Beispiel #2
0
        public void Filter_Given_SupportEngineersWhoHadShiftInLastTwoWeeks_Retrun_EmptyCollection()
        {
            //arrange
            var engineersWheDidntHaveShiftInLastTwoWees = new SupportEngineerMocksBuilder()
                                                          .WihtEngineersWhoHadTwoShiftInLastTwoWeeks(5)
                                                          .Build();
            var sut = new EngineersWhoDidntHadTwoShiftsInLastTwoWeeksFilter();

            //act
            var filteredEngineers = sut.Filter(engineersWheDidntHaveShiftInLastTwoWees);

            //assert
            filteredEngineers.ShouldBeEmpty();
        }
Beispiel #3
0
        public void Filter_Given_SupportEngineersWhoDidntHaveShiftInLastTwoWeeks_Retrun_AllGivenEngineers()
        {
            //arrange
            var engineersWheDidntHaveShiftInLastTwoWees = new SupportEngineerMocksBuilder()
                                                          .WihtEngineersWhoDidntHadTwoShiftInLastTwoWeeks(5)
                                                          .Build();
            var sut = new EngineersWhoDidntHadTwoShiftsInLastTwoWeeksFilter();

            //act
            var filteredEngineers = sut.Filter(engineersWheDidntHaveShiftInLastTwoWees);

            //assert
            filteredEngineers.Count().ShouldBe(engineersWheDidntHaveShiftInLastTwoWees.Count());
        }
Beispiel #4
0
        public void Filter_Given_EngineersWhoDidntHadShiftInLastFiveDays_Return_GivenEngineers()
        {
            //arrange
            var engineersWhiDidntHadShiftInLastFiveDays = new SupportEngineerMocksBuilder()
                                                          .WithEngineersWhoDidntHadShiftInLastWeek(5)
                                                          .Build();

            var sut = new PreferEngineersWhoDidintHadShiftInLastWeekFilter();

            //act
            var result = sut.Filter(engineersWhiDidntHadShiftInLastFiveDays);

            //assert
            result.ShouldBe(engineersWhiDidntHadShiftInLastFiveDays);
        }
        public void Filter_Given_MoreThanOneEngineer_Returns_TwoRandomEngineers()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoDidntHadShiftYesterday(2)
                            .Build();
            var sut = new ChooseTwoRandomEngineersFilter();

            //act
            var chosenOnes = sut.Filter(engineers);

            //assert
            engineers.ShouldContain(chosenOnes.First());
            engineers.ShouldContain(chosenOnes.Last());
        }
Beispiel #6
0
        public void Filter_Given_10Engineers_When_ShiftWasntSelectedToday_Return_AllGivenEngineers()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WihtEngineersWhoDidntHadTwoShiftInLastTwoWeeks(10)
                            .Build();

            var sut = new ShiftSelectedTodayFilter();

            //act
            var result = sut.Filter(engineers);

            //assert
            result.Count().ShouldBe(engineers.Count());
        }
Beispiel #7
0
        public void Filter_Given_10Engineers_When_ShiftWasntSelectedToday_Then_CallSuccessor()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WihtEngineersWhoDidntHadTwoShiftInLastTwoWeeks(10)
                            .Build();
            var successor = A.Fake <ISupportEngineersFilterChain>();

            var sut = new ShiftSelectedTodayFilter(successor);

            //act
            var result = sut.Filter(engineers);

            //assert
            A.CallTo(() => successor.Filter(A <IEnumerable <ISupportEngineer> > ._))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
        public void SelectTodaysBAUShift_Returns_BauShiftWithFirstAndLastFromFilteredOutEngineers()
        {
            //arrange
            var supportEngineersFromFilter = new SupportEngineerMocksBuilder()
                                             .WithEngineersWhoDidntHadShiftYesterday(2)
                                             .Build();
            WheelOfFate sut = new WheelOfFateBuilder()
                              .WithSupportEngineersFromFilter(supportEngineersFromFilter)
                              .Build();

            //act
            BauShift todaysBauShift = sut.SelectTodaysBauShift();

            //assert
            supportEngineersFromFilter.First().ShouldBe(todaysBauShift.Shift.First());
            supportEngineersFromFilter.Last().ShouldBe(todaysBauShift.Shift.Last());
        }
        public void Filter_Given_MoreThanTwoEngineersAndSuccessor_Calls_Successor()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoHadShiftYesterday(10)
                            .Build();
            var successor = A.Fake <ISupportEngineersFilterChain>();

            var sut = new ChooseTwoRandomEngineersFilter(successor);

            //act
            var result = sut.Filter(engineers);


            //assert
            A.CallTo(() => successor.Filter(A <IEnumerable <ISupportEngineer> > ._))
            .MustHaveHappened(Repeated.Exactly.Once);
        }
        public void Filter_Given_SelectedEngineers_Then_LogShifForThem()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersAlreadySelectedForToday(2)
                            .Build();
            var sut = new LogShiftForSelectedEngineersFilter();

            //act
            var result = sut.Filter(engineers);

            //assert
            foreach (var supportEngineer in result)
            {
                A.CallTo(() => supportEngineer.LogTodaysShift())
                .MustHaveHappened(Repeated.Exactly.Once);
            }
        }
Beispiel #11
0
        public void Filter_Given_TwoEngineersWhoDidntHadShiftInLastWeek_And_FourEngineersWhoHad_Retrun_TwoWhoDidntHad()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoDidntHadShiftInLastWeek(2)
                            .WihtEngineersWhoHadShiftInLastWeeks(4)
                            .Build();

            var sut = new PreferEngineersWhoDidintHadShiftInLastWeekFilter();

            //act
            var result = sut.Filter(engineers);

            //assert
            result.Count().ShouldBe(2);
            result.Count(se =>
                         se.Name == nameof(SupportEngineerMocksBuilder.WithEngineersWhoDidntHadShiftInLastWeek))
            .ShouldBe(2);
        }
Beispiel #12
0
        Filter_Given_MoreThanTwoEngineersAndSuccessor_When_ShiftWasAlreadySelectedToday_SuccessorIsNotCalled()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoDidntHadShiftYesterday(8)
                            .WithEngineersAlreadySelectedForToday(2)
                            .Build();

            var successor = A.Fake <ISupportEngineersFilterChain>();

            var sut = new ShiftSelectedTodayFilter(successor);

            //act
            var result = sut.Filter(engineers);

            //assert
            A.CallTo(() => successor.Filter(A <IEnumerable <ISupportEngineer> > ._))
            .MustNotHaveHappened();
        }
Beispiel #13
0
        Filter_Given_MoreThanTwoEngineersAndSuccessor_When_ShiftWasAlreadySelectedToday_Return_AlreadySelectedEngineers()
        {
            //arrange
            var engineers = new SupportEngineerMocksBuilder()
                            .WithEngineersWhoDidntHadShiftYesterday(8)
                            .WithEngineersAlreadySelectedForToday(2)
                            .Build();

            var successor = A.Fake <ISupportEngineersFilterChain>();

            var sut = new ShiftSelectedTodayFilter(successor);

            //act
            var result = sut.Filter(engineers);

            //assert
            result.First().Name
            .ShouldBe(nameof(SupportEngineerMocksBuilder.WithEngineersAlreadySelectedForToday));
            result.Last().Name
            .ShouldBe(nameof(SupportEngineerMocksBuilder.WithEngineersAlreadySelectedForToday));
        }