public void ShouldGetStatusOkIfNoProblem()
        {
            const int vacancyReferenceNumber = 1;
            var       provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.GetNextAvailableVacancy()).Returns(new DashboardVacancySummaryViewModel());

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            var result = mediator.RejectVacancy(vacancyReferenceNumber);

            result.Code.Should().Be(VacancyMediatorCodes.RejectVacancy.Ok);
        }
        public void ShouldReturnInvalidVacancyIfTheVacancyIsNotAvailableToQA()
        {
            const int vacancyReferenceNumber = 1;
            var       provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.RejectVacancy(vacancyReferenceNumber)).Returns(QAActionResultCode.InvalidVacancy);

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            var result = mediator.RejectVacancy(vacancyReferenceNumber);

            result.AssertMessage(VacancyMediatorCodes.RejectVacancy.InvalidVacancy, VacancyViewModelMessages.InvalidVacancy, UserMessageLevel.Error);
        }
        public void ShouldReturnNoAvailableVacanciesIfThereArentAnyAvailableVacancies()
        {
            const int vacancyReferenceNumber             = 1;
            DashboardVacancySummaryViewModel nullVacancy = null;

            var provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.GetNextAvailableVacancy()).Returns(nullVacancy);

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            var result = mediator.RejectVacancy(vacancyReferenceNumber);

            result.AssertMessage(VacancyMediatorCodes.RejectVacancy.NoAvailableVacancies, VacancyViewModelMessages.NoVacanciesAvailble, UserMessageLevel.Info);
        }
        public void ShouldGetTheNextVacancyIfVacancyIsRejected()
        {
            const int vacancyReferenceNumber = 1;
            var       pendingQAVacancies     = VacancyMediatorTestHelper.GetPendingVacancies(new[]
            {
                vacancyReferenceNumber
            });
            var provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.GetPendingQAVacancies()).Returns(pendingQAVacancies.ToList());

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            mediator.RejectVacancy(vacancyReferenceNumber);

            provider.Verify(p => p.GetNextAvailableVacancy(), Times.Once);
        }
        public void ShouldReturnTheNextAvailableVacancyAfterRejectingOne()
        {
            const int vacancyReferenceNumber     = 1;
            const int nextVacancyReferenceNumber = 2;

            var provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.GetNextAvailableVacancy())
            .Returns(new DashboardVacancySummaryViewModel {
                VacancyReferenceNumber = nextVacancyReferenceNumber
            });

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            var result = mediator.RejectVacancy(vacancyReferenceNumber);

            result.AssertCodeAndMessage(VacancyMediatorCodes.RejectVacancy.Ok);
            result.ViewModel.VacancyReferenceNumber.Should().Be(nextVacancyReferenceNumber);
        }
        public void ShouldUpdateTheStatusOfTheVacancyToDraft()
        {
            //Arrange
            const int vacancyReferenceNumber = 1;
            var       pendingQAVacancies     = VacancyMediatorTestHelper.GetPendingVacancies(new[]
            {
                vacancyReferenceNumber
            });
            var provider = new Mock <IVacancyQAProvider>();

            provider.Setup(p => p.GetPendingQAVacancies()).Returns(pendingQAVacancies.ToList());

            var mediator = new VacancyMediatorBuilder().With(provider).Build();

            //Act
            mediator.RejectVacancy(vacancyReferenceNumber);

            //Assert
            provider.Verify(p => p.RejectVacancy(vacancyReferenceNumber), Times.Once);
        }