public async Task <ValidationResponse> ProcessCertificatesPrintStatusUpdate(CertificatePrintStatusUpdate certificatePrintStatusUpdate) { var model = new CertificatesPrintStatusUpdateRequest() { BatchNumber = certificatePrintStatusUpdate.BatchNumber, CertificateReference = certificatePrintStatusUpdate.CertificateReference, ReasonForChange = certificatePrintStatusUpdate.ReasonForChange, Status = certificatePrintStatusUpdate.Status, StatusAt = certificatePrintStatusUpdate.StatusAt }; return(await _assessorServiceApiClient.UpdateCertificatesPrintStatus(model)); }
private async Task <CertificatePrintStatusUpdate> Validate(CertificatePrintStatusUpdate certificatePrintStatus, ValidationResponse validationResult) { if (!CertificateStatus.HasPrintNotificateStatus(certificatePrintStatus.Status)) { validationResult.Errors.Add( new ValidationErrorDetail("CertificatePrintStatuses", $"The certificate status {certificatePrintStatus.Status} is not a valid print notification status.", ValidationStatusCode.BadRequest)); } if (!await IsValidBatchNumber(certificatePrintStatus.BatchNumber)) { validationResult.Errors.Add( new ValidationErrorDetail("BatchNumber", $"The batch number {certificatePrintStatus.BatchNumber} was not found.", ValidationStatusCode.NotFound)); } return(validationResult.Errors.Count == 0 ? certificatePrintStatus : null); }
public async Task Then_AssessorApiCalled_ToGetBatch() { // Arrange var sut = new Domain.Print.Services.CertificateService(_mockAssessorServiceApiClient.Object, _mockLogger.Object); var certificatePrintStatusUpdate = new CertificatePrintStatusUpdate { BatchNumber = 1, CertificateReference = "00010111", ReasonForChange = "", Status = CertificateStatus.Delivered, StatusAt = DateTime.UtcNow }; // Act await sut.ProcessCertificatesPrintStatusUpdate(certificatePrintStatusUpdate); // Assert _mockAssessorServiceApiClient.Verify(v => v.UpdateCertificatesPrintStatus( It.Is <CertificatesPrintStatusUpdateRequest>(c => JsonConvert.SerializeObject(c).Equals(JsonConvert.SerializeObject(certificatePrintStatusUpdate)))), Times.Once); }