summaryrefslogtreecommitdiff
path: root/test/orm/test_bind.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/orm/test_bind.py')
-rw-r--r--test/orm/test_bind.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/test/orm/test_bind.py b/test/orm/test_bind.py
new file mode 100644
index 000000000..9b1c20b60
--- /dev/null
+++ b/test/orm/test_bind.py
@@ -0,0 +1,59 @@
+from sqlalchemy.test.testing import assert_raises, assert_raises_message
+from sqlalchemy import MetaData, Integer
+from sqlalchemy.test.schema import Table
+from sqlalchemy.test.schema import Column
+from sqlalchemy.orm import mapper, create_session
+import sqlalchemy as sa
+from sqlalchemy.test import testing
+from test.orm import _base
+
+
+class BindTest(_base.MappedTest):
+ @classmethod
+ def define_tables(cls, metadata):
+ Table('test_table', metadata,
+ Column('id', Integer, primary_key=True,
+ test_needs_autoincrement=True),
+ Column('data', Integer))
+
+ @classmethod
+ def setup_classes(cls):
+ class Foo(_base.BasicEntity):
+ pass
+
+ @classmethod
+ @testing.resolve_artifact_names
+ def setup_mappers(cls):
+ meta = MetaData()
+ test_table.tometadata(meta)
+
+ assert meta.tables['test_table'].bind is None
+ mapper(Foo, meta.tables['test_table'])
+
+ @testing.resolve_artifact_names
+ def test_session_bind(self):
+ engine = self.metadata.bind
+
+ for bind in (engine, engine.connect()):
+ try:
+ sess = create_session(bind=bind)
+ assert sess.bind is bind
+ f = Foo()
+ sess.add(f)
+ sess.flush()
+ assert sess.query(Foo).get(f.id) is f
+ finally:
+ if hasattr(bind, 'close'):
+ bind.close()
+
+ @testing.resolve_artifact_names
+ def test_session_unbound(self):
+ sess = create_session()
+ sess.add(Foo())
+ assert_raises_message(
+ sa.exc.UnboundExecutionError,
+ ('Could not locate a bind configured on Mapper|Foo|test_table '
+ 'or this Session'),
+ sess.flush)
+
+