summaryrefslogtreecommitdiff
path: root/test/sql
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2020-07-07 18:58:18 +0000
committerGerrit Code Review <gerrit@bbpush.zzzcomputing.com>2020-07-07 18:58:18 +0000
commita6d8b674e92ef1cabdb2ab85490397f3ed12a42c (patch)
treeda1bc2912b3465939bee40a5f649053977ca85c7 /test/sql
parentbcb2421e9faaab8ce48e2731b9a2f7411204f393 (diff)
parent6eea9ca437084feae6a7b00276547e70ef6b40ad (diff)
downloadsqlalchemy-a6d8b674e92ef1cabdb2ab85490397f3ed12a42c.tar.gz
Merge "ensure we unwrap desc() /label() all the way w/ order by"
Diffstat (limited to 'test/sql')
-rw-r--r--test/sql/test_utils.py32
1 files changed, 31 insertions, 1 deletions
diff --git a/test/sql/test_utils.py b/test/sql/test_utils.py
index d68a74475..676ad4298 100644
--- a/test/sql/test_utils.py
+++ b/test/sql/test_utils.py
@@ -4,9 +4,14 @@ from sqlalchemy import MetaData
from sqlalchemy import select
from sqlalchemy import String
from sqlalchemy import Table
+from sqlalchemy import testing
+from sqlalchemy import util
from sqlalchemy.sql import base as sql_base
+from sqlalchemy.sql import coercions
+from sqlalchemy.sql import column
+from sqlalchemy.sql import ColumnElement
+from sqlalchemy.sql import roles
from sqlalchemy.sql import util as sql_util
-from sqlalchemy.sql.elements import ColumnElement
from sqlalchemy.testing import assert_raises
from sqlalchemy.testing import assert_raises_message
from sqlalchemy.testing import eq_
@@ -89,3 +94,28 @@ class MiscTest(fixtures.TestBase):
eq_(o4.bat, "hi")
assert_raises(TypeError, opt2.safe_merge, o4)
+
+ @testing.combinations(
+ (column("q"), [column("q")]),
+ (column("q").desc(), [column("q")]),
+ (column("q").desc().label(None), [column("q")]),
+ (column("q").label(None).desc(), [column("q")]),
+ (column("q").label(None).desc().label(None), [column("q")]),
+ ("foo", []), # textual label reference
+ (
+ select([column("q")]).scalar_subquery().label(None),
+ [select([column("q")]).scalar_subquery().label(None)],
+ ),
+ (
+ select([column("q")]).scalar_subquery().label(None).desc(),
+ [select([column("q")]).scalar_subquery().label(None)],
+ ),
+ )
+ def test_unwrap_order_by(self, expr, expected):
+
+ expr = coercions.expect(roles.OrderByRole, expr)
+
+ unwrapped = sql_util.unwrap_order_by(expr)
+
+ for a, b in util.zip_longest(unwrapped, expected):
+ assert a is not None and a.compare(b)