packages/ztd-query-pdo-adapter/tests/Integration/Sqlite/DropTableTest.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 * @phpstan-type Row array<string, mixed>
17 */
18#[CoversNothing]
19#[Large]
20final class DropTableTest extends TestCase
21{
22 public function testDropTableRemovesFromRegistry(): void
23 {
24 $rawPdo = new PDO('sqlite::memory:', null, null, [
25 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
26 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
27 ]);
28
29 $rawPdo->exec('CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT NOT NULL)');
30 $rawPdo->exec("INSERT INTO users (id, name) VALUES (1, 'Alice')");
31
32 $ztdPdo = ZtdPdo::fromPdo($rawPdo);
33
34 $ztdPdo->exec("INSERT INTO users (id, name) VALUES (1, 'Alice')");
35
36 $stmt = $ztdPdo->query('SELECT * FROM users');
37 self::assertNotFalse($stmt);
38 /** @var list<Row> $rows */
39 $rows = $stmt->fetchAll();
40 self::assertCount(1, $rows);
41
42 $ztdPdo->exec('DROP TABLE users');
43
44 $stmt = $rawPdo->query('SELECT * FROM users');
45 self::assertNotFalse($stmt);
46 /** @var list<Row> $rawRows */
47 $rawRows = $stmt->fetchAll();
48 self::assertCount(1, $rawRows);
49 }
50
51 public function testDropTableIfExists(): void
52 {
53 $rawPdo = new PDO('sqlite::memory:', null, null, [
54 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
55 PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
56 ]);
57
58 $ztdPdo = ZtdPdo::fromPdo($rawPdo, null);
59
60 $ztdPdo->exec('DROP TABLE IF EXISTS users');
61 self::addToAssertionCount(1);
62 }
63}
64