public void ShouldThrowDependencyExceptionOnRetrieveAllWhenSqlExceptionOccursAndLogIt() { // given SqlException sqlException = GetSqlException(); var expectedTeacherDependencyException = new TeacherDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectAllTeachers()) .Throws(sqlException); // when . then Assert.Throws <TeacherDependencyException>(() => this.teacherService.RetrieveAllTeachers()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAllTeachers(), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveWhenDbExceptionOccursAndLogItAsync() { // given Guid randomTeacherId = Guid.NewGuid(); Guid inputTeacherId = randomTeacherId; var databaseUpdateException = new DbUpdateException(); var expectedTeacherDependencyException = new TeacherDependencyException(databaseUpdateException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(inputTeacherId)) .ThrowsAsync(databaseUpdateException); // when ValueTask <Teacher> retrieveTeacherTask = this.teacherService.RetrieveTeacherByIdAsync(inputTeacherId); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => retrieveTeacherTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(inputTeacherId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnRetrieveAllIfCriticalDependencyExceptionOccursAndLogItAsync( Exception criticalDependencyException) { var failedTeacherDependencyException = new FailedTeacherDependencyException(criticalDependencyException); var expectedTeacherDependencyException = new TeacherDependencyException( failedTeacherDependencyException); this.apiBrokerMock.Setup(broker => broker.GetAllTeachersAsync()) .ThrowsAsync(criticalDependencyException); ValueTask <List <Teacher> > retrieveAllTeachersTask = this.teacherService.RetrieveAllTeachersAsync(); await Assert.ThrowsAsync <TeacherDependencyException>(() => retrieveAllTeachersTask.AsTask()); this.apiBrokerMock.Verify(broker => broker.GetAllTeachersAsync(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedTeacherDependencyException))), Times.Once); this.apiBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnDeleteWhenSqlExceptionOccursAndLogItAsync() { // given Guid randomTeacherId = Guid.NewGuid(); Guid inputTeacherId = randomTeacherId; SqlException sqlException = GetSqlException(); var expectedTeacherDependencyException = new TeacherDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(inputTeacherId)) .ThrowsAsync(sqlException); // when ValueTask <Teacher> deleteTeacherTask = this.teacherService.DeleteTeacherByIdAsync(inputTeacherId); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => deleteTeacherTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(inputTeacherId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private TeacherDependencyException CreateAndLogCriticalDependencyException(Exception exception) { var teacherDependencyException = new TeacherDependencyException(exception); this.loggingBroker.LogCritical(teacherDependencyException); return(teacherDependencyException); }
private TeacherDependencyException CreateAndLogDependencyException(Xeption exception) { var teacherDependencyException = new TeacherDependencyException(exception); this.loggingBroker.LogError(teacherDependencyException); return(teacherDependencyException); }
public static TheoryData DependencyExceptions() { var innerException = new Exception(); var teacherServiceDependencyException = new TeacherDependencyException(innerException); var teacherServiceException = new TeacherServiceException(innerException); return(new TheoryData <Exception> { teacherServiceDependencyException, teacherServiceException }); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); Teacher randomTeacher = CreateRandomTeacher(randomDateTime); Teacher someTeacher = randomTeacher; someTeacher.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedTeacherException = new LockedTeacherException(databaseUpdateConcurrencyException); var expectedTeacherDependencyException = new TeacherDependencyException(lockedTeacherException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(someTeacher.Id)) .ThrowsAsync(databaseUpdateConcurrencyException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <Teacher> modifyTeacherTask = this.teacherService.ModifyTeacherAsync(someTeacher); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => modifyTeacherTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(someTeacher.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnCreateWhenDbExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Teacher randomTeacher = CreateRandomTeacher(dateTime); Teacher inputTeacher = randomTeacher; inputTeacher.UpdatedBy = inputTeacher.CreatedBy; var databaseUpdateException = new DbUpdateException(); var expectedTeacherDependencyException = new TeacherDependencyException(databaseUpdateException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertTeacherAsync(inputTeacher)) .ThrowsAsync(databaseUpdateException); // when ValueTask <Teacher> createTeacherByIdTask = this.teacherService.CreateTeacherAsync(inputTeacher); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => createTeacherByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherAsync(inputTeacher), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateExceptionOccursAndLogItAsync() { // given Teacher randomTeacher = CreateRandomTeacher(); var databaseUpdateException = new DbUpdateException(); var failedTeacherStorageException = new FailedTeacherStorageException(databaseUpdateException); var expectedTeacherDependencyException = new TeacherDependencyException(failedTeacherStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(databaseUpdateException); // when ValueTask <Teacher> modifyTeacherTask = this.teacherService.ModifyTeacherAsync(randomTeacher); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => modifyTeacherTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(randomTeacher.Id), Times.Never); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker. UpdateTeacherAsync(It.IsAny <Teacher>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnAddIfSqlErrorOccursAndLogItAsync() { // given Teacher someTeacher = CreateRandomTeacher(); SqlException sqlException = GetSqlException(); var failedTeacherStorageException = new FailedTeacherStorageException(sqlException); var expectedTeacherDependencyException = new TeacherDependencyException(failedTeacherStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(sqlException); // when ValueTask <Teacher> addTeacherTask = this.teacherService.CreateTeacherAsync(someTeacher); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => addTeacherTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherAsync(It.IsAny <Teacher>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowTeacherDependencyExceptionOnRetrieveAllIfDependencyApiErrorOccursAndLogItAsync() { var randomExceptionMessage = GetRandomString(); var responseMessage = new HttpResponseMessage(); var httpResponseException = new HttpResponseException( httpResponseMessage: responseMessage, message: randomExceptionMessage); var failedTeacherDependencyException = new FailedTeacherDependencyException(httpResponseException); var expectedDependencyException = new TeacherDependencyException( failedTeacherDependencyException); this.apiBrokerMock.Setup(broker => broker.GetAllTeachersAsync()) .ThrowsAsync(httpResponseException); ValueTask <List <Teacher> > retrieveAllTeachersTask = teacherService.RetrieveAllTeachersAsync(); await Assert.ThrowsAsync <TeacherDependencyException>(() => retrieveAllTeachersTask.AsTask()); this.apiBrokerMock.Verify(broker => broker.GetAllTeachersAsync(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameValidationExceptionAs( expectedDependencyException))), Times.Once); this.apiBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnRetrievebyIdIfSqlErrorOccursAndLogItAsync() { // given Guid someTeacherId = Guid.NewGuid(); SqlException sqlException = GetSqlException(); var failedTeacherStorageException = new FailedTeacherStorageException(sqlException); var expectedTeacherDependencyException = new TeacherDependencyException(failedTeacherStorageException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(sqlException); // when ValueTask <Teacher> retrieveTeacherTask = this.teacherService.RetrieveTeacherByIdAsync(someTeacherId); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => retrieveTeacherTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnDeleteIfDbUpdateExceptionOccursAndLogItAsync() { // given Guid someTeacherId = Guid.NewGuid(); var databaseUpdateException = new DbUpdateException(); var failedTeacherStorageException = new FailedTeacherStorageException(databaseUpdateException); var expectedTeacherDependencyException = new TeacherDependencyException(failedTeacherStorageException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(databaseUpdateException); // when ValueTask <Teacher> deleteTeacherTask = this.teacherService.RemoveTeacherByIdAsync(someTeacherId); // then await Assert.ThrowsAsync <TeacherDependencyException>(() => deleteTeacherTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }