From: Mike Bayer Date: Mon, 25 Jan 2010 16:22:07 +0000 (+0000) Subject: added a test to ensure the concrete example in the docs works X-Git-Tag: rel_0_6beta1~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ba53c6e844a81d984b70c46d2c1d41405e76595c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git added a test to ensure the concrete example in the docs works --- diff --git a/test/ext/test_declarative.py b/test/ext/test_declarative.py index c54e34e67a..cf5f72050f 100644 --- a/test/ext/test_declarative.py +++ b/test/ext/test_declarative.py @@ -1488,6 +1488,53 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): Engineer(name='vlad'), Engineer(name='wally') ] ) + + def test_concrete_inline_non_polymorphic(self): + """test the example from the declarative docs.""" + + class Person(Base, ComparableEntity): + __tablename__ = 'people' + id = Column(Integer, primary_key=True) + name = Column(String(50)) + + class Engineer(Person): + __tablename__ = 'engineers' + __mapper_args__ = {'concrete':True} + id = Column(Integer, primary_key=True) + primary_language = Column(String(50)) + name = Column(String(50)) + + class Manager(Person): + __tablename__ = 'manager' + __mapper_args__ = {'concrete':True} + id = Column(Integer, primary_key=True) + golf_swing = Column(String(50)) + name = Column(String(50)) + + Base.metadata.create_all() + sess = create_session() + + e1 = Engineer(name="dilbert", primary_language="java") + e2 = Engineer(name="wally", primary_language="c++") + m1 = Manager(name="dogbert", golf_swing="fore!") + e3 = Engineer(name="vlad", primary_language="cobol") + + sess.add_all([e1, e2, m1, e3]) + sess.flush() + sess.expunge_all() + eq_( + sess.query(Engineer).order_by(Engineer.name).all(), + [ + Engineer(name='dilbert'), + Engineer(name='vlad'), Engineer(name='wally') + ] + ) + eq_( + sess.query(Manager).all(), + [ + Manager(name='dogbert'), + ] + ) def _produce_test(inline, stringbased):