diff options
Diffstat (limited to 'test/sql/test_insert.py')
| -rw-r--r-- | test/sql/test_insert.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/sql/test_insert.py b/test/sql/test_insert.py index 071f595f3..61e0783e4 100644 --- a/test/sql/test_insert.py +++ b/test/sql/test_insert.py @@ -1,4 +1,7 @@ #! coding:utf-8 +from __future__ import annotations + +from typing import Tuple from sqlalchemy import bindparam from sqlalchemy import Column @@ -66,6 +69,30 @@ class _InsertTestBase: class InsertTest(_InsertTestBase, fixtures.TablesTest, AssertsCompiledSQL): __dialect__ = "default" + @testing.combinations( + ((), ("z",), ()), + (("x",), (), ()), + (("x",), ("y",), ("x", "y")), + (("x", "y"), ("y",), ("x", "y")), + ) + def test_return_defaults_generative( + self, + initial_keys: Tuple[str, ...], + second_keys: Tuple[str, ...], + expected_keys: Tuple[str, ...], + ): + t = table("foo", column("x"), column("y"), column("z")) + + initial_cols = tuple(t.c[initial_keys]) + second_cols = tuple(t.c[second_keys]) + expected = set(t.c[expected_keys]) + + stmt = t.insert().return_defaults(*initial_cols) + eq_(stmt._return_defaults_columns, initial_cols) + stmt = stmt.return_defaults(*second_cols) + assert isinstance(stmt._return_defaults_columns, tuple) + eq_(set(stmt._return_defaults_columns), expected) + def test_binds_that_match_columns(self): """test bind params named after column names replace the normal SET/VALUES generation.""" |
