packages/sql-catalog/tests/Unit/Core/Php/ParameterShapeTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Php;
6
7use PhpParser\Node\Scalar\String_;
8use PHPUnit\Framework\Attributes\CoversClass;
9use PHPUnit\Framework\Attributes\UsesClass;
10use PHPUnit\Framework\TestCase;
11use SqlCatalog\Core\Php\ParameterShape;
12use SqlCatalog\Core\Type\TypeShape;
13
14#[CoversClass(ParameterShape::class)]
15#[UsesClass(TypeShape::class)]
16final class ParameterShapeTest extends TestCase
17{
18 public function testKeepsWhatWasDeclared(): void
19 {
20 $default = new String_('users');
21 $shape = new ParameterShape('table', TypeShape::of(['string']), $default, true);
22 self::assertSame('table', $shape->name);
23 self::assertSame('string', $shape->type->display());
24 self::assertSame($default, $shape->default);
25 self::assertTrue($shape->variadic);
26 }
27
28 public function testDefaultsToNoDefaultAndNotVariadic(): void
29 {
30 $shape = new ParameterShape('id', TypeShape::of(['int']));
31 self::assertNull($shape->default);
32 self::assertFalse($shape->variadic);
33 }
34}
35