public async void ShouldThrowValidationExceptionOnModifyWhenSemesterCourseIsNullAndLogItAsync() { //given SemesterCourse invalidSemesterCourse = null; var nullSemesterCourseException = new NullSemesterCourseException(); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(nullSemesterCourseException); //when ValueTask <SemesterCourse> modifySemesterCourseTask = this.semesterCourseService.ModifySemesterCourseAsync(invalidSemesterCourse); //then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => modifySemesterCourseTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedSemesterCourseValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnModifyWhenSemesterCourseIdIsInvalidAndLogItAsync() { //given Guid invalidSemesterCourseId = Guid.Empty; DateTimeOffset dateTime = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(dateTime); SemesterCourse invalidSemesterCourse = randomSemesterCourse; invalidSemesterCourse.Id = invalidSemesterCourseId; var invalidSemesterCourseInputException = new InvalidSemesterCourseInputException( parameterName: nameof(SemesterCourse.Id), parameterValue: invalidSemesterCourse.Id); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(invalidSemesterCourseInputException); //when ValueTask <SemesterCourse> modifySemesterCourseTask = this.semesterCourseService.ModifySemesterCourseAsync(invalidSemesterCourse); //then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => modifySemesterCourseTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedSemesterCourseValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnCreateWhenSemesterCourseIsNullAndLogItAsync() { // given SemesterCourse randomSemesterCourse = null; SemesterCourse nullSemesterCourse = randomSemesterCourse; var nullSemesterCourseException = new NullSemesterCourseException(); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(nullSemesterCourseException); // when ValueTask <SemesterCourse> createSemesterCourseTask = this.semesterCourseService.CreateSemesterCourseAsync(nullSemesterCourse); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => createSemesterCourseTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private SemesterCourseValidationException CreateAndLogValidationException(Exception exception) { var semesterCourseValidationException = new SemesterCourseValidationException(exception); this.loggingBroker.LogError(semesterCourseValidationException); return(semesterCourseValidationException); }
public async Task ShouldThrowValidationExceptionOnModifyIfStorageCreatedByNotSameAsCreatedByAndLogItAsync() { // given int randomNegativeMinutes = GetNegativeRandomNumber(); Guid differentId = Guid.NewGuid(); Guid invalidCreatedBy = differentId; DateTimeOffset randomDate = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(randomDate); SemesterCourse invalidSemesterCourse = randomSemesterCourse; invalidSemesterCourse.CreatedDate = randomDate.AddMinutes(randomNegativeMinutes); SemesterCourse storageSemesterCourse = randomSemesterCourse.DeepClone(); Guid semesterCourseId = invalidSemesterCourse.Id; invalidSemesterCourse.CreatedBy = invalidCreatedBy; var invalidSemesterCourseInputException = new InvalidSemesterCourseException( parameterName: nameof(SemesterCourse.CreatedBy), parameterValue: invalidSemesterCourse.CreatedBy); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(invalidSemesterCourseInputException); this.storageBrokerMock.Setup(broker => broker.SelectSemesterCourseByIdAsync(semesterCourseId)) .ReturnsAsync(storageSemesterCourse); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDate); // when ValueTask <SemesterCourse> modifySemesterCourseTask = this.semesterCourseService.ModifySemesterCourseAsync(invalidSemesterCourse); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => modifySemesterCourseTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(invalidSemesterCourse.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnCreateWhenSemesterCourseAlreadyExistsAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(dateTime); SemesterCourse alreadyExistsSemesterCourse = randomSemesterCourse; alreadyExistsSemesterCourse.UpdatedBy = alreadyExistsSemesterCourse.CreatedBy; string randomMessage = GetRandomMessage(); string exceptionMessage = randomMessage; var duplicateKeyException = new DuplicateKeyException(exceptionMessage); var alreadyExistsSemesterCourseException = new AlreadyExistsSemesterCourseException(duplicateKeyException); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(alreadyExistsSemesterCourseException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertSemesterCourseAsync(alreadyExistsSemesterCourse)) .ThrowsAsync(duplicateKeyException); // when ValueTask <SemesterCourse> createSemesterCourseTask = this.semesterCourseService.CreateSemesterCourseAsync(alreadyExistsSemesterCourse); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => createSemesterCourseTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertSemesterCourseAsync(alreadyExistsSemesterCourse), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnModifyWhenUpdatedDateIsNotRecentAndLogItAsync( int minutes) { // given DateTimeOffset dateTime = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(dateTime); SemesterCourse inputSemesterCourse = randomSemesterCourse; inputSemesterCourse.UpdatedBy = inputSemesterCourse.CreatedBy; inputSemesterCourse.CreatedDate = inputSemesterCourse.CreatedDate; inputSemesterCourse.UpdatedDate = dateTime.AddMinutes(minutes); var invalidSemesterCourseInputException = new InvalidSemesterCourseException( parameterName: nameof(SemesterCourse.UpdatedDate), parameterValue: inputSemesterCourse.UpdatedDate); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(invalidSemesterCourseInputException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <SemesterCourse> modifySemesterCourseTask = this.semesterCourseService.ModifySemesterCourseAsync(inputSemesterCourse); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => modifySemesterCourseTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnDeleteWhenStorageSemesterCourseIsInvalidAndLogItAsync() { // given DateTimeOffset randomDateTime = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(randomDateTime); Guid inputSemesterCourseId = randomSemesterCourse.Id; SemesterCourse nullStorageSemesterCourse = null; var notFoundSemesterCourseException = new NotFoundSemesterCourseException(inputSemesterCourseId); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(notFoundSemesterCourseException); this.storageBrokerMock.Setup(broker => broker.SelectSemesterCourseByIdAsync(inputSemesterCourseId)) .ReturnsAsync(nullStorageSemesterCourse); // when ValueTask <SemesterCourse> actualSemesterCourseDeleteTask = this.semesterCourseService.RemoveSemesterCourseByIdAsync(inputSemesterCourseId); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => actualSemesterCourseDeleteTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(inputSemesterCourseId), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteSemesterCourseAsync(It.IsAny <SemesterCourse>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnRetrieveWhenStorageSemesterCourseIsNullAndLogItAsync() { // given Guid randomSemesterCourseId = Guid.NewGuid(); Guid inputSemesterCourseId = randomSemesterCourseId; SemesterCourse invalidStorageSemesterCourse = null; var notFoundSemesterCourseException = new NotFoundSemesterCourseException(inputSemesterCourseId); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(notFoundSemesterCourseException); this.storageBrokerMock.Setup(broker => broker.SelectSemesterCourseByIdAsync(inputSemesterCourseId)) .ReturnsAsync(invalidStorageSemesterCourse); // when ValueTask <SemesterCourse> retrieveSemesterCourseByIdTask = this.semesterCourseService.RetrieveSemesterCourseByIdAsync(inputSemesterCourseId); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => retrieveSemesterCourseByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(inputSemesterCourseId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnRetrieveWhenIdIsInvalidAndLogItAsync() { // given Guid randomSemesterCourseId = default; Guid inputSemesterCourseId = randomSemesterCourseId; var invalidSemesterCourseInputException = new InvalidSemesterCourseException( parameterName: nameof(SemesterCourse.Id), parameterValue: inputSemesterCourseId); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(invalidSemesterCourseInputException); // when ValueTask <SemesterCourse> retrieveSemesterCourseByIdTask = this.semesterCourseService.RetrieveSemesterCourseByIdAsync(inputSemesterCourseId); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => retrieveSemesterCourseByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnCreateWhenStartDateIsInvalidAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); SemesterCourse randomSemesterCourse = CreateRandomSemesterCourse(dateTime); SemesterCourse inputSemesterCourse = randomSemesterCourse; inputSemesterCourse.StartDate = default; var invalidSemesterCourseInputException = new InvalidSemesterCourseException( parameterName: nameof(SemesterCourse.StartDate), parameterValue: inputSemesterCourse.StartDate); var expectedSemesterCourseValidationException = new SemesterCourseValidationException(invalidSemesterCourseInputException); // when ValueTask <SemesterCourse> createSemesterCourseTask = this.semesterCourseService.CreateSemesterCourseAsync(inputSemesterCourse); // then await Assert.ThrowsAsync <SemesterCourseValidationException>(() => createSemesterCourseTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectSemesterCourseByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }