def test_fd_manager_fd_list(db_controller): assert ( "__seeded_test_db__" in FdMultiController.fd_list() ), "failed to register test db" # remove file and try to open os.remove(FdMultiController._path_generator("registered_pickle")) assert FdMultiController.fd_list() == [], "failed to remove db registry"
def __init__(self, api_list, test=False): self.api_list = api_list self.testing = test if not self.testing: FdMultiController.fd_register("asset") self.conn = FdMultiController.fd_connect("asset", "rw") self.log = Logger()
def init_db_finda(): # can try a if file exists however it # would not work when changing to a different database # better let the dbms tell you if the db exists or not try: FdMultiController.fd_create("asset") except: pass dbc = DataBaseConstructor() dbc.create_db_connection() dbc.dh_pass_asset_classes_fd() dbc.dh_pass_tickers_fd()
def test_fd_manager_fd_connect(db_controller): # standard path; connect to valid database connRead = FdMultiController.fd_connect("__seeded_test_db__", "zzrzz") connWrite = FdMultiController.fd_connect("__seeded_test_db__", "zzwzz") connDelete = FdMultiController.fd_connect("__seeded_test_db__", "zzdzz") connMulti = FdMultiController.fd_connect("__seeded_test_db__", "zrzdzzw") # checking permissions assert ( type(connRead.read) == fd_read.FdRead ), "error composing FdRead object to connection" assert ( type(connWrite.write) == fd_write.FdWrite ), "error composing FdWrite object to connection" assert ( type(connDelete.remove) == fd_remove.FdRemove ), "error composing FdRemove object to connection" assert ( connRead.write is None and connRead.remove is None ), "error while checking only correct permissions were added" assert ( connWrite.read is None and connWrite.remove is None ), "error while checking only correct permissions were added" assert ( connDelete.read is None and connDelete.write is None ), "error while checking only correct permissions were added" assert ( type(connMulti.read) == fd_read.FdRead and type(connMulti.write) == fd_write.FdWrite and type(connMulti.remove) == fd_remove.FdRemove ) with pytest.raises(Exception): FdMultiController.fd_connect("RaNdOmGibBeRiSh", "rwd") pytest.fail("expected error connecting to non existent database")
def test_fd_manager_fd_create(db_controller): # normal flow of events assert FdMultiController.fd_create("testDB1") is True, "reported faliure" assert "testDB1" in FdMultiController.fd_list() # given name already registered with pytest.raises(Exception) as e: FdMultiController.fd_create("testDB1") assert "already exists" in str(e.value), "incorrect exception raised" # DBsqlite3.OperationalError cannot be created assert FdMultiController.fd_create("/") is False, "created ivalid file /" with mock.patch("Finda.FdMultiController.fd_create") as m: m.side_effect = OSError with pytest.raises(OSError) as e: assert FdMultiController.fd_create() == "Hello World" pytest.fail("expected error creating uncreatable bd")
def db_controller(): """ return db controller for use with testing """ helpers.clear_DBs() FdMultiController.fd_create("__seeded_test_db__") FdMultiController.fd_create("__empty_test_db__") # this is a bit scetch but preferable to having a seeding script lying about # add some data independant of read and write modules conn1 = sqlite3.connect( FdMultiController._path_generator("__seeded_test_db__")) conn2 = sqlite3.connect( FdMultiController._path_generator("__empty_test_db__")) conn1.cursor().executescript(SEED) conn1.commit() conn2.commit() conn1.close() conn2.close() yield { "seeded": FdMultiController.fd_connect("__seeded_test_db__", "rwd"), "empty": FdMultiController.fd_connect("__empty_test_db__", "rwd"), } helpers.clear_DBs()
def test_fd_manager_fd_register(db_controller): # test faliure, file not there path = FdMultiController._path_generator("RaNdOmGibBeRiSh") with pytest.raises(Exception) as e: FdMultiController.fd_register("RaNdOmGibBeRiSh") expWarn = "No file found at: " + path assert expWarn in str(e.value) # test sucess # Warning: If schema checks implemented as per TODO, rewrite this conn = sqlite3.connect(path) # reregister existing db and check no duplicate added FdMultiController.fd_register("RaNdOmGibBeRiSh") FdMultiController.fd_register("RaNdOmGibBeRiSh") assert FdMultiController.fd_list().count("RaNdOmGibBeRiSh") == 1 FdMultiController.fd_remove("RaNdOmGibBeRiSh") assert "RaNdOmGibBeRiSh" not in FdMultiController.fd_list()
def test_fd_manager_fd_remove(db_controller): assert "__seeded_test_db__" in FdMultiController.fd_list(), "db not created" FdMultiController.fd_remove("__seeded_test_db__") assert FdMultiController.fd_list() == [ "__empty_test_db__" ], "error checking removed database removed from register"
def create_db_connection(self): self.conn = FdMultiController.fd_connect("asset", "rw")
def __init__(self): self.conn = FdMultiController.fd_connect("asset", "rw")
def clear_DBs(): # remove all financial database whos names used for testing environment for ndb in TESTINGDBS: FdMultiController.fd_remove(ndb)