packages/ztd-query-pdo-adapter/tests/Integration/Sqlite/DiagnosticStatementTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Integration\Sqlite;
6
7use PDO;
8use PHPUnit\Framework\Attributes\CoversNothing;
9use PHPUnit\Framework\Attributes\Large;
10use PHPUnit\Framework\TestCase;
11use ZtdQuery\Adapter\Pdo\ZtdPdo;
12
13/**
14 * @requires extension pdo_sqlite
15 */
16#[CoversNothing]
17#[Large]
18final class DiagnosticStatementTest extends TestCase
19{
20    public function testExplainQueryPlanExecutesAgainstPhysicalDatabase(): void
21    {
22        $rawPdo = new PDO('sqlite::memory:', null, null, [
23            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
24            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
25        ]);
26        $rawPdo->exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL)');
27        $ztdPdo = ZtdPdo::fromPdo($rawPdo);
28
29        $statement = $ztdPdo->query('EXPLAIN QUERY PLAN SELECT * FROM users WHERE id = 1');
30
31        self::assertNotFalse($statement);
32        self::assertNotSame([], $statement->fetchAll());
33    }
34}
35