SearchServiceTest.php: add basic testign for the SearchService

This commit is contained in:
Zankaria 2025-04-21 14:19:07 +02:00
parent 99de3f875e
commit 72f0eff37b

View file

@ -0,0 +1,64 @@
<?php
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework;
use Vichan\Data\Driver\{LogDriver, StderrLogDriver};
use Vichan\Data\UserPostQueries;
use Vichan\Service\SearchService;
class SearchServiceTest extends TestCase {
public function testBasicSearch(): void {
$srv = new SearchService(
$this->createMock(LogDriver::class),
$this->createMock(UserPostQueries::class),
null,
100,
250,
100,
);
$filters = $srv->parse("free world all large board:kino board:\"poly\" name:coolie maybe subject:\"subj\" flag:\"pirate\" id:76 thread:8 but not so much");
Framework\assertTrue($filters->body === [ 'free world all large', 'maybe', 'but not so much' ]);
Framework\assertTrue($filters->subject === 'subj');
Framework\assertTrue($filters->name === 'coolie');
Framework\assertTrue($filters->flag === 'pirate');
Framework\assertTrue($filters->id === 76);
Framework\assertTrue($filters->thread === 8);
}
public function testWeight() {
$user_queries = $this->createMock(UserPostQueries::class);
$user_queries->method('escapeSearchPosts')
->willReturnMap([
[ 'abcd', 'abcd' ],
[ 'abc', 'abc' ],
[ 'a*cd', 'a\\*cd' ],
[ 'a*c', 'a\\*c' ],
]);
$srv = new SearchService(
new StderrLogDriver('test', LogDriver::DEBUG),
$user_queries,
null,
100,
250,
100,
);
$f = $srv->parse('abcd');
$no_wildcards = $srv->reduceAndWeight($f)->weight;
$f = $srv->parse('abc*');
$end_wildcard = $srv->reduceAndWeight($f)->weight;
$f = $srv->parse('a*cd');
$middle_wildcard = $srv->reduceAndWeight($f)->weight;
$f = $srv->parse('a*c*');
$wildcards = $srv->reduceAndWeight($f)->weight;
Framework\assertTrue($no_wildcards < $end_wildcard);
Framework\assertTrue($end_wildcard < $middle_wildcard);
Framework\assertTrue($middle_wildcard < $wildcards);
}
}