public async Task ShouldThrowValidatonExceptionOnRetrieveWhenContactIdIsInvalidAndLogItAsync() { // given Guid randomContactId = default; Guid randomTeacherId = Guid.NewGuid(); Guid inputContactId = randomContactId; Guid inputTeacherId = randomTeacherId; var invalidTeacherContactException = new InvalidTeacherContactException( parameterName: nameof(TeacherContact.ContactId), parameterValue: inputContactId); var expectedTeacherContactValidationException = new TeacherContactValidationException(invalidTeacherContactException); // when ValueTask <TeacherContact> retrieveTeacherContactTask = this.teacherContactService.RetrieveTeacherContactByIdAsync(inputTeacherId, inputContactId); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => retrieveTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherContactByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenContactIdIsInvalidAndLogItAsync() { // given TeacherContact randomTeacherContact = CreateRandomTeacherContact(); TeacherContact inputTeacherContact = randomTeacherContact; inputTeacherContact.ContactId = default; var invalidTeacherContactException = new InvalidTeacherContactException( parameterName: nameof(TeacherContact.ContactId), parameterValue: inputTeacherContact.ContactId); var expectedTeacherContactValidationException = new TeacherContactValidationException(invalidTeacherContactException); // when ValueTask <TeacherContact> addTeacherContactTask = this.teacherContactService.AddTeacherContactAsync(inputTeacherContact); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => addTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherContactAsync(It.IsAny <TeacherContact>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenTeacherContactIsNullAndLogItAsync() { // given TeacherContact invalidTeacherContact = null; var nullTeacherContactException = new NullTeacherContactException(); var expectedTeacherContactValidationException = new TeacherContactValidationException(nullTeacherContactException); // when ValueTask <TeacherContact> addTeacherContactTask = this.teacherContactService.AddTeacherContactAsync(invalidTeacherContact); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => addTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherContactAsync(It.IsAny <TeacherContact>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private TeacherContactValidationException CreateAndLogValidationException(Exception exception) { var teacherContactValidationException = new TeacherContactValidationException(exception); this.loggingBroker.LogError(teacherContactValidationException); return(teacherContactValidationException); }
public async Task ShouldThrowValidationExceptionOnRemoveWhenStorageTeacherContactIsInvalidAndLogItAsync() { // given DateTimeOffset randomDateTime = GetRandomDateTime(); TeacherContact randomTeacherContact = CreateRandomTeacherContact(randomDateTime); Guid inputContactId = randomTeacherContact.ContactId; Guid inputTeacherId = randomTeacherContact.TeacherId; TeacherContact nullStorageTeacherContact = null; var notFoundTeacherContactException = new NotFoundTeacherContactException(inputTeacherId, inputContactId); var expectedSemesterCourseValidationException = new TeacherContactValidationException(notFoundTeacherContactException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherContactByIdAsync(inputTeacherId, inputContactId)) .ReturnsAsync(nullStorageTeacherContact); // when ValueTask <TeacherContact> removeTeacherContactTask = this.teacherContactService.RemoveTeacherContactByIdAsync(inputTeacherId, inputContactId); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => removeTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedSemesterCourseValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherContactByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteTeacherContactAsync(It.IsAny <TeacherContact>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenReferneceExceptionAndLogItAsync() { // given TeacherContact randomTeacherContact = CreateRandomTeacherContact(); TeacherContact invalidTeacherContact = randomTeacherContact; string randomMessage = GetRandomMessage(); string exceptionMessage = randomMessage; var foreignKeyConstraintConflictException = new ForeignKeyConstraintConflictException(exceptionMessage); var invalidTeacherContactReferenceException = new InvalidTeacherContactReferenceException(foreignKeyConstraintConflictException); var expectedTeacherContactValidationException = new TeacherContactValidationException(invalidTeacherContactReferenceException); this.storageBrokerMock.Setup(broker => broker.InsertTeacherContactAsync(invalidTeacherContact)) .ThrowsAsync(foreignKeyConstraintConflictException); // when ValueTask <TeacherContact> addTeacherContactTask = this.teacherContactService.AddTeacherContactAsync(invalidTeacherContact); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => addTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherContactAsync(invalidTeacherContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnAddWhenTeacherContactAlreadyExistsAndLogItAsync() { // given TeacherContact randomTeacherContact = CreateRandomTeacherContact(); TeacherContact alreadyExistsTeacherContact = randomTeacherContact; string randomMessage = GetRandomMessage(); string exceptionMessage = randomMessage; var duplicateKeyException = new DuplicateKeyException(exceptionMessage); var alreadyExistsTeacherContactException = new AlreadyExistsTeacherContactException(duplicateKeyException); var expectedTeacherContactValidationException = new TeacherContactValidationException(alreadyExistsTeacherContactException); this.storageBrokerMock.Setup(broker => broker.InsertTeacherContactAsync(alreadyExistsTeacherContact)) .ThrowsAsync(duplicateKeyException); // when ValueTask <TeacherContact> addTeacherContactTask = this.teacherContactService.AddTeacherContactAsync(alreadyExistsTeacherContact); // then await Assert.ThrowsAsync <TeacherContactValidationException>(() => addTeacherContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherContactAsync(alreadyExistsTeacherContact), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }