def _func(dbconn, cursor): lib = t.Library.from_file(t.yaml("conn-queries")) conn = t.Connection(lib, dbconn) try: func(conn) finally: conn.close()
def test_defaults(): lib = t.Library.from_file(t.yaml("defaults-set")) s = lib.get_query("test") t.eq(s.name, "test") t.eq(s.desc, None) t.eq(s.type, "query") t.eq(s.dbs.keys(), [None]) t.eq(s.dbs[None].sql, "select * from actors;")
def test_basic(): l = t.Library.from_file(t.yaml("basic")) s = l.get_query("test") t.eq(s.name, "test") t.eq(s.dbs[None].sql, "select 1 as a") t.eq(s.dbs["pgsql"].sql, 'select 1 as "a"') u = l.get_update("test2") t.eq(u.dbs[None].sql, "create table foo(a int);")
def test_merge(): lib = t.Library.from_file(t.yaml("merge")) s = lib.get_query("test") t.eq(sorted(s.dbs.keys()), [None, "pgsql"]) t.eq(s.dbs[None].sql, "select * from scenes;") t.eq(s.dbs["pgsql"].sql, "select * from scenes2;")
def test_multiple_dbs(): lib = t.Library.from_file(t.yaml("multiple-dbs")) s = lib.get_query("yay") t.eq(sorted(s.dbs.keys()), ["pgsql", "sqlite"]) t.eq(s.dbs["pgsql"], s.dbs["sqlite"])
def test_invalid_type(): t.raises(ValueError, t.Library.from_file, t.yaml("error-type"))
def test_no_sql(): try: t.Library.from_file(t.yaml("error-no-sql")) except t.IncompleteStatementError, inst: t.eq(inst.name, "sql")
def test_file_name(): args = tuple([":memory:"]) conn = t.sheba.connect(t.yaml("conn-queries"), driver='sqlite3', args=args) t.eq(isinstance(conn, t.Connection), True)
def test_no_queries_after_conn(): fname = t.yaml("error-no-queries-after-conn") t.raises(ValueError, t.Library.from_file, fname)
def test_no_conn_info(): lib = t.Library.from_file(t.yaml("conn-queries")) t.raises(KeyError, lib.get_conn_info, "razzle-dazzle")
def test_repeated_name(): fname = t.yaml("error-repeated-conn-name") t.raises(ValueError, t.Library.from_file, fname)
def test_trailing_doc(): # Assert doesn't raise t.Library.from_file(t.yaml("error-last-doc-empty"))
def test_alternate_conn_info(): conn = t.sheba.connect(t.yaml("with-conn-info"), name="prod") t.eq(isinstance(conn, t.Connection), True)
def test_kwargs(): kw = {"database": ":memory:"} conn = t.sheba.connect(t.yaml("conn-queries"), driver='sqlite3', kwargs=kw) t.eq(isinstance(conn, t.Connection), True)
def test_merge_desc(): lib = t.Library.from_file(t.yaml("merge-desc")) t.eq(lib.get_query("test").desc, "Some info") t.eq(lib.get_query("test2").desc, "Ignored second")
def test_merge_errors(): t.raises(ValueError, t.Library.from_file, t.yaml("merge-error"))
def test_no_queries(): fname = t.yaml("error-no-queries") t.raises(ValueError, t.Library.from_file, fname)