From: Mike Bayer Date: Fri, 14 Oct 2005 04:42:34 +0000 (+0000) Subject: (no commit message) X-Git-Tag: rel_0_1_0~554 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=015c337d8e59d3f7278edb9a3d1cb977bf0812b5;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git --- diff --git a/test/objectstore.py b/test/objectstore.py index 0548fe2fae..6d574b9049 100644 --- a/test/objectstore.py +++ b/test/objectstore.py @@ -46,6 +46,8 @@ class SaveTest(AssertMixin): orderitems.delete().execute() users.delete().execute() addresses.delete().execute() + itemkeywords.delete().execute() + db.echo = e def testbasic(self): @@ -289,11 +291,44 @@ UPDATE email_addresses SET user_id=:user_id, email_address=:email_address WHERE a2.email_address = 'somethingnew@foo.com' objectstore.uow().commit() + addresstable = addresses.select(addresses.c.address_id == addressid).execute().fetchall() self.assert_(addresstable[0].row == (addressid, userid, 'somethingnew@foo.com')) self.assert_(u.user_id == userid and a2.address_id == addressid) + def testchildmanipulations(self): + """digs deeper into modifying the child items of an object to insure the correct + updates take place""" + m = mapper(User, users, properties = dict( + addresses = relation(Address, addresses, lazy = True) + )) + u1 = User() + u1.user_name = 'user1' + u1.addresses = [] + a1 = Address() + a1.email_address = 'emailaddress1' + u1.addresses.append(a1) + u2 = User() + u2.user_name = 'user2' + u2.addresses = [] + a2 = Address() + a2.email_address = 'emailaddress2' + u2.addresses.append(a2) + + a3 = Address() + a3.email_address = 'emailaddress3' + + objectstore.commit() + + self.echo("\n\n\n") + # modify user2 directly, append an address to user1. + # upon commit, user2 should be updated, user1 should not + u2.user_name = 'user2modified' + u1.addresses.append(a3) + del u1.addresses[0] + objectstore.commit() + def _testalias(self): """tests that an alias of a table can be used in a mapper. the mapper has to locate the original table and columns to keep it all straight.""" @@ -334,6 +369,7 @@ UPDATE email_addresses SET user_id=:user_id, email_address=:email_address WHERE def testmanytomany(self): items = orderitems + items.select().execute() m = mapper(Item, items, properties = dict( keywords = relation(Keyword, keywords, itemkeywords, lazy = False), )) @@ -370,6 +406,7 @@ UPDATE email_addresses SET user_id=:user_id, email_address=:email_address WHERE item.keywords.append(k) objectstore.uow().commit() + l = m.select(items.c.item_name.in_(*[e['item_name'] for e in data[1:]]), order_by=[items.c.item_name, keywords.c.name]) self.assert_result(l, *data)