Esempio n. 1
0
def test_load_users(monkeypatch):
    '''
    Test each aspect of load_users
    '''
    def bad_file(self):  # pylint: disable=W0613
        '''
        Simulates an empty file for testing
        '''
        return iter([])  # Empty file

    header = 'header to be eaten'
    bad_data = [
        ('way', 'too', 'many', 'params', 'test'),  # Too many parameters
        ('not', 'enough', 'params'),  # Not enough parameters
        ('', '*****@*****.**', 'one', 'name'),  # Empty user_id
        ('missing2', '', 'two', 'name'),  # Empty email
        ('missing3', '*****@*****.**', '', 'name'),  # Empty name
        ('missing4', '*****@*****.**', 'four', '')
    ]  # Empty last name
    assert main.load_users('accounts.csv')  # Test sucessful inserts
    assert not main.load_users('accounts')  # Refuse non csv files
    monkeypatch.setattr(csv, 'reader', bad_file)
    assert not main.load_users('accounts.csv')  # Refuse empty files
    for test in bad_data:
        user_data = [header] + [test]
        csv.reader = Mock(return_value=iter(user_data))
        assert not main.load_users('accounts.csv')  # Refuse to use bad data
Esempio n. 2
0
def test_load_users_ignore_existing(filename, csv_collection):
    main.load_users(filename, csv_collection)
    loaded_users = []
    for key in csv_collection.database:
        loaded_users.append(key)

    for item in loaded_users:
        assert loaded_users.count(item) == 1
    assert len(loaded_users) == 3
Esempio n. 3
0
def baseline():
    '''
    Method needed for memory profiling
    '''
    user_baseline = main.init_user_collection()
    status_baseline = main.init_status_collection()
    main.load_users('accounts.csv', user_baseline)
    main.load_status_updates('status_updates.csv', status_baseline)
    main.add_user('dave03', '*****@*****.**', 'Dave', 'Jones', user_baseline)
    main.add_status('dave03', 'dave03_01', 'Random text', status_baseline)
    main.update_user('dave03', '*****@*****.**', 'Dave', 'Rex', user_baseline)
    main.update_status('dave03', 'dave03_01', 'Whos in charge now',
                       status_baseline)
    main.search_user('dave03', user_baseline)
    main.search_status('dave03_01', status_baseline)
    main.delete_status('dave03_01', status_baseline)
    main.delete_user('dave03', user_baseline)
Esempio n. 4
0
def test_load_users_bad_file(user_file):
    '''
    Test that load_users will only work with .csv files
    '''
    csv.reader = Mock(return_value=iter([]))
    with patch('main.users.UserCollection') as mocker:
        insert = mocker.return_value.table.insert_many
        assert not main.load_users(user_file[:-4], mocker())
        insert.assert_not_called()
Esempio n. 5
0
def test_load_users_empty_file(user_file):
    '''
    Test that load_users reports empty files
    '''
    with patch('main.users.UserCollection') as mocker:
        csv.reader = Mock(return_value=iter([]))
        assert not main.load_users(user_file, mocker())
        insert = mocker.return_value.table.insert_many
        insert.assert_not_called()
Esempio n. 6
0
def load_users():
    """
    Loads user accounts from a file
    """

    filename = input('Enter filename of user file: ')
    if not main.load_users(filename, user_collection):
        print("An error occurred while trying to load users")
    else:
        print("Load users was successful")
Esempio n. 7
0
def test_load_users(user_file):
    '''
    Test that user data is tranfered from the CSV file to the database
    '''
    db_fields = ('user_id', 'user_name', 'user_last_name', 'user_email')
    # Last item must have be a repeaded user_id
    user_data = [('header to be eaten'),
                 ('evmiles97', 'Eve', 'Miles', '*****@*****.**'),
                 ('dave03', 'David', 'Yuen', '*****@*****.**'),
                 ('evmiles97', 'Eve', 'Miles', '*****@*****.**')]
    csv.reader = Mock(return_value=iter(user_data))
    with patch('main.users.UserCollection') as mocker:
        insert = mocker.return_value.table.insert_many
        assert main.load_users(user_file, mocker())
        insert.assert_called_once_with(user_data[1:-1], fields=db_fields)
Esempio n. 8
0
def test_load_users_empty_data(user_file):
    '''
    Test that load_users will not transfer empty data
    '''
    bad_data = [('', '*****@*****.**', 'one', 'name'),
                ('missing2', '', 'two', 'name'),
                ('missing3', '*****@*****.**', '', 'name'),
                ('missing4', '*****@*****.**', 'four', '')]
    header = 'header to be eaten'
    with patch('main.users.UserCollection') as mocker:
        insert = mocker.return_value.table.insert_many
        for test in bad_data:
            user_data = [header] + [test]
            csv.reader = Mock(return_value=iter(user_data))
            assert not main.load_users(user_file, mocker())
        insert.assert_not_called()
