1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6namespace Tests\Libraries\Search;
7
8use App\Libraries\Search\UserSearch;
9use App\Libraries\Search\UserSearchParams;
10use App\Models\User;
11use Tests\TestCase;
12
13class UserSearchTest extends TestCase
14{
15 public function testQueryString()
16 {
17 $searchUser1 = User::factory()->create(['username' => 'hello']);
18 $searchUser1->esIndexDocument();
19 $searchUser2 = User::factory()->create(['username' => 'hello world']);
20 $searchUser2->esIndexDocument();
21 $user3 = User::factory()->create(['username' => 'aaaaaa']);
22 $user3->esIndexDocument();
23 (new UserSearch())->refresh();
24
25 $params = new UserSearchParams();
26 $params->queryString = $searchUser1->username;
27 $search = new UserSearch($params);
28 $userIds = array_map('intval', $search->response()->ids());
29 sort($userIds);
30
31 $this->assertSame(2, count($userIds));
32 $this->assertSame($searchUser1->getKey(), $userIds[0]);
33 $this->assertSame($searchUser2->getKey(), $userIds[1]);
34 }
35
36 protected function setUp(): void
37 {
38 parent::setUp();
39
40 (new UserSearch())->deleteAll();
41 }
42}