def test_find_equals_equality_to_null_finds_nulls(self): db.create_table('t', default_cols(a='integer', b='text')) db.create('t', b='t1') field_with_null_val = list(qb.table('t').where('a', '=', None)) self.assertEqual(field_with_null_val[0]['a'], None) self.assertEqual(field_with_null_val[0]['b'], 't1')
def test_table_querying_all(self): db.create_table('t', default_cols(name='text', number='integer')) db.create('t', name='t1', number=1) created = next(qb.table('t').all()) self.assertEqual(created['name'], 't1') self.assertEqual(created['number'], 1)
def test_update_all(self): db.create_table('t', default_cols(id='integer')) db.create_many('t', ('id', ), ((1, ) for _ in range(10))) qb.table('t').update({'id': 0}) for row in db.all('t'): self.assertEqual(row['id'], 0)
def test_db_update_equal_works(self): db.create_table('t', default_cols(id='integer')) db.create('t', id=1) qb.table('t').where('id', '=', 1).update({'id': 2}) self.assertEqual(next(db.all('t'))['id'], 2)
def test_Table_droping(self): db.create_table('t', default_cols(a='text')) table = Table('t') table.drop() self.assertFalse(db.table_exists('t'))
def test_Table_drop_if_exist_drops_correctly(self): db.create_table('t', default_cols(a='text')) table = Table('t') table.drop_if_exists() self.assertFalse(db.table_exists('t'))
def test_where_not_null_finding_not_null_values(self): db.create_table('t', default_cols(a='integer', b='text')) db.create('t', b='t1') db.create('t', a='t2') field_with_null_val = list(qb.table('t').where_not_null('a')) self.assertEqual(field_with_null_val[0]['a'], 't2')
def test_table_first(self): db.create_table('t', default_cols(a='text', b='integer')) db.create_many('t', ('a', 'b'), (('t1', 1), ('t2', 2))) first = qb.table('t').first() self.assertEqual(first['a'], 't1') self.assertEqual(first['b'], 1)
def test_where_like_works(self): db.create_table('t', default_cols(a='integer', b='text')) db.create_many('t', ('a', 'b'), [(1, 'ttest1'), (2, 'test2'), (3, 't'), (None, 't3'), (5, 't4')]) fields_like_test = list(qb.table('t').where('b', 'LIKE', '%test%')) self.assertEqual(len(fields_like_test), 2)
def test_where_not_in(self): db.create_table('t', default_cols(a='integer', b='text')) db.create_many('t', ('a', 'b'), [(1, '1'), (2, '2'), (3, '3'), (4, '4')]) odd_fields = tuple(qb.table('t').where_not_in('a', (2, 3))) self.assertEqual(len(odd_fields), 2) self.assertEqual(odd_fields[0]['b'], '1')
def test_where_equality_to_non_null_value_doesnt_count_nulls(self): """ Watch out for a bug where Field = Value counted null values too. """ db.create_table('t', default_cols(a='integer', b='integer')) db.create_many('t', ('a', 'b'), ((None, 1), (2, 2))) field_with_id_2 = list(qb.table('t').where('a', '=', 2)) self.assertEqual(len(field_with_id_2), 1) self.assertEqual(field_with_id_2[0]['b'], 2)
def test_Table_renaming(self): db.create_table('t', default_cols(a='text')) table = Table('t') table.rename('s') table.save() self.assertFalse(db.table_exists('t')) self.assertTrue(db.table_exists('s'))
def test_db_update_a_lot_of_cols(self): db.create_table('t', default_cols(id='integer', number='integer')) db.create_many('t', ('id', 'number'), ((1, i) for i in range(10))) for row in db.all('t'): self.assertNotEqual(row['number'], -1) qb.table('t').where('id', '=', 1).update({'number': -1}) for row in db.all('t'): self.assertEqual(row['number'], -1)
def test_table_max_min_sum(self): db.create_table('t', default_cols(a='integer')) db.create_many('t', ('a', ), [(i, ) for i in range(10)]) count = qb.table('t').count() self.assertEqual(count, 10) self.assertEqual(qb.table('t').max('a'), 9) self.assertEqual(qb.table('t').min('a'), 0) self.assertEqual(qb.table('t').sum('a'), sum(range(10)))
def test_where_inequality_works_even_with_null_records(self): db.create_table('t', default_cols(a='integer', b='text')) db.create_many('t', ('a', 'b'), ((1, 't1'), (2, 't2'), (3, None), (None, 't4'))) fields_with_a_not_3 = list(qb.table('t').where('a', '!=', 3)) self.assertEqual(len(fields_with_a_not_3), 3) for field in fields_with_a_not_3: self.assertFalse(field['a'] == 3)
def test_where_gt_works(self): db.create_table('t', default_cols(a='integer', b='text')) db.create_many('t', ('a', 'b'), [(1, 't1'), (2, 't2'), (3, None), (None, 't3'), (5, 't4')]) field_with_a_gt_2 = list(qb.table('t').where('a', '>', 2)) self.assertEqual(len(field_with_a_gt_2), 2) for row in field_with_a_gt_2: self.assertTrue(row['a'] > 2) self.assertIn(row['b'], ['t4', None])
def test_where_many_with_two_conditions(self): db.create_table('t', default_cols(a='integer', b='text', c='real')) db.create('t', a=1, b='t1', c=3.4) db.create('t', a=2, b='t2', c=.3) db.create('t', a=3) db.create('t', b='t4') field_with_two_cond = list( qb.table('t').where_many([('a', '!=', 3), ('c', '>=', 1)])) self.assertEqual(len(field_with_two_cond), 1) self.assertEqual(field_with_two_cond[0]['b'], 't1')
def test_db_deletion_equality(self): db.create_table('t', default_cols(id='integer', name='text')) db.create('t', id=1, name='t1') db.create('t', name='t2') self.assertEqual(len(list(qb.table('t'))), 2) qb.table('t').where('name', '=', 't1').delete() rows = list(qb.table('t')) self.assertEqual(len(rows), 1) self.assertEqual(rows[0]['name'], 't2')
def test_where_equals_works(self): db.create_table('t', default_cols(id='integer', name='text')) db.create('t', id=1, name='t1') db.create('t', id=2, name='t2') db.create('t', id=3) query = qb.table('t').where('id', '=', 1) field_with_id_1 = list(qb.table('t').where('id', '=', 1)) self.assertEqual(len(field_with_id_1), 1) self.assertEqual(field_with_id_1[0]['name'], 't1')
def test_db_deletion_null(self): db.create_table('t', default_cols(id='integer', name='text')) db.create('t', name='t1') db.create('t', id=4, name='t5') db.create('t', id=2, name='t2') db.create('t', id=3) db.create('t', name='t4') qb.table('t').where('id', '=', None).delete() rows = list(qb.table('t')) self.assertEqual(len(rows), 3) for row in rows: self.assertNotEqual(row['id'], None)
def test_find_where_lesser_than_or_equal_works(self): """ Watch out for a bug that made columns with 'None' lesser or equal to the value given, returning rows that made no sense. """ db.create_table('t', default_cols(a='integer', name='text')) db.create_many('t', ('a', 'name'), [(1, 't1'), (2, 't2'), (3, None), (None, 't3'), (5, 't4')]) field_with_a_le_than_3 = list( qb.table('t').where_many([('a', '<=', 3)])) self.assertEqual(len(field_with_a_le_than_3), 3) for row in field_with_a_le_than_3: self.assertTrue(row['a'] <= 3) self.assertIn(row['name'], ['t1', 't2', None])
def setUpClass(cls): db.create_table('e', default_cols(a='integer', b='text')) cls.created_table = Table('c') cls.edited_table = Table('e')
def setUp(self): db.create_table('tests', default_cols(a='text')) db.create_many('tests', ('a', ), ('a', 'b', 'c')) self.mc = ModelContainer(db.all('tests'), Test)
def test_db_update_doesnt_update_not_found_columns(self): db.create_table('t', default_cols(id='integer')) db.create('t', id=0) qb.table('t').where('id', '=', '1').update({'id': 2}) self.assertEqual(next(db.all('t'))['id'], 0)
def test_table_count(self): db.create_table('t', default_cols(a='integer')) db.create_many('t', ('a', ), [(i, ) for i in range(10)]) count = qb.table('t').count() self.assertEqual(count, 10)