Example #1
0
 def test_begin_exception_already_rollbacked():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     with pytest.raises(WeAreDoomedException):
         with trm.begin():
             trm.rollback()
             raise Exception("I KILL YOU !")
Example #2
0
 def test_rollback():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock()
     trh2 = TransactionHandlerMock()
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with trm.begin():
         trm.rollback()
     assert trh1.rollback.called
     assert trh2.rollback.called
Example #3
0
 def test_mutex_handler_rollback_last():
     trm = TransactionsManager()
     rollbacks = []
     mh = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("A")})
     th = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("B")})
     trm.set_mutex_handler(mh)
     trm.add_transaction_handler(th)
     with trm.begin():
         trm.rollback()
         assert rollbacks == ["B", "A"]
Example #4
0
 def test_rollback_exceptions():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception)})
     trh2 = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception)})
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     with pytest.raises(Exception):
         with trm.begin():
             trm.rollback()
     assert trh1.rollback.called
     assert trh2.rollback.called
     assert len(trm.exceptions_encountered) == 2
Example #5
0
 def test_mutex_handler_rollback_exception():
     trm = TransactionsManager()
     rollbacks = []
     th = TransactionHandlerMock(
         {"rollback": lambda: rollbacks.append("A")})
     trm.add_transaction_handler(th)
     mh = TransactionHandlerMock(
         {"rollback": MagicMock(side_effect=Exception())})
     trm.set_mutex_handler(mh)
     try:
         with trm.begin():
             trm.rollback()
     except Exception:
         pass
     assert rollbacks == ["A"]
     assert mh.rollback.called
Example #6
0
 def test_commit_prepare_failed():
     trm = TransactionsManager()
     trh1 = TransactionHandlerMock({
         "can_prepare_commit":
         MagicMock(return_value=True),
         "prepare_commit":
         MagicMock(return_value=False),
     })
     trh2 = TransactionHandlerMock(
         {"can_prepare_commit": MagicMock(return_value=False)})
     trm.add_transaction_handler(trh1)
     trm.add_transaction_handler(trh2)
     trm.rollback = MagicMock()
     with trm.begin():
         trm.commit()
     assert trh1.can_prepare_commit.called
     assert trh2.can_prepare_commit.called
     assert trh1.prepare_commit.called
     assert not trh1.commit.called
     assert not trh2.commit.called
     assert trm.rollback.called
Example #7
0
 def test_rollback_not_begun():
     trm = TransactionsManager()
     with pytest.raises(TransactionException):
         trm.rollback()