packages/ztd-query-pdo-adapter/tests/Integration/SqliteDriverDetectionTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Integration;
6
7use PDO;
8use PHPUnit\Framework\Attributes\CoversNothing;
9use PHPUnit\Framework\Attributes\Large;
10use PHPUnit\Framework\TestCase;
11use ZtdQuery\Adapter\Pdo\ZtdPdo;
12use ZtdQuery\Config\ZtdConfig;
13use ZtdQuery\Platform\Sqlite\SqliteSessionFactory;
14
15/**
16 * @requires extension pdo_sqlite
17 */
18#[CoversNothing]
19#[Large]
20final class SqliteDriverDetectionTest extends TestCase
21{
22 public function testAutoDetectionCreatesSqliteSession(): void
23 {
24 $pdo = new PDO('sqlite::memory:', null, null, [
25 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
26 ]);
27
28 $ztdPdo = ZtdPdo::fromPdo($pdo);
29
30 self::assertTrue($ztdPdo->isZtdEnabled());
31 }
32
33 public function testExplicitSessionFactoryInjection(): void
34 {
35 $pdo = new PDO('sqlite::memory:', null, null, [
36 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
37 ]);
38
39 $factory = new SqliteSessionFactory();
40 $ztdPdo = ZtdPdo::fromPdo($pdo, null, $factory);
41
42 self::assertTrue($ztdPdo->isZtdEnabled());
43 }
44
45 public function testAConnectionOpenedByDsnReadsItsPlatformOffTheDriver(): void
46 {
47 $ztdPdo = new ZtdPdo('sqlite::memory:', null, null, [
48 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
49 ]);
50
51 self::assertTrue($ztdPdo->isZtdEnabled());
52 }
53
54 public function testAConnectionOpenedByDsnUsesThePlatformItIsGiven(): void
55 {
56 $factory = new SqliteSessionFactory();
57 $ztdPdo = new ZtdPdo('sqlite::memory:', null, null, [
58 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
59 ], null, $factory);
60
61 self::assertTrue($ztdPdo->isZtdEnabled());
62 }
63
64 public function testCustomConfigPassedToSession(): void
65 {
66 $config = ZtdConfig::default();
67 $pdo = new PDO('sqlite::memory:', null, null, [
68 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
69 ]);
70
71 $ztdPdo = ZtdPdo::fromPdo($pdo, $config);
72
73 self::assertTrue($ztdPdo->isZtdEnabled());
74 }
75}
76