2 // This file is part of Moodle - http://moodle.org/
4 // Moodle is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
9 // Moodle is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
14 // You should have received a copy of the GNU General Public License
15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
18 * External function unit tests.
20 * @package core_search
21 * @copyright 2017 The Open University
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
25 namespace core_search
;
28 * External function unit tests.
30 * @package core_search
31 * @copyright 2017 The Open University
32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
34 class external_test
extends \advanced_testcase
{
36 public function setUp(): void
{
37 $this->resetAfterTest();
41 * Checks the get_relevant_users function used when selecting users in search filter.
43 public function test_get_relevant_users() {
44 // Set up two users to search for and one to do the searching.
45 $generator = $this->getDataGenerator();
46 $student1 = $generator->create_user(['firstname' => 'Amelia', 'lastname' => 'Aardvark']);
47 $student2 = $generator->create_user(['firstname' => 'Amelia', 'lastname' => 'Beetle']);
48 $student3 = $generator->create_user(['firstname' => 'Zebedee', 'lastname' => 'Boing']);
49 $course = $generator->create_course();
50 $generator->enrol_user($student1->id
, $course->id
, 'student');
51 $generator->enrol_user($student2->id
, $course->id
, 'student');
52 $generator->enrol_user($student3->id
, $course->id
, 'student');
54 // As student 3, search for the other two.
55 $this->setUser($student3);
56 $result = external
::clean_returnvalue(
57 external
::get_relevant_users_returns(),
58 external
::get_relevant_users('Amelia', 0)
61 // Check we got the two expected users back.
65 ], array_column($result, 'id'));
67 // Check that the result contains all the expected fields.
68 $this->assertEquals($student1->id
, $result[0]['id']);
69 $this->assertEquals('Amelia Aardvark', $result[0]['fullname']);
70 $this->assertStringContainsString('/u/f2', $result[0]['profileimageurlsmall']);
72 // Check we aren't leaking information about user email address (for instance).
73 $this->assertArrayNotHasKey('email', $result[0]);
75 // Note: We are not checking search permissions, search by different fields, etc. as these
76 // are covered by the core_user::search unit test.