public async Task WhenCallingUpdateEpa_ValidationSuccessful_ReturnsEPADetails( Standard standard, EpaDetails epaDetails, UpdateBatchEpaRequest request) { //Arrange var validationResult = new ValidationResult(); _mockMediator.Setup(s => s.Send(It.IsAny <GetStandardVersionRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockMediator.Setup(t => t.Send(It.Is <GetCertificateForUlnRequest>(s => s.Uln == request.Uln && s.StandardCode == standard.LarsCode), new System.Threading.CancellationToken())).ReturnsAsync((Certificate)null); _mockMediator.Setup(s => s.Send(It.IsAny <UpdateBatchEpaRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(epaDetails); _mockUpdateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Update(new List <UpdateBatchEpaRequest> { 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().BeEquivalentTo(epaDetails); result.ValidationErrors.Should().BeEmpty(); }
public async Task WhenCallingUpdateEpa_WithExistingCertificate_VersionIsNotSupplied_CertificateUsedToPopulateFields( Standard standard, Certificate certificate, CertificateData certificateData, UpdateBatchEpaRequest request) { //Arrange request.Version = null; request.StandardReference = null; certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockMediator.Setup(s => s.Send(It.IsAny <GetCalculatedStandardVersionForApprenticeshipRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockMediator.Setup(t => t.Send(It.Is <GetCertificateForUlnRequest>(s => s.Uln == request.Uln && s.StandardCode == standard.LarsCode), new System.Threading.CancellationToken())).ReturnsAsync(certificate); _mockUpdateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Update(new List <UpdateBatchEpaRequest> { 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(certificateData.Version); request.StandardUId.Should().Be(certificate.StandardUId); request.StandardReference.Should().Be(standard.IfateReferenceNumber); request.StandardCode.Should().NotBe(standard.LarsCode); }
public void AndCertificateNotFound_ThrowsNotFound(UpdateBatchEpaRequest request) { //Arrange _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync((Certificate)null); //Act Func <Task> act = async() => { await _sut.Handle(request, new CancellationToken()); }; //Assert act.Should().Throw <NotFoundException>(); }
public async Task AndCertificateFound_UpdatesEpaDetailsFromRequest_AndReturnsResult( UpdateBatchEpaRequest request, Certificate certificate, CertificateData certificateData) { //Arrange certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).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.EpaReference.Should().Be(certificate.CertificateReference); 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 AndCertificateFound_SetsCertDataForPass( UpdateBatchEpaRequest request, Certificate certificate, CertificateData certificateData) { //Arrange certificate.CertificateData = JsonConvert.SerializeObject(certificateData); _mockCertificateRepository.Setup(s => s.GetCertificate(request.Uln, request.StandardCode)).ReturnsAsync(certificate); var latestEpa = request.EpaDetails.Epas.OrderByDescending(s => s.EpaDate).FirstOrDefault(); latestEpa.EpaOutcome = EpaOutcome.Pass; var epaAction = CertificateActions.Epa; //Act var result = await _sut.Handle(request, new CancellationToken()); //Assert var data = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); data.AchievementDate.Should().BeNull(); data.OverallGrade.Should().BeNull(); certificate.Status.Should().Be(CertificateStatus.Draft); _mockCertificateRepository.Verify(s => s.Update(It.IsAny <Certificate>(), "API", epaAction, true, null), Times.Once); }
public async Task WhenCallingUpdateEpa_NoExistingCertificate_VersionIsSupplied_GetStandardVersionRequestSent_AndFieldsPopulated( Standard standard, UpdateBatchEpaRequest request) { //Arrange request.Version = "1.0"; request.StandardCode = 0; _mockMediator.Setup(s => s.Send(It.IsAny <GetStandardVersionRequest>(), new System.Threading.CancellationToken())).ReturnsAsync(standard); _mockMediator.Setup(t => t.Send(It.Is <GetCertificateForUlnRequest>(s => s.Uln == request.Uln && s.StandardCode == standard.LarsCode), new System.Threading.CancellationToken())).ReturnsAsync((Certificate)null); _mockUpdateBatchValidator.Setup(s => s.ValidateAsync(request, new System.Threading.CancellationToken())).ReturnsAsync(new ValidationResult()); //Act var controllerResult = await _epaBatchController.Update(new List <UpdateBatchEpaRequest> { 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); }