packages/sql-catalog/tests/Unit/Core/Catalog/PlaceholderTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Catalog;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\Attributes\UsesClass;
9use PHPUnit\Framework\TestCase;
10use SqlCatalog\Core\Catalog\Placeholder;
11use SqlCatalog\Core\Catalog\ValueDomain;
12
13#[CoversClass(Placeholder::class)]
14#[UsesClass(ValueDomain::class)]
15final class PlaceholderTest extends TestCase
16{
17    public function testKeyIsTheNameOrThePosition(): void
18    {
19        self::assertSame('id', (new Placeholder(':id', 0, 'id', null))->key());
20        self::assertSame('2', (new Placeholder('?', 2, null, null))->key());
21    }
22
23    public function testWithValueKeepsEverythingElse(): void
24    {
25        $value = new ValueDomain('int', [1], true, []);
26        $bound = (new Placeholder(':id', 0, 'id', null))->withValue($value);
27        self::assertSame($value, $bound->value);
28        self::assertSame(':id', $bound->token);
29        self::assertSame(0, $bound->position);
30        self::assertSame('id', $bound->name);
31    }
32}
33