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