malkusch\lock\mutex\TransactionalMutexTest::testExceptionRollsback PHP Метод

testExceptionRollsback() публичный Метод

Tests that an exception in the critical code causes a ROLLBACK.
    public function testExceptionRollsback()
    {
        $pdo = $this->buildMySqlPdo();
        $mutex = new TransactionalMutex($pdo);
        $pdo->exec("\n            CREATE TEMPORARY TABLE testExceptionRollsback(\n                id int primary key\n            ) engine=innodb\n        ");
        try {
            $mutex->synchronized(function () use($pdo) {
                $pdo->exec("INSERT INTO testExceptionRollsback VALUES(1)");
                throw new \DomainException();
            });
        } catch (\DomainException $e) {
            // expected
        }
        $count = $pdo->query("SELECT count(*) FROM testExceptionRollsback")->fetchColumn();
        $this->assertEquals(0, $count);
    }