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_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_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_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_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_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_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 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_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)