public async Task ShouldThrowValidationExceptionOnModifyWhenExamIdIsInvalidAndLogItAsync() { //given Guid invalidExamId = Guid.Empty; DateTimeOffset dateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(dateTime); Exam invalidExam = randomExam; invalidExam.Id = invalidExamId; var invalidExamException = new InvalidExamInputException( parameterName: nameof(Exam.Id), parameterValue: invalidExam.Id); var expectedExamValidationException = new ExamValidationException(invalidExamException); //when ValueTask <Exam> modifyExamTask = this.examService.ModifyExamAsync(invalidExam); //then await Assert.ThrowsAsync <ExamValidationException>(() => modifyExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnModifyWhenUpdatedDateIsSameAsCreatedDateAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(dateTime); Exam inputExam = randomExam; var invalidExamInputException = new InvalidExamInputException( parameterName: nameof(Exam.UpdatedDate), parameterValue: inputExam.UpdatedDate); var expectedExamValidationException = new ExamValidationException(invalidExamInputException); // when ValueTask <Exam> modifyExamTask = this.examService.ModifyExamAsync(inputExam); // then await Assert.ThrowsAsync <ExamValidationException>(() => modifyExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnModifyIfStorageCreatedByNotSameAsCreatedByAndLogItAsync() { // given int randomNegativeMinutes = GetNegativeRandomNumber(); Guid differentId = Guid.NewGuid(); Guid invalidCreatedBy = differentId; DateTimeOffset randomDate = GetRandomDateTime(); Exam randomExam = CreateRandomExam(randomDate); Exam invalidExam = randomExam; invalidExam.CreatedDate = randomDate.AddMinutes(randomNegativeMinutes); Exam storageExam = randomExam.DeepClone(); Guid ExamId = invalidExam.Id; invalidExam.CreatedBy = invalidCreatedBy; var invalidExamInputException = new InvalidExamInputException( parameterName: nameof(Exam.CreatedBy), parameterValue: invalidExam.CreatedBy); var expectedExamValidationException = new ExamValidationException(invalidExamInputException); this.storageBrokerMock.Setup(broker => broker.SelectExamByIdAsync(ExamId)) .ReturnsAsync(storageExam); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDate); // when ValueTask <Exam> modifyExamTask = this.examService.ModifyExamAsync(invalidExam); // then await Assert.ThrowsAsync <ExamValidationException>(() => modifyExamTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(invalidExam.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenCreatedDateIsNotRecentAndLogItAsync( int minutes) { // given DateTimeOffset dateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(dateTime); Exam inputExam = randomExam; inputExam.UpdatedBy = inputExam.CreatedBy; inputExam.CreatedDate = dateTime.AddMinutes(minutes); inputExam.UpdatedDate = inputExam.CreatedDate; var invalidExamInputException = new InvalidExamInputException( parameterName: nameof(Exam.CreatedDate), parameterValue: inputExam.CreatedDate); var expectedExamValidationException = new ExamValidationException(invalidExamInputException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <Exam> createExamTask = this.examService.AddExamAsync(inputExam); // then await Assert.ThrowsAsync <ExamValidationException>(() => createExamTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertExamAsync(It.IsAny <Exam>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnRetrieveByIdWhenIdIsInvalidAndLogItAsync() { // given Guid randomExamId = default; Guid inputExamId = randomExamId; var invalidExamInputException = new InvalidExamInputException( parameterName: nameof(Exam.Id), parameterValue: inputExamId); var expectedExamValidationException = new ExamValidationException(invalidExamInputException); // when ValueTask <Exam> retrieveExamByIdTask = this.examService.RetrieveExamByIdAsync(inputExamId); // then await Assert.ThrowsAsync <ExamValidationException>(() => retrieveExamByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenIdIsInvalidAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(dateTime); Exam inputExam = randomExam; inputExam.Id = default; var invalidExamInputException = new InvalidExamInputException( parameterName: nameof(Exam.Id), parameterValue: inputExam.Id); var expectedExamValidationException = new ExamValidationException(invalidExamInputException); // when ValueTask <Exam> createExamTask = this.examService.AddExamAsync(inputExam); // then await Assert.ThrowsAsync <ExamValidationException>(() => createExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertExamAsync(It.IsAny <Exam>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }