summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormike bayer <mike_mp@zzzcomputing.com>2017-09-27 15:47:10 -0400
committerGerrit Code Review <gerrit@ci.zzzcomputing.com>2017-09-27 15:47:10 -0400
commite111852270ee20fbc32934eeefd0883e8ffeaba8 (patch)
treee71e7c3804ff28b893afd6f17ffc4b4b8d1dc1e9 /test
parent3d50251e0a04a7648c5d3d4c4bee22673fc5660e (diff)
parent5abb036e9b9eba0f61cf9617dea2d879c2d5b09c (diff)
downloadsqlalchemy-e111852270ee20fbc32934eeefd0883e8ffeaba8.tar.gz
Merge "Don't expire "deferred" attributes in make_transient_to_detached"
Diffstat (limited to 'test')
-rw-r--r--test/orm/test_expire.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/orm/test_expire.py b/test/orm/test_expire.py
index c6ecd1f35..e7ef20e7b 100644
--- a/test/orm/test_expire.py
+++ b/test/orm/test_expire.py
@@ -13,6 +13,7 @@ from sqlalchemy.orm import mapper, relationship, create_session, \
from sqlalchemy.testing import fixtures
from test.orm import _fixtures
from sqlalchemy.sql import select
+from sqlalchemy.orm import make_transient_to_detached
class ExpireTest(_fixtures.FixtureTest):
@@ -1035,6 +1036,46 @@ class ExpireTest(_fixtures.FixtureTest):
.expired_attributes
assert 'addresses' not in attributes.instance_state(u1).callables
+ def test_deferred_expire_w_transient_to_detached(self):
+ orders, Order = self.tables.orders, self.classes.Order
+ mapper(Order, orders, properties={
+ "description": deferred(orders.c.description)
+ })
+
+ s = Session()
+ item = Order(id=1)
+
+ make_transient_to_detached(item)
+ s.add(item)
+ item.isopen
+ assert 'description' not in item.__dict__
+
+ def test_deferred_expire_normally(self):
+ orders, Order = self.tables.orders, self.classes.Order
+ mapper(Order, orders, properties={
+ "description": deferred(orders.c.description)
+ })
+
+ s = Session()
+
+ item = s.query(Order).first()
+ s.expire(item)
+ item.isopen
+ assert 'description' not in item.__dict__
+
+ def test_deferred_expire_explicit_attrs(self):
+ orders, Order = self.tables.orders, self.classes.Order
+ mapper(Order, orders, properties={
+ "description": deferred(orders.c.description)
+ })
+
+ s = Session()
+
+ item = s.query(Order).first()
+ s.expire(item, ['isopen', 'description'])
+ item.isopen
+ assert 'description' in item.__dict__
+
class PolymorphicExpireTest(fixtures.MappedTest):
run_inserts = 'once'