Files

41 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Tests\Chatbot\Search;
use App\Chatbot\Search\NameQuery;
use PHPUnit\Framework\TestCase;
class NameQueryTest extends TestCase
{
public function testTokensAreFoldedUniqueAndWithoutStopwords(): void
{
self::assertSame(['hotel', 'chamois', 'or', 'val', 'chaviere'], NameQuery::tokens('Das Hotel "Chamois d\'Or" in Val Chavière, Hotel!'));
self::assertSame(['chalet', '2100', '3'], NameQuery::tokens('Chalet 2100 (3*)'));
self::assertSame(['waldschlossli', 'grosse'], NameQuery::tokens('WALDSCHLÖSSLI Größe'));
self::assertSame([], NameQuery::tokens('Was ist das?'));
}
public function testWithinNeedsEveryQueryWordToBeginAWordOfTheName(): void
{
$name = NameQuery::tokens('3* Hotel Les Arolles (inkl. VP)');
self::assertTrue(NameQuery::within(NameQuery::tokens('arolles'), $name));
self::assertTrue(NameQuery::within(NameQuery::tokens('Hotel Aroll'), $name));
self::assertFalse(NameQuery::within(NameQuery::tokens('Sportclub Arolles'), $name));
self::assertFalse(NameQuery::within(NameQuery::tokens('rolles'), $name));
self::assertFalse(NameQuery::within([], $name));
}
public function testContainsNeedsTheWholeNameInTheQuery(): void
{
$query = NameQuery::tokens('Hotel Chamois d\'Or in Val Thorens');
self::assertTrue(NameQuery::contains($query, NameQuery::tokens('Chamois d\'Or')));
self::assertTrue(NameQuery::contains($query, NameQuery::tokens('Val Thorens')));
self::assertFalse(NameQuery::contains($query, NameQuery::tokens('Chalets Chamois')));
self::assertFalse(NameQuery::contains($query, []));
}
}