Esempio n. 9
0
def test_load_users_param_check(user_file):
    '''
    Test that load_users will only transfer data with four parameters
    '''
    bad_data = [('way', 'too', 'many', 'params', 'test'),
                ('*****@*****.**', 'one', 'name'),
                ('missing2', 'two', 'name'),
                ('missing3', '*****@*****.**', 'name'),
                ('missing4', '*****@*****.**', 'four')]
    header = 'header to be eaten'
    with patch('main.users.UserCollection') as mocker:
        insert = mocker.return_value.table.insert_many
        for test in bad_data:
            user_data = [header] + [test]
            csv.reader = Mock(return_value=iter(user_data))
            assert not main.load_users(user_file, mocker())
        insert.assert_not_called()
Esempio n. 10
0
def test_load_users(user_file, user_keys):
    '''
    Test that user data is tranfered from the CSV file to the database
    '''
    db_fields = (user_keys[0], user_keys[2], user_keys[3], user_keys[1])
    # Last item must have be a repeaded user_id
    user_data = [('header to be eaten'),
                 ('evmiles97', 'Eve', 'Miles', '*****@*****.**'),
                 ('dave03', 'David', 'Yuen', '*****@*****.**'),
                 ('evmiles97', 'Eve', 'Miles', '*****@*****.**')]
    call_data = []
    for data in user_data[1:-1]:
        call_data.append(dict(zip(db_fields, data)))
    csv.reader = Mock(return_value=iter(user_data))
    with patch('main.users.UserCollection') as mocker:
        assert main.load_users(user_file, mocker())
        insert = mocker.return_value.table.insert_many
        insert.assert_called_once_with(call_data)
Esempio n. 11
0
def test_load_users(db):
    assert main.load_users('accounts_small.csv') is True
    print(list(db['users']))
    assert list(db['users']) == [{
        'id': 1,
        'NAME': 'Eve',
        'EMAIL': '*****@*****.**',
        'USER_ID': 'evmiles97',
        'LASTNAME': 'Miles'
    }, {
        'id': 2,
        'NAME': 'David',
        'EMAIL': '*****@*****.**',
        'USER_ID': 'dave03',
        'LASTNAME': 'Yuen'
    }, {
        'id': 3,
        'NAME': 'Alvaro',
        'EMAIL': '*****@*****.**',
        'USER_ID': 'alcon49',
        'LASTNAME': 'Conejo'
    }]
Esempio n. 12
0
 def test_load_users(self):
     self.assertEqual(main.load_users('accounts.csv', self.user_collection),
                      True)
Esempio n. 13
0
def test_load_users_true(filename, collection):
    result = main.load_users(filename, collection)

    assert result is True
Esempio n. 14
0
def test_load_users_false(collection):
    result = main.load_users('missing_fields.csv', collection)

    assert result is False
Esempio n. 15
0
'''
Simple test for loading data into database
'''
from multiprocessing import Process, Queue
import main

def fun(queue):
    '''
    Example demenstrating queues
    '''
    queue.put([42, None, 'hello'])

if __name__ == '__main__':
    que = Queue()
    pro = Process(target=fun, args=(que,))
    pro.start()
    print(que.get())    # prints "[42, None, 'hello']"
    pro.join()
    # test main now
    accounts = main.init_user_collection()
    statuses = main.init_status_collection()
    accounts.table.drop()
    statuses.table.drop()
    print(main.load_users('accounts.csv', accounts))
    print(main.load_status_updates('status_updates.csv', statuses))
Esempio n. 16
0
'''
Import into ipython for easier testing
'''
import peewee as pw  # pylint: disable = W0611
import main

user = main.init_user_collection()
status = main.init_status_collection()
main.load_users('accounts.csv', user)
main.load_status_updates('status_updates.csv', status)
Esempio n. 17
0
def load_users():
    '''
    Loads user accounts from a file
    '''
    filename = input('Enter filename of user file: ')
    main.load_users(filename)
Esempio n. 18
0
def test_load_users():
    '''
    Test each aspect of load_users
    '''
    assert main.load_users('accounts.csv')
Esempio n. 19
0
 def test_save_users(self):
     main.load_users('accounts.csv', self.user_collection)
     self.assertEqual(
         main.save_users('accounts_saved.csv', self.user_collection), True)
Esempio n. 20
0
def load_users():
    '''
    Loads user accounts from a file
    '''
    filename = input('Enter filename of user file: ').strip()
    main.load_users(filename, user_collection)