X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=tests%2Fdbtest_session.py;fp=tests%2Fdbtest_session.py;h=72c2aff63faa1a6377023faf763290b08933f1fc;hb=8c491e536146ef00491001c68d076830ce963ea8;hp=7c378ce98cdc45ed7dbc5b35b45ec2e9edc81845;hpb=914fd407cb00bd3e44a8736ec7035fd813c1f3f6;p=dak.git diff --git a/tests/dbtest_session.py b/tests/dbtest_session.py index 7c378ce9..72c2aff6 100755 --- a/tests/dbtest_session.py +++ b/tests/dbtest_session.py @@ -2,9 +2,8 @@ from db_test import DBDakTestCase -from daklib.dbconn import Uid +from daklib.dbconn import DBConn, Uid -from sqlalchemy.orm import object_session from sqlalchemy.exc import InvalidRequestError import time @@ -93,7 +92,6 @@ class SessionTestCase(DBDakTestCase): uid = Uid(uid = 'foobar') self.session.add(uid) self.assertTrue(uid in self.session) - self.assertEqual(self.session, object_session(uid)) self.session.expunge(uid) self.assertTrue(uid not in self.session) # test close() @@ -138,6 +136,39 @@ class SessionTestCase(DBDakTestCase): self.session.rollback() self.assertRaises(InvalidRequestError, self.refresh) + def test_session(self): + ''' + Tests the ORMObject.session() method. + ''' + + uid = Uid(uid = 'foobar') + self.session.add(uid) + self.assertEqual(self.session, uid.session()) + + def test_clone(self): + ''' + Tests the ORMObject.clone() method. + ''' + + uid1 = Uid(uid = 'foobar') + # no session yet + self.assertRaises(RuntimeError, uid1.clone) + self.session.add(uid1) + # object not persistent yet + self.assertRaises(RuntimeError, uid1.clone) + self.session.commit() + # test without session parameter + uid2 = uid1.clone() + self.assertTrue(uid1 is not uid2) + self.assertEqual(uid1.uid, uid2.uid) + self.assertTrue(uid2 not in uid1.session()) + self.assertTrue(uid1 not in uid2.session()) + # test with explicit session parameter + new_session = DBConn().session() + uid3 = uid1.clone(session = new_session) + self.assertEqual(uid1.uid, uid3.uid) + self.assertTrue(uid3 in new_session) + def classes_to_clean(self): # We need to clean all Uid objects in case some test fails. return (Uid,)