packages/ztd-query-sqlite/tests/Unit/Rewrite/FullText/FullTextColumnsTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\FullText;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\Sqlite\Rewrite\FullText\FullTextColumns;
10
11#[CoversClass(FullTextColumns::class)]
12final class FullTextColumnsTest extends TestCase
13{
14    public function testTableColumnsMatchesCaseAndRejectsViews(): void
15    {
16        $columns = new FullTextColumns();
17        self::assertSame(['title', 'body'], $columns->tableColumns('DOCS', ['docs' => ['columns' => ['title', 'body']]]));
18        self::assertNull($columns->tableColumns('docs', ['docs' => ['viewSql' => 'SELECT 1']]));
19        self::assertNull($columns->tableColumns('missing', ['docs' => ['columns' => ['body']]]));
20    }
21
22    public function testMatchingColumnRequiresAnUnambiguousColumn(): void
23    {
24        $columns = new FullTextColumns();
25        self::assertSame(['Body'], $columns->matchingColumn('body', ['docs' => ['columns' => ['title', 'Body']], 'v' => ['viewSql' => 'SELECT 1']]));
26        self::assertNull($columns->matchingColumn('body', ['first' => ['columns' => ['body']], 'second' => ['columns' => ['body']]]));
27        self::assertNull($columns->matchingColumn('missing', ['docs' => ['columns' => ['body']]]));
28    }
29
30}
31