diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-02-22 23:17:15 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-02-22 23:17:15 +0000 |
commit | bb6ec17708e56170bcccf7e32703d0ba37b160d2 (patch) | |
tree | 1da7768491154707db045c235f1ba6f2170a02e7 /test/orm/attributes.py | |
parent | e203b4dd4e2ce24e18fbeb9db515b2bdbbb56bc5 (diff) | |
download | sqlalchemy-bb6ec17708e56170bcccf7e32703d0ba37b160d2.tar.gz |
- the value of a bindparam() can be a callable, in which
case it's evaluated at statement execution time to
get the value.
- expressions used in filter(), filter_by() and others,
when they make usage of a clause generated from a
relation using the identity of a child object
(e.g. filter(Parent.child==<somechild>)), evaluate
the actual primary key value of <somechild> at
execution time so that the autoflush step of the
Query can complete, thereby populating the PK value
of <somechild> in the case that <somechild> was
pending.
- cleanup of attributes.get_committed_value() to never return
the NO_VALUE value; evaluates to None
Diffstat (limited to 'test/orm/attributes.py')
-rw-r--r-- | test/orm/attributes.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/orm/attributes.py b/test/orm/attributes.py index 27860517c..bfb4d0d77 100644 --- a/test/orm/attributes.py +++ b/test/orm/attributes.py @@ -597,6 +597,26 @@ class DeferredBackrefTest(TestBase): lazy_load = (p1, p2, p3) = [Post("post 1"), Post("post 2"), Post("post 3")] class HistoryTest(TestBase): + def test_get_committed_value(self): + class Foo(fixtures.Base): + pass + + attributes.register_class(Foo) + attributes.register_attribute(Foo, 'someattr', uselist=False, useobject=False) + + f = Foo() + self.assertEquals(Foo.someattr.impl.get_committed_value(f._state), None) + + f.someattr = 3 + self.assertEquals(Foo.someattr.impl.get_committed_value(f._state), None) + + f = Foo() + f.someattr = 3 + self.assertEquals(Foo.someattr.impl.get_committed_value(f._state), None) + + f._state.commit(['someattr']) + self.assertEquals(Foo.someattr.impl.get_committed_value(f._state), 3) + def test_scalar(self): class Foo(fixtures.Base): pass |