Commit 4a85566c authored by Tres Seaver's avatar Tres Seaver

Coverage for Transaction.register.

parent 0ef2f8d6
...@@ -234,7 +234,6 @@ class Transaction(object): ...@@ -234,7 +234,6 @@ class Transaction(object):
# be stored when the transaction commits. For other # be stored when the transaction commits. For other
# objects, the object implements the standard two-phase # objects, the object implements the standard two-phase
# commit protocol. # commit protocol.
manager = getattr(obj, "_p_jar", obj) manager = getattr(obj, "_p_jar", obj)
if manager is None: if manager is None:
raise ValueError("Register with no manager") raise ValueError("Register with no manager")
......
...@@ -290,6 +290,46 @@ class TransactionTests(unittest.TestCase): ...@@ -290,6 +290,46 @@ class TransactionTests(unittest.TestCase):
t._invalidate_all_savepoints() t._invalidate_all_savepoints()
self.assertEqual(list(t._savepoint2index), []) 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): def test_note(self):
t = self._makeOne() t = self._makeOne()
try: try:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment