diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2017-09-27 15:47:10 -0400 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci.zzzcomputing.com> | 2017-09-27 15:47:10 -0400 |
| commit | e111852270ee20fbc32934eeefd0883e8ffeaba8 (patch) | |
| tree | e71e7c3804ff28b893afd6f17ffc4b4b8d1dc1e9 /test | |
| parent | 3d50251e0a04a7648c5d3d4c4bee22673fc5660e (diff) | |
| parent | 5abb036e9b9eba0f61cf9617dea2d879c2d5b09c (diff) | |
| download | sqlalchemy-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.py | 41 |
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' |
