public async Task WhenAnEmploymentCheckIsRequestedThenACheckIsRequestedForThePayeSchemesLinkedToTheEmployersAccount() { var request = new RequestEmploymentCheckForEmployerPayeSchemesRequest("AB12345C", 1324, 6543, 4353443, DateTime.Now.AddYears(-1)); var expectedAccountId = 349875; _commitmentsApi.Setup(x => x.GetProviderApprenticeship(request.Ukprn, request.ApprenticeshipId)).ReturnsAsync(new Apprenticeship { EmployerAccountId = expectedAccountId }); var accountPayeSchemes = new List <ResourceViewModel> { new ResourceViewModel { Id = "ABC/123" }, new ResourceViewModel { Id = "ZZZ/999" } }; var account = new AccountDetailViewModel { PayeSchemes = new ResourceList(accountPayeSchemes) }; _accountApiClient.Setup(x => x.GetAccount(expectedAccountId)).ReturnsAsync(account); await _target.Handle(request); _messagePublisher.Verify( x => x.PublishAsync(It.Is <EmploymentCheckRequiredForAccountMessage>(y => y.Uln == request.Uln && y.ActualStartDate == request.ActualStartDate && y.EmployerAccountId == expectedAccountId && y.NationalInsuranceNumber == request.NationalInsuranceNumber && y.Ukprn == request.Ukprn && y.PayeSchemes.SequenceEqual(accountPayeSchemes.Select(z => z.Id)))), Times.Once()); }
protected override async Task ProcessMessage(EmploymentCheckRequiredForApprenticeMessage messageContent) { var request = new RequestEmploymentCheckForEmployerPayeSchemesRequest ( messageContent.NationalInsuranceNumber, messageContent.Uln, messageContent.ApprenticeshipId, messageContent.Ukprn, messageContent.ActualStartDate ); await _mediator.PublishAsync(request); }
public async Task WhenTheCommitmentHasADifferentProviderIdToThRequestThenANegativeEmploymentCheckResultIsStored() { var request = new RequestEmploymentCheckForEmployerPayeSchemesRequest("AB12345C", 1324, 6543, 4353443, DateTime.Now.AddYears(-1)); _commitmentsApi.Setup(x => x.GetProviderApprenticeship(request.Ukprn, request.ApprenticeshipId)).Throws(new HttpRequestException("SAD STRING THAT CONTAINS 401 SO WE CAN DETERMINE THE STATUS CODE! :(")); await _target.Handle(request); _repository.Verify(x => x.StoreEmploymentCheckResult(It.Is <PreviousHandledSubmissionEvent>(y => y.Uln == request.Uln && y.NiNumber == request.NationalInsuranceNumber && !y.PassedValidationCheck)), Times.Once); _eventsApi.Verify(x => x.CreateGenericEvent(It.Is <GenericEvent>(y => !string.IsNullOrWhiteSpace(y.Payload) && y.Type == "EmploymentCheckCompleteEvent")), Times.Once); }