/** * Test search_contacts. */ public function test_search_contacts() { global $DB; $this->resetAfterTest(true); $course1 = $this->getDataGenerator()->create_course(); $course2 = $this->getDataGenerator()->create_course(); $user1 = new stdClass(); $user1->firstname = 'X'; $user1->lastname = 'X'; $user1 = $this->getDataGenerator()->create_user($user1); $this->getDataGenerator()->enrol_user($user1->id, $course1->id); $this->getDataGenerator()->enrol_user($user1->id, $course2->id); $user2 = new stdClass(); $user2->firstname = 'Eric'; $user2->lastname = 'Cartman'; $user2 = self::getDataGenerator()->create_user($user2); $user3 = new stdClass(); $user3->firstname = 'Stan'; $user3->lastname = 'Marsh'; $user3 = self::getDataGenerator()->create_user($user3); self::getDataGenerator()->enrol_user($user3->id, $course1->id); $user4 = new stdClass(); $user4->firstname = 'Kyle'; $user4->lastname = 'Broflovski'; $user4 = self::getDataGenerator()->create_user($user4); $user5 = new stdClass(); $user5->firstname = 'Kenny'; $user5->lastname = 'McCormick'; $user5 = self::getDataGenerator()->create_user($user5); self::getDataGenerator()->enrol_user($user5->id, $course2->id); $this->setUser($user1); $results = core_message_external::search_contacts('r'); $results = external_api::clean_returnvalue(core_message_external::search_contacts_returns(), $results); $this->assertCount(5, $results); // Users 2 through 5 + admin $results = core_message_external::search_contacts('r', true); $results = external_api::clean_returnvalue(core_message_external::search_contacts_returns(), $results); $this->assertCount(2, $results); $results = core_message_external::search_contacts('Kyle', false); $results = external_api::clean_returnvalue(core_message_external::search_contacts_returns(), $results); $this->assertCount(1, $results); $result = reset($results); $this->assertEquals($user4->id, $result['id']); $results = core_message_external::search_contacts('y', false); $results = external_api::clean_returnvalue(core_message_external::search_contacts_returns(), $results); $this->assertCount(2, $results); $results = core_message_external::search_contacts('y', true); $results = external_api::clean_returnvalue(core_message_external::search_contacts_returns(), $results); $this->assertCount(1, $results); $result = reset($results); $this->assertEquals($user5->id, $result['id']); // Empty query, will throw an exception. $this->setExpectedException('moodle_exception'); $results = core_message_external::search_contacts(''); }