示例#1
0
    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"
示例#2
0
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)
示例#3
0
    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")
示例#4
0
    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