Beispiel #1
0
    def test_sum_inplace(self, conn):
        obj = sql.Composed([sql.SQL("foo ")])
        obj += sql.Literal("bar")
        assert isinstance(obj, sql.Composed)
        assert noe(obj.as_string(conn)) == "foo 'bar'"

        obj = sql.Composed([sql.SQL("foo ")])
        obj += sql.Composed([sql.Literal("bar")])
        assert isinstance(obj, sql.Composed)
        assert noe(obj.as_string(conn)) == "foo 'bar'"
Beispiel #2
0
    def test_as_bytes(self, conn):
        obj = sql.Composed([sql.SQL("foo"), sql.SQL("bar")])
        assert obj.as_bytes(conn) == b"foobar"

        obj = sql.Composed([sql.SQL("foo"), sql.SQL(eur)])

        conn.execute("set client_encoding to utf8")
        assert obj.as_bytes(conn) == ("foo" + eur).encode()

        conn.execute("set client_encoding to latin9")
        assert obj.as_bytes(conn) == ("foo" + eur).encode("latin9")
Beispiel #3
0
 def _make_limit_clause(limit: int) -> psql.Composed:
     """Create a limit clause in psql syntax if limit != -1, otherwise return empty clause"""
     if limit != -1:
         if not isinstance(limit, int):
             raise TypeError(
                 f"'limit' must be a positive integer. Got {limit}")
         return psql.SQL(" LIMIT {limit}").format(limit=limit)
     return psql.Composed([])
Beispiel #4
0
    def test_join(self, conn):
        obj = sql.SQL(", ").join(
            [sql.Identifier("foo"), sql.SQL("bar"), sql.Literal(42)]
        )
        assert isinstance(obj, sql.Composed)
        assert obj.as_string(conn) == '"foo", bar, 42'

        obj = sql.SQL(", ").join(
            sql.Composed(
                [sql.Identifier("foo"), sql.SQL("bar"), sql.Literal(42)]
            )
        )
        assert isinstance(obj, sql.Composed)
        assert obj.as_string(conn) == '"foo", bar, 42'

        obj = sql.SQL(", ").join([])
        assert obj == sql.Composed([])
Beispiel #5
0
 def _make_sample_clause(sample: int) -> psql.Composed:
     """Create a sample clause in psql syntax if limit != -1, otherwise return empty clause"""
     if sample != -1:
         if not isinstance(sample, int):
             raise TypeError(
                 f"'limit' must be a positive integer. Got {sample}")
         return psql.SQL(" ORDER BY RANDOM() LIMIT {sample}").format(
             sample=sample)
     return psql.Composed([])
Beispiel #6
0
 def test_iter(self):
     obj = sql.Composed([sql.SQL("foo"), sql.SQL("bar")])
     it = iter(obj)
     i = next(it)
     assert i == sql.SQL("foo")
     i = next(it)
     assert i == sql.SQL("bar")
     with pytest.raises(StopIteration):
         next(it)
Beispiel #7
0
 def test_as_string(self, conn):
     obj = sql.Composed([sql.SQL("foo"), sql.SQL("bar")])
     assert obj.as_string(conn) == "foobar"
Beispiel #8
0
 def test_auto_literal(self, conn):
     obj = sql.Composed(["fo'o", dt.date(2020, 1, 1)])
     obj = obj.join(", ")
     assert isinstance(obj, sql.Composed)
     assert noe(obj.as_string(conn)) == "'fo''o', '2020-01-01'"
Beispiel #9
0
 def test_join(self, conn):
     obj = sql.Composed([sql.Literal("foo"), sql.Identifier("b'ar")])
     obj = obj.join(", ")
     assert isinstance(obj, sql.Composed)
     assert noe(obj.as_string(conn)) == "'foo', \"b'ar\""
Beispiel #10
0
 def test_eq(self):
     L = [sql.Literal("foo"), sql.Identifier("b'ar")]
     l2 = [sql.Literal("foo"), sql.Literal("b'ar")]
     assert sql.Composed(L) == sql.Composed(list(L))
     assert sql.Composed(L) != L
     assert sql.Composed(L) != sql.Composed(l2)
Beispiel #11
0
 def test_repr(self):
     obj = sql.Composed([sql.Literal("foo"), sql.Identifier("b'ar")])
     assert (
         repr(obj) == """Composed([Literal('foo'), Identifier("b'ar")])""")
     assert str(obj) == repr(obj)