public void When_Several_Matching_Outcomes_And_Some_Are_InProgress_Returns_InProgress(int passOutcomes, int failOutcomes, int inProgressOutcomes)
        {
            for (int p = 0; p < passOutcomes; p++)
            {
                _outcomes.Add(new ModeratorPageReviewOutcome {
                    SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Pass
                });
            }

            for (int f = 0; f < failOutcomes; f++)
            {
                _outcomes.Add(new ModeratorPageReviewOutcome {
                    SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Fail
                });
            }

            for (int i = 0; i < inProgressOutcomes; i++)
            {
                _outcomes.Add(new ModeratorPageReviewOutcome {
                    SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.InProgress
                });
            }

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.AreEqual(SectionStatus.InProgress, result);
        }
        public void When_Several_Matching_Outcomes_And_All_Pass_Or_Fail_Returns_Expected_Status(int passOutcomes, int failOutcomes, bool isSectorsSection, string expectedStatus)
        {
            if (isSectorsSection)
            {
                _sequenceNumber = SequenceIds.DeliveringApprenticeshipTraining;
                _sectionNumber  = SectionIds.DeliveringApprenticeshipTraining.YourSectorsAndEmployees;
            }

            for (int p = 0; p < passOutcomes; p++)
            {
                _outcomes.Add(new ModeratorPageReviewOutcome {
                    SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Pass
                });
            }

            for (int f = 0; f < failOutcomes; f++)
            {
                _outcomes.Add(new ModeratorPageReviewOutcome {
                    SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Fail
                });
            }

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.AreEqual(expectedStatus, result);
        }
        public void When_Outcomes_IsEmpty_Returns_Empty()
        {
            _outcomes = new List <ModeratorPageReviewOutcome>();

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.IsEmpty(result);
        }
        public void When_Outcomes_IsNull_Then_returns_Empty()
        {
            _outcomes = null;

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.IsEmpty(result);
        }
        public void When_Single_Outcome_Returns_Expected_Status(string pageReviewStatus, string expectedStatus)
        {
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = pageReviewStatus
            });

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.AreEqual(expectedStatus, result);
        }
        public void When_Outcomes_DoNotMatch_Requested_SectionNumber_Returns_Empty()
        {
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber + 1
            });
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber + 2
            });

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.IsEmpty(result);
        }
        public void When_Several_Matching_Outcomes_And_All_Empty_Returns_Empty()
        {
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = string.Empty
            });
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = string.Empty
            });
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = string.Empty
            });

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.IsEmpty(result);
        }
        public void When_Several_Matching_Outcomes_And_All_Pass_Returns_Pass()
        {
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Pass
            });
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Pass
            });
            _outcomes.Add(new ModeratorPageReviewOutcome {
                SequenceNumber = _sequenceNumber, SectionNumber = _sectionNumber, Status = ModeratorPageReviewStatus.Pass
            });

            var result = StatusService.GetModerationSectionStatus(_outcomes, _sequenceNumber, _sectionNumber);

            Assert.AreEqual(SectionStatus.Pass, result);
        }