Source code for tests.test_pydblite

# -*- coding: utf-8 -*-

import os
import sys
import unittest

from pydblite.pydblite import Base

from .common_tests import Generic

test_db_name = 'test_database'


[docs]class PyDbLiteTestCase(Generic, unittest.TestCase):
[docs] def setUp(self): # NOQA self.first_record_id = 0 filter_db = Base(test_db_name, save_to_file=False) filter_db.create('unique_id', 'name', "active", mode="override") self.filter_db = filter_db
[docs] def tearDown(self): # NOQA if os.path.isfile(test_db_name): os.remove(test_db_name) elif os.path.isdir(test_db_name): os.rmdir(test_db_name)
[docs] def setup_db_for_filter(self): self.reset_status_values_for_filter() for d in self.status: res = self.filter_db.insert(**d) self.assertEqual(res, 6)
[docs] def test_open(self): db = Base('dummy', save_to_file=False) db.create('name', 'age', 'size') db.insert(name='homer', age=23, size=1.84)
[docs] def test_open_file_with_existing_dir(self): os.mkdir(test_db_name) db = Base(test_db_name, save_to_file=True) # A dir with that name exists self.assertRaises(IOError, db.create, 'unique_id', 'name', "active", mode="open")
[docs] def test_open_existing(self): db = Base(test_db_name, save_to_file=True) db.create('unique_id', 'name', "active", mode="open") db.insert("123", "N", True) db.commit() # Just verify that it works to open an existing db. # The column names are ignored, therefore they should # equal the old column names db = Base(test_db_name, save_to_file=True) db.create('unique_id2', 'name2', "active2", mode="open") rec = db.insert("123", "N", True) db.commit() self.assertEqual(db.fields, ['unique_id', 'name', "active"]) # mode="override" will overwrite existing db db = Base(test_db_name, save_to_file=True) db.create('unique_id', 'name', "active", mode="override") db.commit() self.assertEqual(len(self.filter_db), 0) # Equals passing mode=None self.assertRaises(IOError, db.create, 'unique_id', 'name', "active") self.assertRaises(ValueError, db.create, 'unique_id', 'name', "active", mode="invalidmode")
[docs] def test_open_memory(self): db = Base(":memory:") self.assertFalse(db.save_to_file)
[docs] def test_open_memory_with_existing_filename(self): self.filter_db = Base(test_db_name, save_to_file=True) self.filter_db.create('unique_id', 'name', "active", mode="override") self.filter_db.commit() db = Base(test_db_name, save_to_file=False) db.open() self.assertEqual(db.fields, ['unique_id', 'name', "active"]) db = Base(test_db_name, save_to_file=False) db.create('unique_id2', 'name2', "active2", mode="override") self.assertEqual(db.fields, ['unique_id2', 'name2', "active2"])
[docs] def test_insert_list(self): status = (8, "testname", 0) # Insert 7 entries rec = self.filter_db.insert(status) self.assertEqual(rec, 0) self.assertEqual(self.filter_db[rec]["unique_id"], status)
[docs] def test_sqlite_compat_insert_list(self): self.filter_db = Base(test_db_name, save_to_file=False, sqlite_compat=True) self.filter_db.create('unique_id', 'name', "active", mode="override") status = [(8, "testname", 0)] # Insert 1 entries rec = self.filter_db.insert(status) self.assertEqual(rec, None) self.assertEqual(len(self.filter_db), 1) self.assertEqual(self.filter_db[0]["unique_id"], 8) self.assertEqual(self.filter_db[0]["name"], "testname") self.assertEqual(self.filter_db[0]["active"], 0)
[docs] def test_sqlite_compat(self): db = Base(test_db_name, save_to_file=False, sqlite_compat=True) db.create('unique_id', 'name', "active", mode="open") self.reset_status_values_for_filter() # Insert 7 entries res = db.insert(self.status) self.assertEqual(res, None) self.assertEqual(len(db), 7) status = [(8, "testname", 0)] res = db.insert(status) self.assertEqual(res, None) self.assertEqual(len(db), 8)
if __name__ == "__main__": sys.path.insert(0, os.getcwd()) suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(PyDbLiteTestCase)) unittest.TextTestRunner().run(suite)