public async Task ShouldThrowValidationExceptionOnModifyWhenGuardianIdIsInvalidAndLogItAsync() { //given Guid invalidGuardianId = Guid.Empty; DateTimeOffset dateTime = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(dateTime); Guardian invalidGuardian = randomGuardian; invalidGuardian.Id = invalidGuardianId; var invalidGuardianException = new InvalidGuardianException( parameterName: nameof(Guardian.Id), parameterValue: invalidGuardian.Id); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianException); //when ValueTask <Guardian> modifyGuardianTask = this.guardianService.ModifyGuardianAsync(invalidGuardian); //then await Assert.ThrowsAsync <GuardianValidationException>(() => modifyGuardianTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedGuardianValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnModifyWhenUpdatedDateIsSameAsCreatedDateAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(dateTime); Guardian inputGuardian = randomGuardian; var invalidGuardianInputException = new InvalidGuardianException( parameterName: nameof(Guardian.UpdatedDate), parameterValue: inputGuardian.UpdatedDate); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianInputException); // when ValueTask <Guardian> modifyGuardianTask = this.guardianService.ModifyGuardianAsync(inputGuardian); // then await Assert.ThrowsAsync <GuardianValidationException>(() => modifyGuardianTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedGuardianValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectGuardianByIdAsync(It.IsAny <Guid>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnModifyIfStorageCreatedByNotSameAsCreatedByAndLogItAsync() { // given int randomNegativeMinutes = GetNegativeRandomNumber(); Guid differentId = Guid.NewGuid(); Guid invalidCreatedBy = differentId; DateTimeOffset randomDate = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(randomDate); Guardian invalidGuardian = randomGuardian; invalidGuardian.CreatedDate = randomDate.AddMinutes(randomNegativeMinutes); Guardian storageGuardian = randomGuardian.DeepClone(); Guid guardianId = invalidGuardian.Id; invalidGuardian.CreatedBy = invalidCreatedBy; var invalidGuardianInputException = new InvalidGuardianException( parameterName: nameof(Guardian.CreatedBy), parameterValue: invalidGuardian.CreatedBy); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianInputException); this.storageBrokerMock.Setup(broker => broker.SelectGuardianByIdAsync(guardianId)) .ReturnsAsync(storageGuardian); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDate); // when ValueTask <Guardian> modifyGuardianTask = this.guardianService.ModifyGuardianAsync(invalidGuardian); // then await Assert.ThrowsAsync <GuardianValidationException>(() => modifyGuardianTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectGuardianByIdAsync(invalidGuardian.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 ShouldThrowValidationExceptionOnAddWhenCreatedDateIsNotRecentAndLogItAsync( int minutes) { // given DateTimeOffset dateTime = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(dateTime); Guardian inputGuardian = randomGuardian; inputGuardian.UpdatedBy = inputGuardian.CreatedBy; inputGuardian.CreatedDate = dateTime.AddMinutes(minutes); inputGuardian.UpdatedDate = inputGuardian.CreatedDate; var invalidGuardianInputException = new InvalidGuardianException( parameterName: nameof(Guardian.CreatedDate), parameterValue: inputGuardian.CreatedDate); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianInputException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <Guardian> createGuardianTask = this.guardianService.CreateGuardianAsync(inputGuardian); // then await Assert.ThrowsAsync <GuardianValidationException>(() => createGuardianTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianAsync(It.IsAny <Guardian>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnDeleteWhenIdIsInvalidAndLogItAsync() { // given Guid randomGuardianId = default; Guid inputGuardianId = randomGuardianId; var invalidGuardianInputException = new InvalidGuardianException( parameterName: nameof(Guardian.Id), parameterValue: inputGuardianId); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianInputException); // 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(It.IsAny <Guid>()), Times.Never); this.storageBrokerMock.Verify(broker => broker.DeleteGuardianAsync(It.IsAny <Guardian>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidationExceptionOnAddWhenGuardianFirstNameIsInvalidAndLogItAsync( string invalidGuardianFirstName) { // given DateTimeOffset dateTime = GetRandomDateTime(); Guardian randomGuardian = CreateRandomGuardian(dateTime); Guardian invalidGuardian = randomGuardian; invalidGuardian.FirstName = invalidGuardianFirstName; var invalidGuardianException = new InvalidGuardianException( parameterName: nameof(Guardian.FirstName), parameterValue: invalidGuardian.FirstName); var expectedGuardianValidationException = new GuardianValidationException(invalidGuardianException); // when ValueTask <Guardian> createGuardianTask = this.guardianService.CreateGuardianAsync(invalidGuardian); // then await Assert.ThrowsAsync <GuardianValidationException>(() => createGuardianTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedGuardianValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertGuardianAsync(It.IsAny <Guardian>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }