public void ShouldThrowDependencyExceptionOnRetrieveAllWhenSqlExceptionOccursAndLogIt() { // given SqlException sqlException = GetSqlException(); var expectedUserDependencyException = new UserDependencyException(sqlException); this.userManagementBrokerMock.Setup(broker => broker.SelectAllUsers()) .Throws(sqlException); // when . then Assert.Throws <UserDependencyException>(() => this.userService.RetrieveAllUsers()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedUserDependencyException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectAllUsers(), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public void ShouldThrowDependencyExceptionOnRetrieveAllWhenDbExceptionOccursAndLogIt() { // given var databaseUpdateException = new DbUpdateException(); var expectedCourseDependencyException = new UserDependencyException(databaseUpdateException); this.userManagementBrokerMock.Setup(broker => broker.SelectAllUsers()) .Throws(databaseUpdateException); // when . then Assert.Throws <UserDependencyException>(() => this.userService.RetrieveAllUsers()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedCourseDependencyException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectAllUsers(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnRetrieveWhenDbUpdateConcurrencyExceptionOccursAndLogItAsync() { // given Guid randomUserId = Guid.NewGuid(); Guid inputUserId = randomUserId; var databaseUpdateConcurrencyException = new DbUpdateConcurrencyException(); var lockedUserException = new LockedUserException(databaseUpdateConcurrencyException); var expectedUserDependencyException = new UserDependencyException(lockedUserException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(inputUserId)) .ThrowsAsync(databaseUpdateConcurrencyException); // when ValueTask <User> retrieveUserTask = this.userService.RetrieveUserByIdAsync(inputUserId); // then await Assert.ThrowsAsync <UserDependencyException>(() => retrieveUserTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedUserDependencyException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(inputUserId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnDeleteWhenSqlExceptionOccursAndLogItAsync() { // given Guid randomUserId = Guid.NewGuid(); Guid inputUserId = randomUserId; SqlException sqlException = GetSqlException(); var expectedUserDependencyException = new UserDependencyException(sqlException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(inputUserId)) .ThrowsAsync(sqlException); // when ValueTask <User> deleteUserTask = this.userService.RemoveUserByIdAsync(inputUserId); // then await Assert.ThrowsAsync <UserDependencyException>(() => deleteUserTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedUserDependencyException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(inputUserId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
private UserDependencyException CreateAndLogDependencyException(Exception exception) { var userDependencyException = new UserDependencyException(exception); this.loggingBroker.LogError(userDependencyException); return(userDependencyException); }
private UserDependencyException CreateAndLogCriticalDependencyException(Xeption exception) { var userDependencyException = new UserDependencyException(exception); this.loggingBroker.LogCritical(userDependencyException); return(userDependencyException); }
public async Task ShouldThrowDependencyExceptionOnModifyIfDbUpdateExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); User randomUser = CreateRandomUser(randomDateTime); User someUser = randomUser; someUser.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var databaseUpdateException = new DbUpdateException(); var failedUserStorageException = new FailedUserStorageException(databaseUpdateException); var expectedUserDependencyException = new UserDependencyException(failedUserStorageException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(databaseUpdateException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <User> modifyUserTask = this.userService.ModifyUserAsync(someUser); // then await Assert.ThrowsAsync <UserDependencyException>(() => modifyUserTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(It.IsAny <Guid>()), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedUserDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnCreateWhenDbExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); User randomUser = CreateRandomUser(dates: dateTime); User inputUser = randomUser; var databaseUpdateException = new DbUpdateException(); string password = GetRandomPassword(); var failedUserStorageException = new FailedUserStorageException(databaseUpdateException); var expectedUserDependencyException = new UserDependencyException(failedUserStorageException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.userManagementBrokerMock.Setup(broker => broker.InsertUserAsync(It.IsAny <User>(), It.IsAny <string>())) .ThrowsAsync(databaseUpdateException); // when ValueTask <User> registerUserTask = this.userService.RegisterUserAsync(inputUser, password); // then await Assert.ThrowsAsync <UserDependencyException>(() => registerUserTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedUserDependencyException))), Times.Once); this.userManagementBrokerMock.Verify(broker => broker.InsertUserAsync(It.IsAny <User>(), It.IsAny <string>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowDependencyExceptionOnModifyIfSqlExceptionOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); User randomUser = CreateRandomUser(dates: randomDateTime); User someUser = randomUser; someUser.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); SqlException sqlException = GetSqlException(); var expectedUserDependencyException = new UserDependencyException(sqlException); this.userManagementBrokerMock.Setup(broker => broker.SelectUserByIdAsync(someUser.Id)) .ThrowsAsync(sqlException); // when ValueTask <User> modifyUserTask = this.userService.ModifyUserAsync(someUser); // then await Assert.ThrowsAsync <UserDependencyException>(() => modifyUserTask.AsTask()); this.userManagementBrokerMock.Verify(broker => broker.SelectUserByIdAsync(someUser.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogCritical(It.Is(SameExceptionAs(expectedUserDependencyException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.userManagementBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }