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