Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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>();
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }