[SQL-CVS] SQLObject/tests SQLObjectTest.py,1.1,1.2 test.py,1.1,1.2
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <ian...@us...> - 2003-03-31 02:01:01
|
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']) + ######################################## |