[Checkins] SVN: transaction/branches/sphinx/ Coverage for Transaction.register.

Tres Seaver cvs-admin at zope.org
Tue Dec 18 00:16:07 UTC 2012


Log message for revision 128739:
  Coverage for Transaction.register.

Changed:
  _U  transaction/branches/sphinx/
  U   transaction/branches/sphinx/transaction/_transaction.py
  U   transaction/branches/sphinx/transaction/tests/test__transaction.py

-=-
Modified: transaction/branches/sphinx/transaction/_transaction.py
===================================================================
--- transaction/branches/sphinx/transaction/_transaction.py	2012-12-17 23:58:00 UTC (rev 128738)
+++ transaction/branches/sphinx/transaction/_transaction.py	2012-12-18 00:16:07 UTC (rev 128739)
@@ -234,7 +234,6 @@
         # be stored when the transaction commits.  For other
         # objects, the object implements the standard two-phase
         # commit protocol.
-
         manager = getattr(obj, "_p_jar", obj)
         if manager is None:
             raise ValueError("Register with no manager")

Modified: transaction/branches/sphinx/transaction/tests/test__transaction.py
===================================================================
--- transaction/branches/sphinx/transaction/tests/test__transaction.py	2012-12-17 23:58:00 UTC (rev 128738)
+++ transaction/branches/sphinx/transaction/tests/test__transaction.py	2012-12-18 00:16:07 UTC (rev 128739)
@@ -290,6 +290,46 @@
         t._invalidate_all_savepoints()
         self.assertEqual(list(t._savepoint2index), [])
 
+    def test_register_wo_jar(self):
+        class _Dummy(object):
+            _p_jar = None
+        t = self._makeOne()
+        self.assertRaises(ValueError, t.register, _Dummy())
+
+    def test_register_w_jar(self):
+        class _Manager(object):
+            pass
+        mgr = _Manager()
+        class _Dummy(object):
+            _p_jar = mgr
+        t = self._makeOne()
+        dummy = _Dummy()
+        t.register(dummy)
+        resources = list(t._resources)
+        self.assertEqual(len(resources), 1)
+        adapter = resources[0]
+        self.assertTrue(adapter.manager is mgr)
+        self.assertTrue(dummy in adapter.objects)
+        items = list(t._adapters.items())
+        self.assertEqual(len(items), 1)
+        self.assertTrue(items[0][0] is mgr)
+        self.assertTrue(items[0][1] is adapter)
+
+    def test_register_w_jar_already_adapted(self):
+        class _Adapter(object):
+            def __init__(self):
+                self.objects = []
+        class _Manager(object):
+            pass
+        mgr = _Manager()
+        class _Dummy(object):
+            _p_jar = mgr
+        t = self._makeOne()
+        t._adapters[mgr] = adapter = _Adapter()
+        dummy = _Dummy()
+        t.register(dummy)
+        self.assertTrue(dummy in adapter.objects)
+
     def test_note(self):
         t = self._makeOne()
         try:



More information about the checkins mailing list