def test_build_uri(self): assert build_uri() == "sqlite:///:memory:" assert build_uri(sqlite_file="foo") == "sqlite:///foo" assert build_uri(uri_conn="sqlite:///foo") == "sqlite:///foo" with pytest.raises(ValueError): build_uri(db_name="f") with pytest.raises(KeyError): build_uri(db_type="pg", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434) assert build_uri(db_type="postgres", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434) == "postgresql://*****:*****@qsdqs:3434/pqsd" assert build_uri(db_type="mysql", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434) == "mysql+pymysql://foo:pp@qsdqs:3434/pqsd?charset=utf8"
def book_db_config(request): from piecash.core.session import build_uri sql_backend, db_config = request.param name = build_uri(**db_config) if sql_backend != "sqlite_in_mem" and database_exists(name): drop_database(name) yield db_config if sql_backend != "sqlite_in_mem" and database_exists(name): drop_database(name)
def test_create_default(self, book_db_config): with create_book(keep_foreign_keys=False, **book_db_config) as b: a = Account(commodity=b.currencies(mnemonic="SEK"), parent=b.root_account, name="léviö", type="ASSET") assert str(b.uri) == build_uri(**book_db_config) b.save() # reopen the DB except if sqlite_file is None if book_db_config.get("sqlite_file", True): with open_book(**book_db_config) as b: assert b.accounts(name="léviö").commodity == b.currencies(mnemonic="SEK")
def test_build_uri(self): assert build_uri() == "sqlite:///:memory:" assert build_uri(sqlite_file="foo") == "sqlite:///foo" assert build_uri(uri_conn="sqlite:///foo") == "sqlite:///foo" with pytest.raises(ValueError): build_uri(db_name="f") with pytest.raises(KeyError): build_uri(db_type="pg", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434) assert build_uri(db_type="postgres", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434) == "postgresql://*****:*****@qsdqs:3434/pqsd" assert build_uri( db_type="mysql", db_user="******", db_password="******", db_name="pqsd", db_host="qsdqs", db_port=3434 ) == "mysql+pymysql://foo:pp@qsdqs:3434/pqsd?charset=utf8" ### Test duplicate protocol spec. This happens when the open_book is called ### from GnuCash reports (.scm), gnucash-utilities. sqlite_uri = "sqlite:///some_file" uri = "sqlite:///some_file" assert build_uri(sqlite_file=uri) == sqlite_uri # When run with just the name (without sqlite:// prefix): uri = "some_file" assert build_uri(sqlite_file=uri) == sqlite_uri