public async Task ShouldThrowDependencyExceptionOnRetrieveWhenDbExceptionOccursAndLogIt() { // given Guid someAssignmentId = Guid.NewGuid(); var databaseUpdateException = new DbUpdateException(); var expectedAssignmentDependencyException = new AssignmentDependencyException(databaseUpdateException); this.storageBrokerMock.Setup(broker => broker.SelectAssignmentByIdAsync(It.IsAny <Guid>())) .Throws(databaseUpdateException); // when ValueTask <Assignment> retrieveTask = this.assignmentService.RetrieveAssignmentByIdAsync(someAssignmentId); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => retrieveTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAssignmentByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRemoveWhenSqlExceptionOccursAndLogItAsync() { // given Guid someAssignmentId = Guid.NewGuid(); SqlException sqlException = GetSqlException(); var expectedAssignmentDependencyException = new AssignmentDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectAssignmentByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(sqlException); // when ValueTask <Assignment> deleteAssignmentTask = this.assignmentService.RemoveAssignmentByIdAsync(someAssignmentId); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => deleteAssignmentTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAssignmentByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowDependencyExceptionOnRetrieveAllWhenSqlExceptionOccursAndLogIt() { // given var sqlException = GetSqlException(); var expectedAssignmentDependencyException = new AssignmentDependencyException(sqlException); this.storageBrokerMock.Setup(broker => broker.SelectAllAssignments()) .Throws(sqlException); // when . then Assert.Throws <AssignmentDependencyException>(() => this.assignmentService.RetrieveAllAssignments()); this.storageBrokerMock.Verify(broker => broker.SelectAllAssignments(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRemoveWhenDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given Guid randomAssignmentId = Guid.NewGuid(); Guid inputAssignmentId = randomAssignmentId; var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedAssignmentException = new LockedAssignmentException(databaseUpdateConcurrencyException); var expectedAssignmentDependencyException = new AssignmentDependencyException(lockedAssignmentException); this.storageBrokerMock.Setup(broker => broker.SelectAssignmentByIdAsync(inputAssignmentId)) .ThrowsAsync(databaseUpdateConcurrencyException); // when ValueTask <Assignment> deleteAssignmentTask = this.assignmentService.RemoveAssignmentByIdAsync(inputAssignmentId); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => deleteAssignmentTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAssignmentByIdAsync(inputAssignmentId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
private AssignmentDependencyException CreateAndLogDependencyException(Exception exception) { var assignmentDependencyException = new AssignmentDependencyException(exception); this.loggingBroker.LogError(assignmentDependencyException); return(assignmentDependencyException); }
public async Task ShouldThrowDependencyExceptionOnCreateWhenDbExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Assignment someAssignment = CreateRandomAssignment(dateTime); someAssignment.UpdatedBy = someAssignment.CreatedBy; someAssignment.UpdatedDate = someAssignment.CreatedDate; var databaseUpdateException = new DbUpdateException(); var expectedAssignmentDependencyException = new AssignmentDependencyException(databaseUpdateException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertAssignmentAsync( It.IsAny <Assignment>())) .ThrowsAsync(databaseUpdateException); // when ValueTask <Assignment> createAssignmentTask = this.assignmentService.CreateAssignmentAsync(someAssignment); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => createAssignmentTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertAssignmentAsync( It.IsAny <Assignment>()), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedAssignmentDependencyException))), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); Assignment randomAssignment = CreateRandomAssignment(randomDateTime); Assignment someAssignment = randomAssignment; someAssignment.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedAssignmentException = new LockedAssignmentException(databaseUpdateConcurrencyException); var expectedAssignmentDependencyException = new AssignmentDependencyException(lockedAssignmentException); this.storageBrokerMock.Setup(broker => broker.SelectAssignmentByIdAsync(someAssignment.Id)) .ThrowsAsync(databaseUpdateConcurrencyException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <Assignment> modifyAssignmentTask = this.assignmentService.ModifyAssignmentAsync(someAssignment); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => modifyAssignmentTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAssignmentByIdAsync(someAssignment.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveWhenSqlExceptionOccursAndLogIt() { // given var sqlException = GetSqlException(); var expectedAssignmentDependencyException = new AssignmentDependencyException(sqlException); var badGuid = Guid.NewGuid(); this.storageBrokerMock.Setup(broker => broker.SelectAssignmentByIdAsync(badGuid)) .Throws(sqlException); // when ValueTask <Assignment> retrieveTask = this.assignmentService.RetrieveAssignmentById(badGuid); // then await Assert.ThrowsAsync <AssignmentDependencyException>(() => retrieveTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedAssignmentDependencyException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAssignmentByIdAsync(badGuid), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }