packages/ztd-query-pdo-adapter/tests/Integration/Sqlite/SelectQualifiedTableTest.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 SelectQualifiedTableTest extends TestCase
19{
20    public function testMainQualifiedTableReadsShadowRows(): 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        $ztdPdo->exec("INSERT INTO users (id, name) VALUES (1, 'Alice')");
29
30        $statement = $ztdPdo->query('SELECT name FROM main.users WHERE id = 1');
31
32        self::assertNotFalse($statement);
33        self::assertSame([['name' => 'Alice']], $statement->fetchAll());
34    }
35}
36