public async Task SendTranscriptRequest_should_return_ok_for_innetwork() { // Arrange: var sendTranscriptInfos = new SendTranscriptViewModel { TranscriptRequestId = 1, TranscriptRequestTypeId = 1, StudentId = "123", TranscriptId = 2, SchoolId = 456, ReceivingInstitutionCode = "code", ReceivingInstitutionName = "name" }; _mockTranscriptRequestRepository.Setup(trr => trr.GetSendTranscriptByTranscriptRequestIdAsync(It.IsAny <int>())).ReturnsAsync(sendTranscriptInfos); var submitData = new TranscriptSubmitRequestModel { TranscriptRequestType = TranscriptRequestType.InNetwork }; _mockTranscriptRequestService.Setup(trs => trs.IsSendTranscriptRequestInputValidAsync(It.IsAny <SendTranscriptViewModel>(), It.IsAny <TranscriptSubmitRequestModel>())).ReturnsAsync(true); // Act var actionResult = await CreateController().SendTranscriptRequest(1, submitData); //Assert // Make sure the correct service methods are called _mockTranscriptProviderService.Verify(tps => tps.SendTranscriptRequestAsync(1, "123", 2, 456, "code", "name", 456, ""), Times.Once); var contentResult = new OkObjectResult(actionResult); Assert.AreEqual(StatusCodes.Status200OK, contentResult.StatusCode); }
public async Task SendTranscriptRequest_should_return_ok_for_mail() { // Arrange: var sentTime = DateTime.UtcNow; var sendTranscriptInfos = new SendTranscriptViewModel { TranscriptRequestTypeId = 1 }; _mockTranscriptRequestRepository.Setup(trr => trr.GetSendTranscriptByTranscriptRequestIdAsync(It.IsAny <int>())).ReturnsAsync(sendTranscriptInfos); var submitData = new TranscriptSubmitRequestModel { TranscriptRequestType = TranscriptRequestType.Mail, DateSentByMail = sentTime }; _mockTranscriptRequestService.Setup(trs => trs.IsSendTranscriptRequestInputValidAsync(It.IsAny <SendTranscriptViewModel>(), It.IsAny <TranscriptSubmitRequestModel>())).ReturnsAsync(true); _mockTranscriptRequestService.Setup(trs => trs.GetDateSentByMailUtcAsync(It.IsAny <int>(), It.IsAny <DateTime>(), It.IsAny <bool>())).ReturnsAsync(sentTime); // Act var actionResult = await CreateController().SendTranscriptRequest(1, submitData); //Assert // Make sure the correct service methods are called _mockTranscriptRequestService.Verify(trs => trs.SubmitOutOfNetworkAsync(1, TranscriptRequestType.Mail, null, sentTime), Times.Once); _mockTranscriptRequestRepository.Verify(trr => trr.AppendHistoryAsync(1, TranscriptRequestStatus.Submitted, 456), Times.Once); var contentResult = new OkObjectResult(actionResult); Assert.AreEqual(StatusCodes.Status200OK, contentResult.StatusCode); }
public async Task IsSendTranscriptRequestInputValidAsync_should_return_false_for_invalid_ReceivingInstitutionEmail() { // Arrange var sendTranscriptInfos = new SendTranscriptViewModel { TranscriptRequestTypeId = 2 }; var submitData = new TranscriptSubmitRequestModel(); // Act var result = await CreateService().IsSendTranscriptRequestInputValidAsync(sendTranscriptInfos, submitData); // Assert Assert.IsFalse(result); }
public async Task IsSendTranscriptRequestInputValidAsync_should_return_true_for_valid_input() { // Arrange var sendTranscriptInfos = new SendTranscriptViewModel { TranscriptRequestTypeId = 1 }; var submitData = new TranscriptSubmitRequestModel { TranscriptRequestType = TranscriptRequestType.InNetwork }; // Act var result = await CreateService().IsSendTranscriptRequestInputValidAsync(sendTranscriptInfos, submitData); // Assert Assert.IsTrue(result); }
public async Task IsSendTranscriptRequestInputValidAsync_should_return_false_for_invalid_DateSentByMail() { // Arrange var sendTranscriptInfos = new SendTranscriptViewModel { TranscriptRequestTypeId = 2 }; var submitData = new TranscriptSubmitRequestModel { TranscriptRequestType = TranscriptRequestType.Mail, DateSentByMail = DateTime.UtcNow.AddDays(-2) }; _mockTranscriptRequestRepo.Setup(tr => tr.GetRequestedDateByIdAsync(It.IsAny <int>())).ReturnsAsync(DateTime.UtcNow); // Act var result = await CreateService().IsSendTranscriptRequestInputValidAsync(sendTranscriptInfos, submitData); // Assert Assert.IsFalse(result); }
public async Task <IActionResult> SendTranscriptRequest(int id, [FromBody] TranscriptSubmitRequestModel submitData) { // @TODO: Check if the current user is an educator and has permission to view Transcripts => THERE IS ALREADY A CHECK IN FE, THIS IS NECESSARY ONLY TO PROTECT THE API FROM PEOPLE USING SOFTWARE LIKE POSTMAN var userAccountId = GetClaim <int>(CcClaimType.UserAccountId); var sendTranscriptInfos = await _transcriptRequestRepository.GetSendTranscriptByTranscriptRequestIdAsync(id); if (!await _transcriptRequestService.IsSendTranscriptRequestInputValidAsync(sendTranscriptInfos, submitData)) { return(BadRequest()); } switch (submitData.TranscriptRequestType) { case TranscriptRequestType.Mail: var dateSentByMailUtc = await _transcriptRequestService.GetDateSentByMailUtcAsync(sendTranscriptInfos.TranscriptRequestId, submitData.DateSentByMail ?? DateTime.Now, submitData.SkipValidationForDateSentByMail); await _transcriptRequestService.SubmitOutOfNetworkAsync(id, TranscriptRequestType.Mail, dateSentByMailUtc : dateSentByMailUtc); await _transcriptRequestRepository.AppendHistoryAsync(id, TranscriptRequestStatus.Submitted, userAccountId); break; case TranscriptRequestType.Email: await _transcriptProviderService.SendTranscriptRequestAsync(sendTranscriptInfos.TranscriptRequestId, sendTranscriptInfos.StudentId, sendTranscriptInfos.TranscriptId, sendTranscriptInfos.SchoolId, sendTranscriptInfos.ReceivingInstitutionCode, sendTranscriptInfos.ReceivingInstitutionName, userAccountId, submitData?.ReceivingInstitutionEmail); await _transcriptRequestService.SubmitOutOfNetworkAsync(id, TranscriptRequestType.Email, receivingInstitutionEmail : submitData.ReceivingInstitutionEmail); break; default: await _transcriptProviderService.SendTranscriptRequestAsync(sendTranscriptInfos.TranscriptRequestId, sendTranscriptInfos.StudentId, sendTranscriptInfos.TranscriptId, sendTranscriptInfos.SchoolId, sendTranscriptInfos.ReceivingInstitutionCode, sendTranscriptInfos.ReceivingInstitutionName, userAccountId); break; } return(Ok()); }
public async Task <bool> IsSendTranscriptRequestInputValidAsync(SendTranscriptViewModel sendTranscriptInfos, TranscriptSubmitRequestModel submitData) { if (sendTranscriptInfos == null || submitData == null) { return(false); } // Make sure FE has provided the correct request type if (!Enum.IsDefined(typeof(TranscriptRequestType), submitData.TranscriptRequestType)) { return(false); } if (submitData.TranscriptRequestType == TranscriptRequestType.Email && String.IsNullOrWhiteSpace(submitData.ReceivingInstitutionEmail)) { return(false); } var dateSentByMailUtc = await GetDateSentByMailUtcAsync(sendTranscriptInfos.TranscriptRequestId, submitData.DateSentByMail ?? DateTime.Now, submitData.SkipValidationForDateSentByMail); if (submitData.TranscriptRequestType == TranscriptRequestType.Mail && !submitData.SkipValidationForDateSentByMail && (submitData.DateSentByMail == null || !await IsDateSentByMailInRangeAsync(sendTranscriptInfos.TranscriptRequestId, dateSentByMailUtc))) { return(false); } return(true); }