summaryrefslogtreecommitdiff
path: root/test/orm/selectable.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/selectable.py')
-rw-r--r--test/orm/selectable.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/test/orm/selectable.py b/test/orm/selectable.py
new file mode 100644
index 000000000..920cd9d8f
--- /dev/null
+++ b/test/orm/selectable.py
@@ -0,0 +1,49 @@
+"""all tests involving generic mapping to Select statements"""
+
+import testbase
+from sqlalchemy import *
+from sqlalchemy.orm import *
+from testlib import *
+from fixtures import *
+from query import QueryTest
+
+class SelectableNoFromsTest(ORMTest):
+ def define_tables(self, metadata):
+ global common_table
+ common_table = Table('common', metadata,
+ Column('id', Integer, primary_key=True),
+ Column('data', Integer),
+ Column('extra', String(45)),
+ )
+
+ def test_no_tables(self):
+ class Subset(object):
+ pass
+ selectable = select(["x", "y", "z"]).alias('foo')
+ try:
+ mapper(Subset, selectable)
+ compile_mappers()
+ assert False
+ except exceptions.InvalidRequestError, e:
+ assert str(e) == "Could not find any Table objects in mapped table 'SELECT x, y, z'", str(e)
+
+ def test_basic(self):
+ class Subset(Base):
+ pass
+
+ subset_select = select([common_table.c.id, common_table.c.data]).alias('subset')
+ subset_mapper = mapper(Subset, subset_select)
+
+ sess = create_session(bind=testbase.db)
+ l = Subset()
+ l.data = 1
+ sess.save(l)
+ sess.flush()
+ sess.clear()
+
+ assert [Subset(data=1)] == sess.query(Subset).all()
+
+ # TODO: more tests mapping to selects
+
+if __name__ == '__main__':
+ testbase.main() \ No newline at end of file