public void ThenIfTheRequestIsInvalidThenAValidationExceptionIsThrownAndIsRepositoryNeverCalled()
        {
            var request = new GetApprenticeshipsByUlnRequest();

            Func <Task> act = async() => await _sut.Handle(request);

            act.ShouldThrow <ValidationException>();

            _apprenticeshipRepository.Verify(x => x.GetApprenticeshipsByUln(It.IsAny <string>(), It.IsAny <long>()), Times.Never);
        }
        public async Task ThenTheRepositoryIsCalledToRetrieveApprenticeshipsByUln()
        {
            var request = new GetApprenticeshipsByUlnRequest
            {
                Uln = TestUln
            };

            var result = await _sut.Handle(request);

            _apprenticeshipRepository.Verify(x => x.GetApprenticeshipsByUln(It.IsAny <string>(), It.IsAny <long>()), Times.Once);

            result.Apprenticeships.ShouldAllBeEquivalentTo(CreateTestData(TestUln).Apprenticeships);
            result.TotalCount.ShouldBeEquivalentTo(6);
        }
        public async Task ThenTheRequestIsValidated()
        {
            var request = new GetApprenticeshipsByUlnRequest
            {
                Uln = TestUln
            };

            _ulnValidator
            .Setup(x => x.Validate(request.Uln))
            .Returns(UlnValidationResult.Success);

            await _sut.Handle(request);

            _ulnValidator.Verify(x => x.Validate(It.IsAny <string>()), Times.Once);
        }
        public async Task ThenCommitmentsApiIsCalledCorrectly()
        {
            var request = new GetApprenticeshipsByUlnRequest
            {
                AccountId = AccountId,
                Uln       = Uln
            };

            await _handler.Handle(request);

            _commitmentsApi.Verify(
                x => x.GetActiveApprenticeshipsForUln(
                    It.Is <long>(c => c.Equals(AccountId)),
                    It.Is <string>(c => c.Equals(Uln))),
                Times.Once);
        }
        public async Task ThenShouldOnlyReturnActiveRecords()
        {
            var request = new GetApprenticeshipsByUlnRequest
            {
                AccountId = 1L,
                Uln       = ""
            };

            var apprenticeship1 = new Apprenticeship()
            {
                Id = 1L, PaymentStatus = PaymentStatus.Active
            };
            var apprenticeship2 = new Apprenticeship()
            {
                Id = 2L, PaymentStatus = PaymentStatus.Completed
            };
            var apprenticeship3 = new Apprenticeship()
            {
                Id = 3L, PaymentStatus = PaymentStatus.PendingApproval
            };
            var apprenticeship4 = new Apprenticeship()
            {
                Id = 4L, PaymentStatus = PaymentStatus.Withdrawn
            };
            var apprenticeship5 = new Apprenticeship()
            {
                Id = 5L, PaymentStatus = PaymentStatus.Deleted
            };

            _commitmentsApi.Setup(x => x.GetActiveApprenticeshipsForUln(It.IsAny <long>(), It.IsAny <string>()))
            .ReturnsAsync(new List <Apprenticeship>()
            {
                apprenticeship1, apprenticeship2, apprenticeship3, apprenticeship4, apprenticeship5
            });

            var response = await _handler.Handle(request);

            response.Apprenticeships.Count.Should().Be(1);
        }