diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-06-10 21:18:24 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-06-10 21:18:24 +0000 |
| commit | 45cec095b4904ba71425d2fe18c143982dd08f43 (patch) | |
| tree | af5e540fdcbf1cb2a3337157d69d4b40be010fa8 /test/orm/test_selectable.py | |
| parent | 698a3c1ac665e7cd2ef8d5ad3ebf51b7fe6661f4 (diff) | |
| download | sqlalchemy-45cec095b4904ba71425d2fe18c143982dd08f43.tar.gz | |
- unit tests have been migrated from unittest to nose.
See README.unittests for information on how to run
the tests. [ticket:970]
Diffstat (limited to 'test/orm/test_selectable.py')
| -rw-r--r-- | test/orm/test_selectable.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/test/orm/test_selectable.py b/test/orm/test_selectable.py new file mode 100644 index 000000000..0a2025360 --- /dev/null +++ b/test/orm/test_selectable.py @@ -0,0 +1,55 @@ +"""Generic mapping to Select statements""" +from sqlalchemy.test.testing import assert_raises, assert_raises_message +import sqlalchemy as sa +from sqlalchemy.test import testing +from sqlalchemy import String, Integer, select +from sqlalchemy.test.schema import Table +from sqlalchemy.test.schema import Column +from sqlalchemy.orm import mapper, create_session +from sqlalchemy.test.testing import eq_ +from test.orm import _base + + +# TODO: more tests mapping to selects + +class SelectableNoFromsTest(_base.MappedTest): + @classmethod + def define_tables(cls, metadata): + Table('common', metadata, + Column('id', Integer, primary_key=True), + Column('data', Integer), + Column('extra', String(45))) + + @classmethod + def setup_classes(cls): + class Subset(_base.ComparableEntity): + pass + + @testing.resolve_artifact_names + def test_no_tables(self): + + selectable = select(["x", "y", "z"]) + assert_raises_message(sa.exc.InvalidRequestError, + "Could not find any Table objects", + mapper, Subset, selectable) + + @testing.emits_warning('.*creating an Alias.*') + @testing.resolve_artifact_names + def test_basic(self): + subset_select = select([common.c.id, common.c.data]) + subset_mapper = mapper(Subset, subset_select) + + sess = create_session(bind=testing.db) + sess.add(Subset(data=1)) + sess.flush() + sess.expunge_all() + + eq_(sess.query(Subset).all(), [Subset(data=1)]) + eq_(sess.query(Subset).filter(Subset.data==1).one(), Subset(data=1)) + eq_(sess.query(Subset).filter(Subset.data!=1).first(), None) + + subset_select = sa.orm.class_mapper(Subset).mapped_table + eq_(sess.query(Subset).filter(subset_select.c.data==1).one(), + Subset(data=1)) + + |
