public async Task ShouldThrowValidationExceptionOnModifyIfContactDoesntExistAndLogItAsync() { // given int randomNegativeMinutes = GetNegativeRandomNumber(); DateTimeOffset dateTime = GetRandomDateTime(); Contact randomContact = CreateRandomContact(dateTime); Contact nonExistentContact = randomContact; nonExistentContact.CreatedDate = dateTime.AddMinutes(randomNegativeMinutes); Contact noContact = null; var notFoundContactException = new NotFoundContactException(nonExistentContact.Id); var expectedContactValidationException = new ContactValidationException(notFoundContactException); this.storageBrokerMock.Setup(broker => broker.SelectContactByIdAsync(nonExistentContact.Id)) .ReturnsAsync(noContact); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); // when ValueTask <Contact> modifyContactTask = this.contactService.ModifyContactAsync(nonExistentContact); // then await Assert.ThrowsAsync <ContactValidationException>(() => modifyContactTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectContactByIdAsync(nonExistentContact.Id), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedContactValidationException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidatonExceptionOnDeleteWhenStorageContactIsInvalidAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Contact randomContact = CreateRandomContact(dateTime); Guid inputContactId = randomContact.Id; Contact inputContact = randomContact; Contact nullStorageContact = null; var notFoundContactException = new NotFoundContactException(inputContactId); var expectedContactValidationException = new ContactValidationException(notFoundContactException); this.storageBrokerMock.Setup(broker => broker.SelectContactByIdAsync(inputContactId)) .ReturnsAsync(nullStorageContact); // when ValueTask <Contact> actualContactTask = this.contactService.RemoveContactByIdAsync(inputContactId); // then await Assert.ThrowsAsync <ContactValidationException>(() => actualContactTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedContactValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectContactByIdAsync(inputContactId), Times.Once); this.storageBrokerMock.Verify(broker => broker.DeleteContactAsync(It.IsAny <Contact>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async void ShouldThrowValidationExceptionOnRetrieveWhenStorageContactIsNullAndLogItAsync() { //given Guid randomContactId = Guid.NewGuid(); Guid inputContactId = randomContactId; Contact invalidStorageContact = null; var notFoundContactException = new NotFoundContactException(inputContactId); var expectedContactValidationException = new ContactValidationException(notFoundContactException); this.storageBrokerMock.Setup(broker => broker.SelectContactByIdAsync(inputContactId)) .ReturnsAsync(invalidStorageContact); //when ValueTask <Contact> retrieveContactByIdTask = this.contactService.RetrieveContactByIdAsync(inputContactId); //then await Assert.ThrowsAsync <ContactValidationException>(() => retrieveContactByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedContactValidationException))), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.storageBrokerMock.Verify(broker => broker.SelectContactByIdAsync(It.IsAny <Guid>()), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }