Thread: [SQL-CVS] SQLObject/tests test.py,1.3,1.4
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: <ian...@us...> - 2003-04-06 07:56:11
|
Update of /cvsroot/sqlobject/SQLObject/tests In directory sc8-pr-cvs1:/tmp/cvs-serv16742/tests Modified Files: test.py Log Message: Added a related join test Index: test.py =================================================================== RCS file: /cvsroot/sqlobject/SQLObject/tests/test.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** test.py 31 Mar 2003 05:51:28 -0000 1.3 --- test.py 6 Apr 2003 07:56:06 -0000 1.4 *************** *** 171,174 **** --- 171,220 ---- ######################################## + ## Joins + ######################################## + + class PersonJoiner(SQLObject): + + _columns = [StringCol('name', length=40, alternateID=True)] + _joins = [RelatedJoin('AddressJoiner')] + + class AddressJoiner(SQLObject): + + _columns = [StringCol('zip', length=5, alternateID=True)] + _joins = [RelatedJoin('PersonJoiner')] + + class JoinTest(SQLObjectTest): + + classes = [PersonJoiner, AddressJoiner] + + def inserts(self): + for n in ['bob', 'tim', 'jane', 'joe', 'fred', 'barb']: + PersonJoiner.new(name=n) + for z in ['11111', '22222', '33333', '44444']: + AddressJoiner.new(zip=z) + + def testJoin(self): + b = PersonJoiner.byName('bob') + self.assertEqual(b.addressJoiners, []) + z = AddressJoiner.byZip('11111') + b.addAddressJoiner(z) + self.assertZipsEqual(b.addressJoiners, ['11111']) + self.assertNamesEqual(z.personJoiners, ['bob']) + z2 = AddressJoiner.byZip('22222') + b.addAddressJoiner(z2) + self.assertZipsEqual(b.addressJoiners, ['11111', '22222']) + self.assertNamesEqual(z2.personJoiners, ['bob']) + b.removeAddressJoiner(z) + self.assertZipsEqual(b.addressJoiners, ['22222']) + self.assertNamesEqual(z.personJoiners, []) + + def assertZipsEqual(self, zips, dest): + self.assertEqual([a.zip for a in zips], dest) + + def assertNamesEqual(self, people, dest): + self.assertEqual([p.name for p in people], dest) + + + ######################################## ## Run from command-line: ######################################## |