Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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());
        }
Exemple #7
0
        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);
        }