Ejemplo n.º 1
0
        public async Task ShouldThrowValidatonExceptionOnRemoveWhenUserIdOrContactIdIsInvalidAndLogItAsync()
        {
            // given
            Guid inputContactId = Guid.Empty;
            Guid inputUserId    = Guid.Empty;

            var invalidUserContactException = new InvalidUserContactException();

            invalidUserContactException.AddData(
                key: nameof(UserContact.ContactId),
                values: "Id is required");

            invalidUserContactException.AddData(
                key: nameof(UserContact.UserId),
                values: "Id is required");

            var expectedUserContactValidationException =
                new UserContactValidationException(invalidUserContactException);

            // when
            ValueTask <UserContact> removeUserContactTask =
                this.userContactService.RemoveUserContactByIdAsync(inputUserId, inputContactId);

            // then
            await Assert.ThrowsAsync <UserContactValidationException>(() => removeUserContactTask.AsTask());

            this.loggingBrokerMock.Verify(broker =>
                                          broker.LogError(It.Is(SameValidationExceptionAs(
                                                                    expectedUserContactValidationException))),
                                          Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.SelectUserContactByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()),
                                          Times.Never);

            this.storageBrokerMock.Verify(broker =>
                                          broker.DeleteUserContactAsync(It.IsAny <UserContact>()),
                                          Times.Never);

            this.storageBrokerMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
        }
        public async void ShouldThrowValidationExceptionOnAddIfUserIdOrContactIdInvalidAndLogItAsync()
        {
            // given
            UserContact randomUserContact = CreateRandomUserContact();
            UserContact inputUserContact  = new UserContact();

            var invalidUserContactException = new InvalidUserContactException();

            invalidUserContactException.AddData(
                key: nameof(UserContact.UserId),
                values: "Id is required");

            invalidUserContactException.AddData(
                key: nameof(UserContact.ContactId),
                values: "Id is required");

            var expectedUserContactValidationException =
                new UserContactValidationException(invalidUserContactException);

            // when
            ValueTask <UserContact> addUserContactTask =
                this.userContactService.AddUserContactAsync(inputUserContact);

            // then
            await Assert.ThrowsAsync <UserContactValidationException>(() =>
                                                                      addUserContactTask.AsTask());

            this.loggingBrokerMock.Verify(broker =>
                                          broker.LogError(It.Is(SameValidationExceptionAs(
                                                                    expectedUserContactValidationException))),
                                          Times.Once);

            this.storageBrokerMock.Verify(broker =>
                                          broker.InsertUserContactAsync(It.IsAny <UserContact>()),
                                          Times.Never);

            this.loggingBrokerMock.VerifyNoOtherCalls();
            this.storageBrokerMock.VerifyNoOtherCalls();
        }