def generate_test_users(filepath: str = 'resources/user_data.csv',
                        delimiter: str = '\t'):
    """
    Converts data in csv file to documents in user collection.
    Uses @mongo wrapper to connect via mongoengine during execution.
    Randomly generates fav_meals list and access__admin parameters.

    :param filepath:
    :param delimiter:
    :return:
    """
    with open(filepath, 'r') as file:
        data = csv.DictReader(file, delimiter=delimiter)

        for datum in data:
            try:
                user = Users(**datum, __auto_convert=True)
                # generate random admin access, password, and favorite meals
                user.access.admin = (randint(0, 1) == 1)
                user.fav_meals = get_random(Meals, randint(1, 5))
                user.password = user.name + str(randint(0, 9))

                user.save()
                print(
                    f"Added: {user.name} | {user.email} | {user.password} | Admin-{user.access.admin is True} => {user.id}"
                )
            except NotUniqueError:
                print(f'Invalid Entry: {user.email} is already taken.')
            except ValidationError:
                print(f'Validation Error: {user}')