Update of /cvsroot/sqlobject/SQLObject/tests
In directory sc8-pr-cvs1:/tmp/cvs-serv25249/tests
Modified Files:
SQLObjectTest.py test.py
Log Message:
More dynamicism -- add columns and joins at runtime, including
changing the database schema to match (MySQL only).
Also have default ordering.
Index: SQLObjectTest.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/tests/SQLObjectTest.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** SQLObjectTest.py 2 Mar 2003 23:11:37 -0000 1.1
--- SQLObjectTest.py 31 Mar 2003 02:00:58 -0000 1.2
***************
*** 16,25 ****
--- 16,35 ----
def setUp(self):
unittest.TestCase.setUp(self)
+ #__connection__.debug = self.debugSQL
for c in self.classes:
if hasattr(c, 'drop'):
__connection__.query(c.drop)
+ else:
+ c.dropTable(ifExists=True)
if hasattr(c, 'create'):
__connection__.query(c.create)
+ else:
+ c.createTable(ifExists=True)
+ #__connection__.debug = 0
+ self.inserts()
__connection__.debug = self.debugSQL
+
+ def inserts(self):
+ pass
def tearDown(self):
Index: test.py
===================================================================
RCS file: /cvsroot/sqlobject/SQLObject/tests/test.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** test.py 2 Mar 2003 23:11:38 -0000 1.1
--- test.py 31 Mar 2003 02:00:58 -0000 1.2
***************
*** 27,32 ****
classes = [Counter]
! def setUp(self):
! SQLObjectTest.setUp(self)
for i in range(100):
Counter.new(number=i)
--- 27,31 ----
classes = [Counter]
! def inserts(self):
for i in range(100):
Counter.new(number=i)
***************
*** 77,82 ****
classes = [Counter2]
! def setUp(self):
! SQLObjectTest.setUp(self)
for i in range(10):
for j in range(10):
--- 76,80 ----
classes = [Counter2]
! def inserts(self):
for i in range(10):
for j in range(10):
***************
*** 86,89 ****
--- 84,136 ----
self.assertEquals([(c.n1, c.n2) for c in counters], value)
+ ########################################
+ ## Dynamic column tests
+ ########################################
+
+ class Person(SQLObject):
+
+ _columns = [StringCol('name', length=100)]
+ _defaultOrder = 'name'
+
+ class Phone(SQLObject):
+
+ _columns = [StringCol('phone', length=12)]
+ _defaultOrder = 'phone'
+
+ class PeopleTest(SQLObjectTest):
+
+ classes = [Person, Phone]
+
+ def inserts(self):
+ for n in ['jane', 'tim', 'bob', 'jake']:
+ Person.new(name=n)
+ for p in ['555-555-5555', '555-394-2930',
+ '444-382-4854']:
+ Phone.new(phone=p)
+
+ def testDefaultOrder(self):
+ self.assertEqual(list(Person.select('all')),
+ list(Person.select('all', orderBy=Person._defaultOrder)))
+
+ def testDynamicColumn(self):
+ nickname = StringCol('nickname', length=10)
+ Person.addColumn(nickname, changeSchema=True)
+ n = Person.new(name='robert', nickname='bob')
+ self.assertEqual([p.name for p in Person.select('all')],
+ ['bob', 'jake', 'jane', 'robert', 'tim'])
+
+ def testDynamicJoin(self):
+ col = KeyCol('personID', foreignKey='Person')
+ Phone.addColumn(col, changeSchema=True)
+ join = MultipleJoin('Phone')
+ Person.addJoin(join)
+ for phone in Phone.select('all'):
+ if phone.phone.startswith('555'):
+ phone.person = Person.selectBy(name='tim')[0]
+ else:
+ phone.person = Person.selectBy(name='bob')[0]
+ self.assertEqual([p.phone for p in Person.selectBy(name='tim')[0].phones],
+ ['555-555-5555', '555-394-2930'])
+
########################################
|