From: Mike Bayer Date: Sun, 28 Nov 2010 20:34:41 +0000 (-0500) Subject: combine test/engine/test_metadata.py and test/sql/test_columns.py into new X-Git-Tag: rel_0_7b1~224 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=71083b6977c064de69df844dccc145742890ef35;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git combine test/engine/test_metadata.py and test/sql/test_columns.py into new test/sql/test_metadata.py, [ticket:1970] --- diff --git a/test/sql/test_columns.py b/test/sql/test_columns.py deleted file mode 100644 index 95933b41b1..0000000000 --- a/test/sql/test_columns.py +++ /dev/null @@ -1,95 +0,0 @@ -from test.lib.testing import assert_raises, assert_raises_message -from sqlalchemy import * -from sqlalchemy import exc, sql -from test.lib import * -from sqlalchemy import Table, Column # don't use testlib's wrappers - - -class ColumnDefinitionTest(TestBase): - """Test Column() construction.""" - - # flesh this out with explicit coverage... - - def columns(self): - return [ Column(Integer), - Column('b', Integer), - Column(Integer), - Column('d', Integer), - Column(Integer, name='e'), - Column(type_=Integer), - Column(Integer()), - Column('h', Integer()), - Column(type_=Integer()) ] - - def test_basic(self): - c = self.columns() - - for i, v in ((0, 'a'), (2, 'c'), (5, 'f'), (6, 'g'), (8, 'i')): - c[i].name = v - c[i].key = v - del i, v - - tbl = Table('table', MetaData(), *c) - - for i, col in enumerate(tbl.c): - assert col.name == c[i].name - - def test_incomplete(self): - c = self.columns() - - assert_raises(exc.ArgumentError, Table, 't', MetaData(), *c) - - def test_incomplete_key(self): - c = Column(Integer) - assert c.name is None - assert c.key is None - - c.name = 'named' - t = Table('t', MetaData(), c) - - assert c.name == 'named' - assert c.name == c.key - - - def test_bogus(self): - assert_raises(exc.ArgumentError, Column, 'foo', name='bar') - assert_raises(exc.ArgumentError, Column, 'foo', Integer, - type_=Integer()) - - -class ColumnOptionsTest(TestBase): - - def test_default_generators(self): - g1, g2 = Sequence('foo_id_seq'), ColumnDefault('f5') - assert Column(String, default=g1).default is g1 - assert Column(String, onupdate=g1).onupdate is g1 - assert Column(String, default=g2).default is g2 - assert Column(String, onupdate=g2).onupdate is g2 - - def test_type_required(self): - assert_raises(exc.ArgumentError, Column) - assert_raises(exc.ArgumentError, Column, "foo") - assert_raises(exc.ArgumentError, Column, default="foo") - assert_raises(exc.ArgumentError, Column, Sequence("a")) - assert_raises(exc.ArgumentError, Column, "foo", default="foo") - assert_raises(exc.ArgumentError, Column, "foo", Sequence("a")) - Column(ForeignKey('bar.id')) - Column("foo", ForeignKey('bar.id')) - Column(ForeignKey('bar.id'), default="foo") - Column(ForeignKey('bar.id'), Sequence("a")) - Column("foo", ForeignKey('bar.id'), default="foo") - Column("foo", ForeignKey('bar.id'), Sequence("a")) - - def test_column_info(self): - - c1 = Column('foo', String, info={'x':'y'}) - c2 = Column('bar', String, info={}) - c3 = Column('bat', String) - assert c1.info == {'x':'y'} - assert c2.info == {} - assert c3.info == {} - - for c in (c1, c2, c3): - c.info['bar'] = 'zip' - assert c.info['bar'] == 'zip' - diff --git a/test/engine/test_metadata.py b/test/sql/test_metadata.py similarity index 86% rename from test/engine/test_metadata.py rename to test/sql/test_metadata.py index 6534f67bea..c5ef481542 100644 --- a/test/engine/test_metadata.py +++ b/test/sql/test_metadata.py @@ -482,4 +482,92 @@ class TableTest(TestBase, AssertsCompiledSQL): ) +class ColumnDefinitionTest(TestBase): + """Test Column() construction.""" + + # flesh this out with explicit coverage... + + def columns(self): + return [ Column(Integer), + Column('b', Integer), + Column(Integer), + Column('d', Integer), + Column(Integer, name='e'), + Column(type_=Integer), + Column(Integer()), + Column('h', Integer()), + Column(type_=Integer()) ] + + def test_basic(self): + c = self.columns() + + for i, v in ((0, 'a'), (2, 'c'), (5, 'f'), (6, 'g'), (8, 'i')): + c[i].name = v + c[i].key = v + del i, v + + tbl = Table('table', MetaData(), *c) + + for i, col in enumerate(tbl.c): + assert col.name == c[i].name + + def test_incomplete(self): + c = self.columns() + + assert_raises(exc.ArgumentError, Table, 't', MetaData(), *c) + + def test_incomplete_key(self): + c = Column(Integer) + assert c.name is None + assert c.key is None + + c.name = 'named' + t = Table('t', MetaData(), c) + + assert c.name == 'named' + assert c.name == c.key + + + def test_bogus(self): + assert_raises(exc.ArgumentError, Column, 'foo', name='bar') + assert_raises(exc.ArgumentError, Column, 'foo', Integer, + type_=Integer()) + + +class ColumnOptionsTest(TestBase): + + def test_default_generators(self): + g1, g2 = Sequence('foo_id_seq'), ColumnDefault('f5') + assert Column(String, default=g1).default is g1 + assert Column(String, onupdate=g1).onupdate is g1 + assert Column(String, default=g2).default is g2 + assert Column(String, onupdate=g2).onupdate is g2 + + def test_type_required(self): + assert_raises(exc.ArgumentError, Column) + assert_raises(exc.ArgumentError, Column, "foo") + assert_raises(exc.ArgumentError, Column, default="foo") + assert_raises(exc.ArgumentError, Column, Sequence("a")) + assert_raises(exc.ArgumentError, Column, "foo", default="foo") + assert_raises(exc.ArgumentError, Column, "foo", Sequence("a")) + Column(ForeignKey('bar.id')) + Column("foo", ForeignKey('bar.id')) + Column(ForeignKey('bar.id'), default="foo") + Column(ForeignKey('bar.id'), Sequence("a")) + Column("foo", ForeignKey('bar.id'), default="foo") + Column("foo", ForeignKey('bar.id'), Sequence("a")) + + def test_column_info(self): + + c1 = Column('foo', String, info={'x':'y'}) + c2 = Column('bar', String, info={}) + c3 = Column('bat', String) + assert c1.info == {'x':'y'} + assert c2.info == {} + assert c3.info == {} + + for c in (c1, c2, c3): + c.info['bar'] = 'zip' + assert c.info['bar'] == 'zip' + \ No newline at end of file