public void WhenUpdatingAUser_ItReturnsAnUpdatedUser(long id, string name)
        {
            var updateUserArgs = new UpsertUserArgs(id, name);
            var user           = userManagementService.Update(updateUserArgs);

            user.Name.Should().Be(name);
        }
        public void WhenUpdatingAUser_ForAnInvalidId_ItThrowsAValidationException(long id)
        {
            var    updateUserArgs = new UpsertUserArgs(id, "");
            Action updateUser     = () => userManagementService.Update(updateUserArgs);

            updateUser.Should().Throw <ValidationException>();
        }
        public void WhenUpdatingAUser_WithAnInvalidName_ItThrowsAValidationException(long id, string name)
        {
            var    updateUserArgs = new UpsertUserArgs(id, name);
            Action updateUser     = () => userManagementService.Update(updateUserArgs);

            updateUser.Should().Throw <ValidationException>();
        }
        public void WhenUpdatingAUser_AndTheDatabaseCannotBeReached_ItThrowsASqlException()
        {
            // arrange
            var updateUserArgs = new UpsertUserArgs(1, "John");
            var userRepository = new MockUserRepository();

            userManagementService = new UserManagementService(
                new MockConnectionUnavailableService(),
                new UpdateUserArgsValidator(userRepository),
                userRepository
                );

            // act
            Action updateUser = () => userManagementService.Update(updateUserArgs);

            // assert
            updateUser.Should().Throw <SqlException>();
        }