diff --git a/tests/ConnectionTest.php b/tests/ConnectionTest.php index 833b23f7f5..1cfcde1de1 100644 --- a/tests/ConnectionTest.php +++ b/tests/ConnectionTest.php @@ -32,6 +32,7 @@ use PHPUnit\Framework\TestCase; use Psr\Cache\CacheItemInterface; use Psr\Cache\CacheItemPoolInterface; +use RuntimeException; use stdClass; /** @requires extension pdo_mysql */ @@ -455,6 +456,35 @@ public function testCommitStartsTransactionInNoAutoCommitMode(): void self::assertTrue($conn->isTransactionActive()); } + public function testCoverBeginTransactionFailureAfterCommitInNoAutoCommitMode(): void + { + $driverConnectionMock = $this->createMock(DriverConnection::class); + $driverConnectionMock->expects(self::exactly(2)) + ->method('beginTransaction') + ->willReturnOnConsecutiveCalls( + true, + self::throwException(new RuntimeException()), + ); + + $driverMock = $this->createMock(Driver::class); + $driverMock->expects(self::any()) + ->method('connect') + ->willReturn( + $driverConnectionMock, + ); + $conn = new Connection([], $driverMock); + + $conn->setAutoCommit(false); + + $conn->connect(); + try { + $conn->commit(); + } catch (RuntimeException $e) { + } + + self::assertTrue($conn->isTransactionActive()); + } + /** @dataProvider resultProvider */ public function testCommitReturn(bool $expectedResult): void {