public async Task AndCreatesNewCertificate_UpdatesEpaDetails( CreateBatchEpaRequest request, CertificateData certificateData, Certificate certificate) { //Arrange // Reset EpaDetails certificateData.EpaDetails = new EpaDetails { Epas = new System.Collections.Generic.List <EpaRecord>() }; certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <StartCertificateRequest>(), new CancellationToken())).ReturnsAsync(certificate); //Act var result = await _sut.Handle(request, new CancellationToken()); //Assert var latestEpa = request.EpaDetails.Epas.OrderByDescending(s => s.EpaDate).FirstOrDefault(); result.LatestEpaDate.Should().Be(latestEpa.EpaDate); result.LatestEpaOutcome.Should().Be(latestEpa.EpaOutcome); result.Epas.Should().BeEquivalentTo(request.EpaDetails.Epas); _mockCertificateRepository.Verify(s => s.Update(It.IsAny <Certificate>(), "API", It.IsAny <string>(), true, null), Times.Once); }
public async Task WhenCallingCreateEpa_ValidationNotSuccessful_ReturnsValidationErrors( Standard standard, IEnumerable <ValidationFailure> failures, CreateBatchEpaRequest request) { //Arrange var validationResult = new ValidationResult(failures); _mockMediator.Setup(s => s.Send(It.IsAny <GetStandardVersionRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockCreateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(validationResult); //Act var controllerResult = await _epaBatchController.Create(new List <CreateBatchEpaRequest> { request }) as ObjectResult; //Assert controllerResult.StatusCode.Should().Be((int)HttpStatusCode.OK); var model = controllerResult.Value as IEnumerable <BatchEpaResponse>; var result = model.First(); result.RequestId.Should().Be(request.RequestId); result.StandardCode.Should().Be(request.StandardCode); result.StandardReference.Should().Be(request.StandardReference); result.Uln.Should().Be(request.Uln); result.FamilyName.Should().Be(request.FamilyName); result.EpaDetails.Should().BeNull(); result.ValidationErrors.Should().BeEquivalentTo(failures.Select(s => s.ErrorMessage)); }
public async Task AndCreatesNewCertificate_SetsCertificateDataForFail( CreateBatchEpaRequest request, CertificateData certificateData, Certificate certificate) { //Arrange certificateData.EpaDetails = new EpaDetails { Epas = new List <EpaRecord>() }; // reset details for fail. certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <StartCertificateRequest>(), new CancellationToken())).ReturnsAsync(certificate); var latestEpa = request.EpaDetails.Epas.OrderByDescending(s => s.EpaDate).FirstOrDefault(); latestEpa.EpaOutcome = EpaOutcome.Fail; var epaAction = CertificateActions.Submit; //Act var result = await _sut.Handle(request, new CancellationToken()); //Assert var data = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); data.AchievementDate.Should().Be(latestEpa.EpaDate); data.OverallGrade.Should().Be(latestEpa.EpaOutcome); certificate.Status.Should().Be(CertificateStatus.Submitted); _mockCertificateRepository.Verify(s => s.Update(It.IsAny <Certificate>(), "API", epaAction, true, null), Times.Once); }
public void AndCertificateNotFound_StartsNewCertificateRequest_ReturnsNull_ThrowsException( CreateBatchEpaRequest request) { //Arrange _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <StartCertificateRequest>(), new CancellationToken())).ReturnsAsync((Certificate)null); //Act Func <Task> act = async() => { await _sut.Handle(request, new CancellationToken()); }; //Assert act.Should().Throw <NotFoundException>(); }
public async Task AndCertificateNotFound_StartsNewCertificateRequest( CreateBatchEpaRequest request, CertificateData certificateData, Certificate certificate) { //Arrange certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <StartCertificateRequest>(), new CancellationToken())).ReturnsAsync(certificate); //Act var result = await _sut.Handle(request, new CancellationToken()); //Assert _mockMediator.Verify(v => v.Send(It.Is <StartCertificateRequest>( r => r.StandardCode == request.StandardCode && r.UkPrn == request.UkPrn && r.Uln == request.Uln && r.Username == "API" && r.CourseOption == request.CourseOption && r.StandardUId == request.StandardUId), new CancellationToken()), Times.Once); }
public async Task WhenCallingCreateEpa_VersionIsNotSupplied_CalculateStandardVersionRequestSent_AndFieldsPopulated( Standard standard, CreateBatchEpaRequest request) { //Arrange request.Version = null; request.StandardReference = null; _mockMediator.Setup(s => s.Send(It.IsAny <GetCalculatedStandardVersionForApprenticeshipRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockCreateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Create(new List <CreateBatchEpaRequest> { request }) as ObjectResult; //Assert _mockMediator.Verify(a => a.Send(It.Is <GetCalculatedStandardVersionForApprenticeshipRequest>(b => b.StandardId == request.StandardCode.ToString() && b.Uln == request.Uln), new System.Threading.CancellationToken()), Times.Once); request.Version.Should().Be(standard.Version); request.StandardUId.Should().Be(standard.StandardUId); request.StandardReference.Should().Be(standard.IfateReferenceNumber); // Existing field shouldn't be overwritten. request.StandardCode.Should().NotBe(standard.LarsCode); }
public async Task WhenCallingCreateEpa_VersionIsSupplied_GetStandardVersionRequestSent_AndFieldsPopulated( Standard standard, CreateBatchEpaRequest request) { //Arrange request.Version = "1.0"; request.StandardCode = 0; _mockMediator.Setup(s => s.Send(It.IsAny <GetStandardVersionRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockCreateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Create(new List <CreateBatchEpaRequest> { request }) as ObjectResult; //Assert _mockMediator.Verify(a => a.Send(It.Is <GetStandardVersionRequest>(b => b.StandardId == request.StandardReference && b.Version == request.Version), new System.Threading.CancellationToken()), Times.Once); request.StandardCode.Should().Be(standard.LarsCode); request.StandardReference.Should().NotBe(standard.IfateReferenceNumber); request.StandardUId.Should().Be(standard.StandardUId); // Making sure the standard doesn't overwrite the version in populate fields. request.Version.Should().NotBe(standard.Version); }