summaryrefslogtreecommitdiff
path: root/test/orm/test_query.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/test_query.py')
-rw-r--r--test/orm/test_query.py49
1 files changed, 46 insertions, 3 deletions
diff --git a/test/orm/test_query.py b/test/orm/test_query.py
index 882255cc8..aabee82ad 100644
--- a/test/orm/test_query.py
+++ b/test/orm/test_query.py
@@ -111,6 +111,7 @@ class OnlyReturnTuplesTest(QueryTest):
is_false(query.is_single_entity)
row = query.first()
assert isinstance(row, collections_abc.Sequence)
+ assert isinstance(row._mapping, collections_abc.Mapping)
def test_multiple_entity_false(self):
User = self.classes.User
@@ -118,6 +119,7 @@ class OnlyReturnTuplesTest(QueryTest):
is_false(query.is_single_entity)
row = query.first()
assert isinstance(row, collections_abc.Sequence)
+ assert isinstance(row._mapping, collections_abc.Mapping)
def test_multiple_entity_true(self):
User = self.classes.User
@@ -125,6 +127,7 @@ class OnlyReturnTuplesTest(QueryTest):
is_false(query.is_single_entity)
row = query.first()
assert isinstance(row, collections_abc.Sequence)
+ assert isinstance(row._mapping, collections_abc.Mapping)
class RowTupleTest(QueryTest):
@@ -141,8 +144,48 @@ class RowTupleTest(QueryTest):
.filter(User.id == 7)
.first()
)
- assert row.id == 7
- assert row.uname == "jack"
+
+ eq_(row.id, 7)
+ eq_(row.uname, "jack")
+
+ def test_entity_mapping_access(self):
+ User, users = self.classes.User, self.tables.users
+ Address, addresses = self.classes.Address, self.tables.addresses
+
+ mapper(User, users, properties={"addresses": relationship(Address)})
+ mapper(Address, addresses)
+
+ s = Session()
+
+ row = s.query(User).only_return_tuples(True).first()
+ eq_(row._mapping[User], row[0])
+
+ row = s.query(User, Address).join(User.addresses).first()
+ eq_(row._mapping[User], row[0])
+ eq_(row._mapping[Address], row[1])
+ eq_(row._mapping["User"], row[0])
+ eq_(row._mapping["Address"], row[1])
+
+ u1 = aliased(User)
+ row = s.query(u1).only_return_tuples(True).first()
+ eq_(row._mapping[u1], row[0])
+ assert_raises(KeyError, lambda: row._mapping[User])
+
+ row = (
+ s.query(User.id, Address.email_address)
+ .join(User.addresses)
+ .first()
+ )
+
+ eq_(row._mapping[User.id], row[0])
+ eq_(row._mapping[User.id], row[0])
+ eq_(row._mapping["id"], row[0])
+ eq_(row._mapping[Address.email_address], row[1])
+ eq_(row._mapping["email_address"], row[1])
+ eq_(row._mapping[users.c.id], row[0])
+ eq_(row._mapping[addresses.c.email_address], row[1])
+ assert_raises(KeyError, lambda: row._mapping[User.name])
+ assert_raises(KeyError, lambda: row._mapping[users.c.name])
def test_deep_entity(self):
users, User = (self.tables.users, self.classes.User)
@@ -3908,7 +3951,7 @@ class DistinctTest(QueryTest, AssertsCompiledSQL):
],
)
for row in q:
- eq_(row.keys(), ["id", "foo", "id"])
+ eq_(row._mapping.keys(), ["id", "foo", "id"])
def test_columns_augmented_sql_one(self):
User, Address = self.classes.User, self.classes.Address