public async Task ShouldThrowDependencyExceptionOnDeleteWhenDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given Guid randomExamId = Guid.NewGuid(); Guid inputExamId = randomExamId; var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedExamException = new LockedExamException(databaseUpdateConcurrencyException); var expectedExamDependencyException = new ExamDependencyException(lockedExamException); this.storageBrokerMock.Setup(broker => broker.SelectExamByIdAsync(inputExamId)) .ThrowsAsync(databaseUpdateConcurrencyException); // when ValueTask <Exam> deleteExamTask = this.examService.RemoveExamByIdAsync(inputExamId); // then await Assert.ThrowsAsync <ExamDependencyException>(() => deleteExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(inputExamId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowDependencyExceptionOnRetrieveAllWhenSqlExceptionOccursAndLogIt() { // given var sqlException = GetSqlException(); var expectedExamDependencyException = new ExamDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectAllExams()) .Throws(sqlException); // when . then Assert.Throws <ExamDependencyException>(() => this.examService.RetrieveAllExams()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedExamDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAllExams(), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private ExamDependencyException CreateAndLogCriticalDependencyException(Exception exception) { var examDependencyException = new ExamDependencyException(exception); this.loggingBroker.LogCritical(examDependencyException); return(examDependencyException); }
private ExamDependencyException CreateAndLogDependencyException(Xeption exception) { var examDependencyException = new ExamDependencyException(exception); this.loggingBroker.LogError(examDependencyException); return(examDependencyException); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(randomDateTime); Exam someExam = randomExam; someExam.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedExamException = new LockedExamException(databaseUpdateConcurrencyException); var expectedExamDependencyException = new ExamDependencyException(lockedExamException); this.storageBrokerMock.Setup(broker => broker.SelectExamByIdAsync(someExam.Id)) .ThrowsAsync(databaseUpdateConcurrencyException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <Exam> modifyExamTask = this.examService.ModifyExamAsync(someExam); // then await Assert.ThrowsAsync <ExamDependencyException>(() => modifyExamTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(someExam.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnAddWhenDbExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Exam randomExam = CreateRandomExam(dateTime); Exam inputExam = randomExam; inputExam.UpdatedBy = inputExam.CreatedBy; var databaseUpdateException = new DbUpdateException(); var expectedExamDependencyException = new ExamDependencyException(databaseUpdateException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertExamAsync(inputExam)) .ThrowsAsync(databaseUpdateException); // when ValueTask <Exam> createExamTask = this.examService.AddExamAsync(inputExam); // then await Assert.ThrowsAsync <ExamDependencyException>(() => createExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertExamAsync(inputExam), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveifDatabaseUpdateErrorOccursAndLogItAsync() { // given Guid someExamId = Guid.NewGuid(); var databaseUpdateException = new DbUpdateException(); var failedExamStorageException = new FailedExamStorageException(databaseUpdateException); var expectedExamDependencyException = new ExamDependencyException(failedExamStorageException); this.storageBrokerMock.Setup(broker => broker.SelectExamByIdAsync(someExamId)) .ThrowsAsync(databaseUpdateException); // when ValueTask <Exam> retrieveExamTask = this.examService.RetrieveExamByIdAsync(someExamId); // then await Assert.ThrowsAsync <ExamDependencyException>(() => retrieveExamTask.AsTask()); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(someExamId), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedExamDependencyException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowCriticalDependencyExceptionOnModifyIfSqlErrorOccursAndLogItAsync() { // given Exam someExam = CreateRandomExam(); SqlException sqlException = GetSqlException(); var failedExamStorageException = new FailedExamStorageException(sqlException); var expectedExamDependencyException = new ExamDependencyException(failedExamStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(sqlException); // when ValueTask <Exam> modifyExamTask = this.examService.ModifyExamAsync(someExam); // then await Assert.ThrowsAsync <ExamDependencyException>(() => modifyExamTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedExamDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(someExam.Id), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnAddIfDatabaseUpdateErrorOccursAndLogItAsync() { // given Exam someExam = CreateRandomExam(); var databaseUpdateException = new DbUpdateException(); var failedExamStorageException = new FailedExamStorageException(databaseUpdateException); var expectedExamDependencyException = new ExamDependencyException(failedExamStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(databaseUpdateException); // when ValueTask <Exam> createExamTask = this.examService.AddExamAsync(someExam); // then await Assert.ThrowsAsync <ExamDependencyException>(() => createExamTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedExamDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertExamAsync(It.IsAny <Exam>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveWhenSqlExceptionOccursAndLogItAsync() { // given Guid randomExamId = Guid.NewGuid(); Guid inputExamId = randomExamId; var sqlException = GetSqlException(); var expectedDependencyException = new ExamDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectExamByIdAsync(inputExamId)) .ThrowsAsync(sqlException); // when ValueTask <Exam> retrieveExamTask = this.examService.RetrieveExamByIdAsync(inputExamId); // then await Assert.ThrowsAsync <ExamDependencyException>(() => retrieveExamTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamByIdAsync(inputExamId), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowCriticalDependencyExceptionOnRetrieveAllIfSqlErrorOccursAndLogIt() { // given var sqlException = GetSqlException(); var failedExamStorageException = new FailedExamStorageException(sqlException); var expectedExamDependencyException = new ExamDependencyException(failedExamStorageException); this.storageBrokerMock.Setup(broker => broker.SelectAllExams()) .Throws(sqlException); // when Action retrieveAllexamAction = () => this.examService.RetrieveAllExams(); // then Assert.Throws <ExamDependencyException>( retrieveAllexamAction); this.storageBrokerMock.Verify(broker => broker.SelectAllExams(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs( expectedExamDependencyException))), Times.Once); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }