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