public async void ShouldThrowValidationExceptionOnRetrieveWhenIdIsInvalidAndLogItAsync() { //given Guid randomClassroomId = default; Guid inputClassroomId = randomClassroomId; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.Id), parameterValue: inputClassroomId); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); //when ValueTask <Classroom> retrieveClassroomByIdTask = this.classroomService.RetrieveClassroomById(inputClassroomId); //then await Assert.ThrowsAsync <ClassroomValidationException>(() => retrieveClassroomByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once ); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(It.IsAny <Guid>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnCreateWhenClassroomNameIsInvalidAndLogItAsync( string invalidClassroomName) { // given Classroom randomClassroom = CreateRandomClassroom(); Classroom invalidClassroom = randomClassroom; invalidClassroom.Name = invalidClassroomName; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.Name), parameterValue: invalidClassroom.Name); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); // when ValueTask <Classroom> createClassroomTask = this.classroomService.CreateClassroomAsync(invalidClassroom); // then await Assert.ThrowsAsync <ClassroomValidationException>(() => createClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnModifyWhenClassroomIdIsInvalidAndLogItAsync() { //given Guid invalidClassroomId = Guid.Empty; DateTimeOffset dateTime = GetRandomDateTime(); Classroom randomClassroom = CreateRandomClassroom(dateTime); Classroom invalidClassroom = randomClassroom; invalidClassroom.Id = invalidClassroomId; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.Id), parameterValue: invalidClassroom.Id); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); //when ValueTask <Classroom> modifyClassroomTask = this.classroomService.ModifyClassroomAsync(invalidClassroom); //then await Assert.ThrowsAsync <ClassroomValidationException>(() => modifyClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnModifyWhenUpdatedDateIsSameAsCreatedDateAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Classroom randomClassroom = CreateRandomClassroom(dateTime); Classroom inputClassroom = randomClassroom; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.UpdatedDate), parameterValue: inputClassroom.UpdatedDate); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); // when ValueTask <Classroom> modifyClassroomTask = this.classroomService.ModifyClassroomAsync(inputClassroom); // then await Assert.ThrowsAsync <ClassroomValidationException>(() => modifyClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(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(); Classroom randomClassroom = CreateRandomClassroom(randomDate); Classroom invalidClassroom = randomClassroom; invalidClassroom.CreatedDate = randomDate.AddMinutes(randomNegativeMinutes); Classroom storageClassroom = randomClassroom.DeepClone(); Guid classroomId = invalidClassroom.Id; invalidClassroom.CreatedBy = invalidCreatedBy; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.CreatedBy), parameterValue: invalidClassroom.CreatedBy); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(classroomId)) .ReturnsAsync(storageClassroom); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDate); // when ValueTask <Classroom> modifyClassroomTask = this.classroomService.ModifyClassroomAsync(invalidClassroom); // then await Assert.ThrowsAsync <ClassroomValidationException>(() => modifyClassroomTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(invalidClassroom.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnCreateWhenCreatedDateIsNotRecentAndLogItAsync( int minutes) { // given DateTimeOffset dateTime = GetRandomDateTime(); Classroom randomClassroom = CreateRandomClassroom(dateTime); Classroom inputClassroom = randomClassroom; inputClassroom.UpdatedBy = inputClassroom.CreatedBy; inputClassroom.CreatedDate = dateTime.AddMinutes(minutes); inputClassroom.UpdatedDate = inputClassroom.CreatedDate; var invalidClassroomInputException = new InvalidClassroomInputException( parameterName: nameof(Classroom.CreatedDate), parameterValue: inputClassroom.CreatedDate); var expectedClassroomValidationException = new ClassroomValidationException(invalidClassroomInputException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <Classroom> createClassroomTask = this.classroomService.CreateClassroomAsync(inputClassroom); // then await Assert.ThrowsAsync <ClassroomValidationException>(() => createClassroomTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }