diff --git a/test/AbstractConnectionTest.php b/test/AbstractConnectionTest.php index b860310..9fd2671 100644 --- a/test/AbstractConnectionTest.php +++ b/test/AbstractConnectionTest.php @@ -11,6 +11,7 @@ use Amp\Sql\SqlException; use Revolt\EventLoop; use function Amp\async; +use function Amp\delay; abstract class AbstractConnectionTest extends AbstractLinkTest { @@ -110,4 +111,35 @@ public function testQueryAfterErroredQuery() $this->assertSame(1, $result->getRowCount()); } + + public function testTransactionsCallbacksOnCommit(): void + { + $transaction = $this->executor->beginTransaction(); + $transaction->onCommit($this->createCallback(1)); + $transaction->onRollback($this->createCallback(0)); + $transaction->onClose($this->createCallback(1)); + + $transaction->commit(); + } + + public function testTransactionsCallbacksOnRollback(): void + { + $transaction = $this->executor->beginTransaction(); + $transaction->onCommit($this->createCallback(0)); + $transaction->onRollback($this->createCallback(1)); + $transaction->onClose($this->createCallback(1)); + + $transaction->rollback(); + } + + public function testTransactionsCallbacksOnDestruct(): void + { + $transaction = $this->executor->beginTransaction(); + $transaction->onCommit($this->createCallback(0)); + $transaction->onRollback($this->createCallback(1)); + $transaction->onClose($this->createCallback(1)); + + unset($transaction); + delay(0.1); // Destructor is async, so give control to the loop to invoke callbacks. + } }