Example #1
0
        public async Task Then_the_certificate_is_updated(
            int?updatedAchievementYear, int?updatedAchievementMonth, int?updatedAchievementDay, string updatedCertificateGrade, string updateCertificateStatus,
            int?currentLatestEpaYear, int?currentLatestEpaMonth, int?currentLastestEpaDay, string currentLatestEpaOutcome,
            int?updatedLatestEpaYear, int?updatedLatestEpaMonth, int?updatedLastestEpaDay, string updatedLatestEpaOutcome, int numberOfEpaDetails)
        {
            CertificateRepository = new Mock <ICertificateRepository>();
            CertificateRepository.Setup(r => r.GetCertificateLogsFor(CertificateId)).ReturnsAsync(new List <CertificateLog>());

            var updatedAchievementDate = updatedAchievementYear.HasValue && updatedAchievementMonth.HasValue && updatedAchievementDay.HasValue
                ? new DateTime(updatedAchievementYear.Value, updatedAchievementMonth.Value, updatedAchievementDay.Value)
                : (DateTime?)null;

            var certificateData = Builder <CertificateData> .CreateNew()
                                  .With(ecd => ecd.OverallGrade    = updatedCertificateGrade)
                                  .With(ecd => ecd.AchievementDate = updatedAchievementDate)
                                  .Build();

            var currentLatestEpaDate = currentLatestEpaYear.HasValue && currentLatestEpaMonth.HasValue && currentLastestEpaDay.HasValue
                ? new DateTime(currentLatestEpaYear.Value, currentLatestEpaMonth.Value, currentLastestEpaDay.Value)
                : (DateTime?)null;

            if (currentLatestEpaDate.HasValue)
            {
                certificateData.EpaDetails = new EpaDetails
                {
                    LatestEpaDate    = currentLatestEpaDate.Value,
                    LatestEpaOutcome = currentLatestEpaOutcome,
                    Epas             = new List <EpaRecord>
                    {
                        new EpaRecord
                        {
                            EpaDate    = currentLatestEpaDate.Value,
                            EpaOutcome = currentLatestEpaOutcome
                        }
                    }
                };
            }

            var certificate = Builder <Certificate> .CreateNew()
                              .With(c => c.Id = CertificateId)
                              .With(c => c.CertificateReference = CertificateReference)
                              .With(c => c.Status          = updateCertificateStatus)
                              .With(c => c.CertificateData = JsonConvert.SerializeObject(certificateData))
                              .Build();

            CertificateRepository.Setup(r => r.Update(It.Is <Certificate>(c => c.CertificateReference == CertificateReference), "user", null, true, null))
            .ReturnsAsync(certificate);

            var updatedLatestEpaDate = updatedLatestEpaYear.HasValue && updatedLatestEpaMonth.HasValue && updatedLastestEpaDay.HasValue
                ? new DateTime(updatedLatestEpaYear.Value, updatedLatestEpaMonth.Value, updatedLastestEpaDay.Value)
                : (DateTime?)null;

            Sut = new UpdateCertificateHandler(CertificateRepository.Object, new Mock <ILogger <UpdateCertificateHandler> >().Object);
            await Sut.Handle(new UpdateCertificateRequest(certificate) { Username = "******" }, new CancellationToken());

            CertificateRepository.Verify(r => r.Update(It.Is <Certificate>(updatedCertificate =>
                                                                           VerifyCertificateUpdated(certificate, updatedCertificate, updatedLatestEpaDate, updatedLatestEpaOutcome, numberOfEpaDetails)), "user", null, true, null));
        }
 public TheFixture()
 {
     _certificateRepository = new Mock <ICertificateRepository>();
     _mediator = new Mock <IMediator>();
     _sut      = new UpdateCertificateHandler(_certificateRepository.Object, _mediator.Object, new Mock <ILogger <UpdateCertificateHandler> >().Object);
 }