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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }