packages/ztd-query-core/tests/Unit/Platform/SessionFactoryTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Platform;
6
7use PHPUnit\Framework\Attributes\CoversNothing;
8use PHPUnit\Framework\TestCase;
9use Tests\Fake\FakeConnection;
10use Tests\Fake\FakeSchemaReflector;
11use Tests\Fake\FakeSessionFactory;
12use ZtdQuery\Config\ZtdConfig;
13
14#[CoversNothing]
15final class SessionFactoryTest extends TestCase
16{
17 public function testCreateAnswersASessionThatIsAlreadyOn(): void
18 {
19 $session = (new FakeSessionFactory())->create(new FakeConnection([]), ZtdConfig::default());
20
21 self::assertTrue($session->isEnabled());
22 }
23
24 public function testCreateReadsEveryTableTheDatabaseAlreadyHas(): void
25 {
26 $factory = new FakeSessionFactory(new FakeSchemaReflector([
27 'users' => 'CREATE TABLE users (id INT NOT NULL PRIMARY KEY)',
28 ]));
29
30 $session = $factory->create(new FakeConnection([]), ZtdConfig::default());
31
32 self::assertNotNull($session->tableDefinition('users'));
33 }
34
35 public function testCreateAnswersASessionThatHasSimulatedNothingYet(): void
36 {
37 $factory = new FakeSessionFactory(new FakeSchemaReflector([
38 'users' => 'CREATE TABLE users (id INT NOT NULL PRIMARY KEY)',
39 ]));
40
41 $session = $factory->create(new FakeConnection([]), ZtdConfig::default());
42
43 self::assertFalse($session->lastInsertId());
44 }
45}
46