public async Task ShouldThrowDependencyExceptionOnRetrieveByIdWhenSqlExceptionOccursAndLogItAsync() { // given Guid someClassroomId = Guid.NewGuid(); SqlException sqlException = GetSqlException(); var expectedClassroomDependencyException = new ClassroomDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(someClassroomId)) .ThrowsAsync(sqlException); // when ValueTask <Classroom> retrieveClassroomTask = this.classroomService.RetrieveClassroomById(someClassroomId); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => retrieveClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(someClassroomId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowDependencyExceptionOnRetrieveAllWhenDbExceptionOccursAndLogIt() { // given var databaseUpdateException = new DbUpdateException(); var expectedClassroomDependencyException = new ClassroomDependencyException(databaseUpdateException); this.storageBrokerMock.Setup(broker => broker.SelectAllClassrooms()) .Throws(databaseUpdateException); // when . then Assert.Throws <ClassroomDependencyException>(() => this.classroomService.RetrieveAllClassrooms()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAllClassrooms(), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveByIdWhenDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given Guid randomClassroomId = Guid.NewGuid(); Guid inputClassroomId = randomClassroomId; var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedClassroomException = new LockedClassroomException(databaseUpdateConcurrencyException); var expectedClassroomDependencyException = new ClassroomDependencyException(lockedClassroomException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(inputClassroomId)) .ThrowsAsync(databaseUpdateConcurrencyException); //when ValueTask <Classroom> retrieveClassroomTask = this.classroomService.RetrieveClassroomById(inputClassroomId); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => retrieveClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(inputClassroomId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnDeleteWhenSqlErrorOccursAndLogItAsync() { // given Guid randomClassroomId = Guid.NewGuid(); Guid inputClassroomId = randomClassroomId; SqlException sqlException = GetSqlException(); var failedClassroomStorageException = new FailedClassroomStorageException(sqlException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomStorageException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(inputClassroomId)) .ThrowsAsync(sqlException); // when ValueTask <Classroom> deleteClassroomTask = this.classroomService.RemoveClassroomAsync(inputClassroomId); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => deleteClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(inputClassroomId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private ClassroomDependencyException CreateAndLogCriticalDependencyException(Exception exception) { var classroomDependencyException = new ClassroomDependencyException(exception); this.loggingBroker.LogCritical(classroomDependencyException); return(classroomDependencyException); }
private ClassroomDependencyException CreateAndLogDependencyException(Xeption exception) { var classroomDependencyException = new ClassroomDependencyException(exception); this.loggingBroker.LogError(classroomDependencyException); return(classroomDependencyException); }
public async Task ShouldThrowCriticalDependencyExceptionOnModifyIfSqlErrorOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); Classroom randomClassroom = CreateRandomClassroom(randomDateTime); Classroom someClassroom = randomClassroom; someClassroom.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); SqlException sqlException = GetSqlException(); var failedClassroomStorageException = new FailedClassroomStorageException(sqlException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomStorageException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(someClassroom.Id)) .ThrowsAsync(sqlException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <Classroom> modifyClassroomTask = this.classroomService.ModifyClassroomAsync(someClassroom); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => modifyClassroomTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(someClassroom.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedClassroomDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnCreateWhenDbExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Classroom randomClassroom = CreateRandomClassroom(dateTime); Classroom inputClassroom = randomClassroom; inputClassroom.UpdatedBy = inputClassroom.CreatedBy; inputClassroom.UpdatedDate = inputClassroom.CreatedDate; var databaseUpdateException = new DbUpdateException(); var expectedClassroomDependencyException = new ClassroomDependencyException(databaseUpdateException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertClassroomAsync(inputClassroom)) .ThrowsAsync(databaseUpdateException); // when ValueTask <Classroom> createClassroomTask = this.classroomService.CreateClassroomAsync(inputClassroom); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => createClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertClassroomAsync(inputClassroom), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnCreateWhenSqlErrorOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Classroom someClassroom = CreateRandomClassroom(dateTime); var sqlException = GetSqlException(); var failedClassroomStorageException = new FailedClassroomStorageException(sqlException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(sqlException); // when ValueTask <Classroom> createClassroomTask = this.classroomService.CreateClassroomAsync(someClassroom); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => createClassroomTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedClassroomDependencyException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertClassroomAsync(It.IsAny <Classroom>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateExceptionOccursAndLogItAsync() { // given Classroom randomClassroom = CreateRandomClassroom(); var databaseUpdateException = new DbUpdateException(); var failedClassroomException = new FailedClassroomStorageException(databaseUpdateException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(databaseUpdateException); // when ValueTask <Classroom> modifyClassroomTask = this.classroomService.ModifyClassroomAsync(randomClassroom); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => modifyClassroomTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedClassroomDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.UpdateClassroomAsync(It.IsAny <Classroom>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowCriticalDependencyExceptionOnRetrieveAllWhenSqlExceptionOccursAndLogIt() { // given SqlException sqlException = GetSqlException(); var failedClassroomStorageException = new FailedClassroomStorageException(sqlException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomStorageException); this.storageBrokerMock.Setup(broker => broker.SelectAllClassrooms()) .Throws(sqlException); // when Action retrieveAllCountriesAction = () => this.classroomService.RetrieveAllClassrooms(); // then Assert.Throws <ClassroomDependencyException>(retrieveAllCountriesAction); this.storageBrokerMock.Verify(broker => broker.SelectAllClassrooms(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedClassroomDependencyException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnDeleteWhenDbExceptionOccursAndLogItAsync() { // given Guid someClassroomId = Guid.NewGuid(); var databaseUpdateException = new DbUpdateException(); var failedClassroomException = new FailedClassroomStorageException(databaseUpdateException); var expectedClassroomDependencyException = new ClassroomDependencyException(failedClassroomException); this.storageBrokerMock.Setup(broker => broker.SelectClassroomByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(databaseUpdateException); // when ValueTask <Classroom> deleteClassroomTask = this.classroomService.RemoveClassroomAsync(someClassroomId); // then await Assert.ThrowsAsync <ClassroomDependencyException>(() => deleteClassroomTask.AsTask()); this.storageBrokerMock.Verify(broker => broker.SelectClassroomByIdAsync(It.IsAny <Guid>()), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedClassroomDependencyException))), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }