diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-08-06 21:11:27 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-08-06 21:11:27 +0000 |
| commit | 8fc5005dfe3eb66a46470ad8a8c7b95fc4d6bdca (patch) | |
| tree | ae9e27d12c9fbf8297bb90469509e1cb6a206242 /test/ext | |
| parent | 7638aa7f242c6ea3d743aa9100e32be2052546a6 (diff) | |
| download | sqlalchemy-8fc5005dfe3eb66a46470ad8a8c7b95fc4d6bdca.tar.gz | |
merge 0.6 series to trunk.
Diffstat (limited to 'test/ext')
| -rw-r--r-- | test/ext/test_associationproxy.py | 6 | ||||
| -rw-r--r-- | test/ext/test_compiler.py | 36 | ||||
| -rw-r--r-- | test/ext/test_declarative.py | 240 | ||||
| -rw-r--r-- | test/ext/test_serializer.py | 2 |
4 files changed, 162 insertions, 122 deletions
diff --git a/test/ext/test_associationproxy.py b/test/ext/test_associationproxy.py index 8df449718..4a5775218 100644 --- a/test/ext/test_associationproxy.py +++ b/test/ext/test_associationproxy.py @@ -1,6 +1,5 @@ from sqlalchemy.test.testing import eq_, assert_raises import copy -import gc import pickle from sqlalchemy import * @@ -8,6 +7,7 @@ from sqlalchemy.orm import * from sqlalchemy.orm.collections import collection from sqlalchemy.ext.associationproxy import * from sqlalchemy.test import * +from sqlalchemy.test.util import gc_collect class DictCollection(dict): @@ -880,7 +880,7 @@ class ReconstitutionTest(TestBase): add_child('p1', 'c1') - gc.collect() + gc_collect() add_child('p1', 'c2') session.flush() @@ -895,7 +895,7 @@ class ReconstitutionTest(TestBase): p.kids.extend(['c1', 'c2']) p_copy = copy.copy(p) del p - gc.collect() + gc_collect() assert set(p_copy.kids) == set(['c1', 'c2']), p.kids diff --git a/test/ext/test_compiler.py b/test/ext/test_compiler.py index ce2549099..3ee94d027 100644 --- a/test/ext/test_compiler.py +++ b/test/ext/test_compiler.py @@ -1,5 +1,7 @@ from sqlalchemy import * +from sqlalchemy.types import TypeEngine from sqlalchemy.sql.expression import ClauseElement, ColumnClause +from sqlalchemy.schema import DDLElement from sqlalchemy.ext.compiler import compiles from sqlalchemy.sql import table, column from sqlalchemy.test import * @@ -25,7 +27,35 @@ class UserDefinedTest(TestBase, AssertsCompiledSQL): select([MyThingy('x'), MyThingy('y')]).where(MyThingy() == 5), "SELECT >>x<<, >>y<< WHERE >>MYTHINGY!<< = :MYTHINGY!_1" ) + + def test_types(self): + class MyType(TypeEngine): + pass + + @compiles(MyType, 'sqlite') + def visit_type(type, compiler, **kw): + return "SQLITE_FOO" + + @compiles(MyType, 'postgresql') + def visit_type(type, compiler, **kw): + return "POSTGRES_FOO" + + from sqlalchemy.dialects.sqlite import base as sqlite + from sqlalchemy.dialects.postgresql import base as postgresql + self.assert_compile( + MyType(), + "SQLITE_FOO", + dialect=sqlite.dialect() + ) + + self.assert_compile( + MyType(), + "POSTGRES_FOO", + dialect=postgresql.dialect() + ) + + def test_stateful(self): class MyThingy(ColumnClause): def __init__(self): @@ -71,10 +101,10 @@ class UserDefinedTest(TestBase, AssertsCompiledSQL): ) def test_dialect_specific(self): - class AddThingy(ClauseElement): + class AddThingy(DDLElement): __visit_name__ = 'add_thingy' - class DropThingy(ClauseElement): + class DropThingy(DDLElement): __visit_name__ = 'drop_thingy' @compiles(AddThingy, 'sqlite') @@ -97,7 +127,7 @@ class UserDefinedTest(TestBase, AssertsCompiledSQL): "DROP THINGY" ) - from sqlalchemy.databases import sqlite as base + from sqlalchemy.dialects.sqlite import base self.assert_compile(AddThingy(), "ADD SPECIAL SL THINGY", dialect=base.dialect() diff --git a/test/ext/test_declarative.py b/test/ext/test_declarative.py index 224f41731..745e3b7cf 100644 --- a/test/ext/test_declarative.py +++ b/test/ext/test_declarative.py @@ -5,8 +5,7 @@ from sqlalchemy import exc import sqlalchemy as sa from sqlalchemy.test import testing from sqlalchemy import MetaData, Integer, String, ForeignKey, ForeignKeyConstraint, asc, Index -from sqlalchemy.test.schema import Table -from sqlalchemy.test.schema import Column +from sqlalchemy.test.schema import Table, Column from sqlalchemy.orm import relation, create_session, class_mapper, eagerload, compile_mappers, backref, clear_mappers, polymorphic_union, deferred from sqlalchemy.test.testing import eq_ @@ -27,14 +26,14 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) email = Column(String(50), key='_email') user_id = Column('user_id', Integer, ForeignKey('users.id'), key='_user_id') @@ -127,7 +126,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = Column(String(50)) addresses = relation("Address", order_by="desc(Address.email)", primaryjoin="User.id==Address.user_id", foreign_keys="[Address.user_id]", @@ -136,7 +135,7 @@ class DeclarativeTest(DeclarativeTestBase): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) email = Column(String(50)) user_id = Column(Integer) # note no foreign key @@ -180,13 +179,13 @@ class DeclarativeTest(DeclarativeTestBase): def test_uncompiled_attributes_in_relation(self): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) email = Column(String(50)) user_id = Column(Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = Column(String(50)) addresses = relation("Address", order_by=Address.email, foreign_keys=Address.user_id, @@ -272,14 +271,14 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) User.name = Column('name', String(50)) User.addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) Address.email = Column(String(50), key='_email') Address.user_id = Column('user_id', Integer, ForeignKey('users.id'), key='_user_id') @@ -312,14 +311,14 @@ class DeclarativeTest(DeclarativeTestBase): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", order_by=Address.email) @@ -341,14 +340,14 @@ class DeclarativeTest(DeclarativeTestBase): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", order_by=(Address.email, Address.id)) @@ -368,14 +367,14 @@ class DeclarativeTest(DeclarativeTestBase): class User(ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", backref="user") class Address(ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) @@ -478,14 +477,14 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) @@ -513,7 +512,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) User.a = Column('a', String(10)) @@ -535,14 +534,14 @@ class DeclarativeTest(DeclarativeTestBase): def test_column_properties(self): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) email = Column(String(50)) user_id = Column(Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) adr_count = sa.orm.column_property( sa.select([sa.func.count(Address.id)], Address.user_id == id). @@ -588,7 +587,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = sa.orm.deferred(Column(String(50))) Base.metadata.create_all() @@ -607,7 +606,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) _name = Column('name', String(50)) def _set_name(self, name): self._name = "SOMENAME " + name @@ -636,7 +635,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) _name = Column('name', String(50)) name = sa.orm.synonym('_name', comparator_factory=CustomCompare) @@ -652,7 +651,7 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) _name = Column('name', String(50)) def _set_name(self, name): self._name = "SOMENAME " + name @@ -674,14 +673,14 @@ class DeclarativeTest(DeclarativeTestBase): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey(User.id)) @@ -711,14 +710,14 @@ class DeclarativeTest(DeclarativeTestBase): class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) addresses = relation("Address", backref="user", primaryjoin=id == Address.user_id) @@ -763,7 +762,7 @@ class DeclarativeTest(DeclarativeTestBase): def test_with_explicit_autoloaded(self): meta = MetaData(testing.db) t1 = Table('t1', meta, - Column('id', String(50), primary_key=True), + Column('id', String(50), primary_key=True, test_needs_autoincrement=True), Column('data', String(50))) meta.create_all() try: @@ -779,6 +778,70 @@ class DeclarativeTest(DeclarativeTestBase): finally: meta.drop_all() + def test_synonym_for(self): + class User(Base, ComparableEntity): + __tablename__ = 'users' + + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) + name = Column('name', String(50)) + + @decl.synonym_for('name') + @property + def namesyn(self): + return self.name + + Base.metadata.create_all() + + sess = create_session() + u1 = User(name='someuser') + eq_(u1.name, "someuser") + eq_(u1.namesyn, 'someuser') + sess.add(u1) + sess.flush() + + rt = sess.query(User).filter(User.namesyn == 'someuser').one() + eq_(rt, u1) + + def test_comparable_using(self): + class NameComparator(sa.orm.PropComparator): + @property + def upperself(self): + cls = self.prop.parent.class_ + col = getattr(cls, 'name') + return sa.func.upper(col) + + def operate(self, op, other, **kw): + return op(self.upperself, other, **kw) + + class User(Base, ComparableEntity): + __tablename__ = 'users' + + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) + name = Column('name', String(50)) + + @decl.comparable_using(NameComparator) + @property + def uc_name(self): + return self.name is not None and self.name.upper() or None + + Base.metadata.create_all() + + sess = create_session() + u1 = User(name='someuser') + eq_(u1.name, "someuser", u1.name) + eq_(u1.uc_name, 'SOMEUSER', u1.uc_name) + sess.add(u1) + sess.flush() + sess.expunge_all() + + rt = sess.query(User).filter(User.uc_name == 'SOMEUSER').one() + eq_(rt, u1) + sess.expunge_all() + + rt = sess.query(User).filter(User.uc_name.startswith('SOMEUSE')).one() + eq_(rt, u1) + + class DeclarativeInheritanceTest(DeclarativeTestBase): def test_custom_join_condition(self): class Foo(Base): @@ -797,13 +860,13 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): def test_joined(self): class Company(Base, ComparableEntity): __tablename__ = 'companies' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) employees = relation("Person") class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) company_id = Column('company_id', Integer, ForeignKey('companies.id')) name = Column('name', String(50)) @@ -911,13 +974,13 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): class Company(Base, ComparableEntity): __tablename__ = 'companies' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) employees = relation("Person") class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) company_id = Column('company_id', Integer, ForeignKey('companies.id')) name = Column('name', String(50)) @@ -967,13 +1030,13 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): class Company(Base, ComparableEntity): __tablename__ = 'companies' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) employees = relation("Person") class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) company_id = Column(Integer, ForeignKey('companies.id')) name = Column(String(50)) @@ -1037,13 +1100,13 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): def test_joined_from_single(self): class Company(Base, ComparableEntity): __tablename__ = 'companies' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) name = Column('name', String(50)) employees = relation("Person") class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) company_id = Column(Integer, ForeignKey('companies.id')) name = Column(String(50)) discriminator = Column('type', String(50)) @@ -1100,7 +1163,7 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): def test_add_deferred(self): class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column('id', Integer, primary_key=True) + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) Person.name = deferred(Column(String(10))) @@ -1117,6 +1180,8 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): Person(name='ratbert') ] ) + sess.expunge_all() + person = sess.query(Person).filter(Person.name == 'ratbert').one() assert 'name' not in person.__dict__ @@ -1127,7 +1192,7 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): class Person(Base, ComparableEntity): __tablename__ = 'people' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = Column(String(50)) discriminator = Column('type', String(50)) __mapper_args__ = {'polymorphic_on':discriminator} @@ -1139,7 +1204,7 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): class Language(Base, ComparableEntity): __tablename__ = 'languages' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = Column(String(50)) assert not hasattr(Person, 'primary_language_id') @@ -1236,12 +1301,12 @@ class DeclarativeInheritanceTest(DeclarativeTestBase): def test_concrete(self): engineers = Table('engineers', Base.metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('name', String(50)), Column('primary_language', String(50)) ) managers = Table('managers', Base.metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('name', String(50)), Column('golf_swing', String(50)) ) @@ -1293,12 +1358,12 @@ def _produce_test(inline, stringbased): class User(Base, ComparableEntity): __tablename__ = 'users' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) name = Column(String(50)) class Address(Base, ComparableEntity): __tablename__ = 'addresses' - id = Column(Integer, primary_key=True) + id = Column(Integer, primary_key=True, test_needs_autoincrement=True) email = Column(String(50)) user_id = Column(Integer, ForeignKey('users.id')) if inline: @@ -1363,16 +1428,16 @@ class DeclarativeReflectionTest(testing.TestBase): reflection_metadata = MetaData(testing.db) Table('users', reflection_metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('name', String(50)), test_needs_fk=True) Table('addresses', reflection_metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('email', String(50)), Column('user_id', Integer, ForeignKey('users.id')), test_needs_fk=True) Table('imhandles', reflection_metadata, - Column('id', Integer, primary_key=True), + Column('id', Integer, primary_key=True, test_needs_autoincrement=True), Column('user_id', Integer), Column('network', String(50)), Column('handle', String(50)), @@ -1398,12 +1463,17 @@ class DeclarativeReflectionTest(testing.TestBase): class User(Base, ComparableEntity): __tablename__ = 'users' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) + u1 = User(name='u1', addresses=[ Address(email='one'), Address(email='two'), @@ -1428,12 +1498,16 @@ class DeclarativeReflectionTest(testing.TestBase): class User(Base, ComparableEntity): __tablename__ = 'users' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) nom = Column('name', String(50), key='nom') addresses = relation("Address", backref="user") class Address(Base, ComparableEntity): __tablename__ = 'addresses' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) u1 = User(nom='u1', addresses=[ Address(email='one'), @@ -1461,12 +1535,16 @@ class DeclarativeReflectionTest(testing.TestBase): class IMHandle(Base, ComparableEntity): __tablename__ = 'imhandles' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) user_id = Column('user_id', Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' __autoload__ = True + if testing.against('oracle', 'firebird'): + id = Column('id', Integer, primary_key=True, test_needs_autoincrement=True) handles = relation("IMHandle", backref="user") u1 = User(name='u1', handles=[ @@ -1487,69 +1565,3 @@ class DeclarativeReflectionTest(testing.TestBase): eq_(a1, IMHandle(network='lol', handle='zomg')) eq_(a1.user, User(name='u1')) - def test_synonym_for(self): - class User(Base, ComparableEntity): - __tablename__ = 'users' - - id = Column('id', Integer, primary_key=True) - name = Column('name', String(50)) - - @decl.synonym_for('name') - @property - def namesyn(self): - return self.name - - Base.metadata.create_all() - - sess = create_session() - u1 = User(name='someuser') - eq_(u1.name, "someuser") - eq_(u1.namesyn, 'someuser') - sess.add(u1) - sess.flush() - - rt = sess.query(User).filter(User.namesyn == 'someuser').one() - eq_(rt, u1) - - def test_comparable_using(self): - class NameComparator(sa.orm.PropComparator): - @property - def upperself(self): - cls = self.prop.parent.class_ - col = getattr(cls, 'name') - return sa.func.upper(col) - - def operate(self, op, other, **kw): - return op(self.upperself, other, **kw) - - class User(Base, ComparableEntity): - __tablename__ = 'users' - - id = Column('id', Integer, primary_key=True) - name = Column('name', String(50)) - - @decl.comparable_using(NameComparator) - @property - def uc_name(self): - return self.name is not None and self.name.upper() or None - - Base.metadata.create_all() - - sess = create_session() - u1 = User(name='someuser') - eq_(u1.name, "someuser", u1.name) - eq_(u1.uc_name, 'SOMEUSER', u1.uc_name) - sess.add(u1) - sess.flush() - sess.expunge_all() - - rt = sess.query(User).filter(User.uc_name == 'SOMEUSER').one() - eq_(rt, u1) - sess.expunge_all() - - rt = sess.query(User).filter(User.uc_name.startswith('SOMEUSE')).one() - eq_(rt, u1) - - -if __name__ == '__main__': - testing.main() diff --git a/test/ext/test_serializer.py b/test/ext/test_serializer.py index b8a8e3fef..c400797b0 100644 --- a/test/ext/test_serializer.py +++ b/test/ext/test_serializer.py @@ -96,8 +96,6 @@ class SerializeTest(MappedTest): [(7, u'jack'), (8, u'ed'), (8, u'ed'), (8, u'ed'), (9, u'fred')] ) - # fails due to pure Python pickle bug: http://bugs.python.org/issue998998 - @testing.fails_if(lambda: util.py3k) def test_query(self): q = Session.query(User).filter(User.name=='ed').options(eagerload(User.addresses)) eq_(q.all(), [User(name='ed', addresses=[Address(id=2), Address(id=3), Address(id=4)])]) |
