public async Task ShouldThrowValidationExceptionOnModifyIfGuardianDoesntExistAndLogItAsync() { // given int randomNegativeMinutes = GetNegativeRandomNumber(); DateTimeOffset dateTime = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(dateTime); Guardian nonExistentGuardian = randomGuardian; nonExistentGuardian.CreatedDate = dateTime.AddMinutes(randomNegativeMinutes); Guardian noGuardian = null; var notFoundGuardianException = new NotFoundGuardianException(nonExistentGuardian.Id); var expectedGuardianValidationException = new GuardianValidationException(notFoundGuardianException); this.storageBrokerMock.Setup(broker => broker.SelectGuardianByIdAsync(nonExistentGuardian.Id)) .ReturnsAsync(noGuardian); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <Guardian> modifyGuardianTask = this.guardianService.ModifyGuardianAsync(nonExistentGuardian); // then await Assert.ThrowsAsync <GuardianValidationException>(() => modifyGuardianTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectGuardianByIdAsync(nonExistentGuardian.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnDeleteWhenStorageGuardianIsNullAndLogItAsync() { // given Guid randomGuardianId = Guid.NewGuid(); Guid inputGuardianId = randomGuardianId; Guardian invalidStorageGuardian = null; var notFoundGuardianException = new NotFoundGuardianException(inputGuardianId); var expectedGuardianValidationException = new GuardianValidationException(notFoundGuardianException); this.storageBrokerMock.Setup(broker => broker.SelectGuardianByIdAsync(inputGuardianId)) .ReturnsAsync(invalidStorageGuardian); // when ValueTask <Guardian> deleteGuardianTask = this.guardianService.RemoveGuardianByIdAsync(inputGuardianId); // then await Assert.ThrowsAsync <GuardianValidationException>(() => deleteGuardianTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianValidationException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectGuardianByIdAsync(inputGuardianId), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteGuardianAsync(It.IsAny <Guardian>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnRetrieveWhenStorageGuardianIsNullAndLogItAsync() { // given DateTimeOffset dateTimeOffset = GetRandomDateTime(); Guid randomGuardianId = Guid.NewGuid(); Guid inputGuardianId = randomGuardianId; Guardian nullGuardian = default; var nullGuardianException = new NotFoundGuardianException(guardianId: inputGuardianId); var expectedValidationException = new GuardianValidationException(nullGuardianException); this.storageBrokerMock.Setup(broker => broker.SelectGuardianByIdAsync(inputGuardianId)) .ReturnsAsync(nullGuardian); // when ValueTask <Guardian> retrieveGuardianTask = this.guardianService.RetrieveGuardianByIdAsync(inputGuardianId); // then await Assert.ThrowsAsync <GuardianValidationException>(() => retrieveGuardianTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectGuardianByIdAsync(inputGuardianId), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }