MDL-63303 message: add fields to contact requests
This commit is contained in:
+219
-7
@@ -4570,13 +4570,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
|
||||
\core_message\api::create_contact_request($user1->id, $user2->id);
|
||||
|
||||
$request = $DB->get_records('message_contact_requests');
|
||||
|
||||
$this->assertCount(1, $request);
|
||||
|
||||
$request = reset($request);
|
||||
$request = \core_message\api::create_contact_request($user1->id, $user2->id);
|
||||
|
||||
$this->assertEquals($user1->id, $request->userid);
|
||||
$this->assertEquals($user2->id, $request->requesteduserid);
|
||||
@@ -4628,6 +4622,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
* Test retrieving contact requests.
|
||||
*/
|
||||
public function test_get_contact_requests() {
|
||||
global $PAGE;
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
@@ -4643,6 +4639,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertCount(1, $requests);
|
||||
|
||||
$request = reset($requests);
|
||||
$userpicture = new \user_picture($user2);
|
||||
$profileimageurl = $userpicture->get_url($PAGE)->out(false);
|
||||
|
||||
$this->assertEquals($user2->id, $request->id);
|
||||
$this->assertEquals(fullname($user2), $request->fullname);
|
||||
@@ -4819,6 +4817,78 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertTrue(\core_message\api::does_contact_request_exist($user2->id, $user1->id));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the count_received_contact_requests() function.
|
||||
*/
|
||||
public function test_count_received_contact_requests() {
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
$user4 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->assertEquals(0, \core_message\api::count_received_contact_requests($user1));
|
||||
|
||||
\core_message\api::create_contact_request($user2->id, $user1->id);
|
||||
|
||||
$this->assertEquals(1, \core_message\api::count_received_contact_requests($user1));
|
||||
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
|
||||
$this->assertEquals(2, \core_message\api::count_received_contact_requests($user1));
|
||||
|
||||
\core_message\api::create_contact_request($user1->id, $user4->id);
|
||||
// Function should ignore sent requests.
|
||||
$this->assertEquals(2, \core_message\api::count_received_contact_requests($user1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the get_contact_requests_between_users() function.
|
||||
*/
|
||||
public function test_get_contact_requests_between_users() {
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$user2 = self::getDataGenerator()->create_user();
|
||||
$user3 = self::getDataGenerator()->create_user();
|
||||
$user4 = self::getDataGenerator()->create_user();
|
||||
|
||||
$this->assertEquals([], \core_message\api::get_contact_requests_between_users($user1->id, $user2->id));
|
||||
|
||||
$request1 = \core_message\api::create_contact_request($user2->id, $user1->id);
|
||||
$results = \core_message\api::get_contact_requests_between_users($user1->id, $user2->id);
|
||||
$results = array_values($results);
|
||||
|
||||
$this->assertCount(1, $results);
|
||||
$result = $results[0];
|
||||
$this->assertEquals($request1->id, $result->id);
|
||||
|
||||
$request2 = \core_message\api::create_contact_request($user1->id, $user2->id);
|
||||
$results = \core_message\api::get_contact_requests_between_users($user1->id, $user2->id);
|
||||
$results = array_values($results);
|
||||
|
||||
$this->assertCount(2, $results);
|
||||
$actual = [(int) $results[0]->id, (int) $results[1]->id];
|
||||
$expected = [(int) $request1->id, (int) $request2->id];
|
||||
|
||||
sort($actual);
|
||||
sort($expected);
|
||||
|
||||
$this->assertEquals($expected, $actual);
|
||||
|
||||
// Request from a different user.
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
|
||||
$results = \core_message\api::get_contact_requests_between_users($user1->id, $user2->id);
|
||||
$results = array_values($results);
|
||||
|
||||
$this->assertCount(2, $results);
|
||||
$actual = [(int) $results[0]->id, (int) $results[1]->id];
|
||||
$expected = [(int) $request1->id, (int) $request2->id];
|
||||
|
||||
sort($actual);
|
||||
sort($expected);
|
||||
|
||||
$this->assertEquals($expected, $actual);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the user in conversation check.
|
||||
*/
|
||||
@@ -5084,6 +5154,148 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test an empty array returned when no args given.
|
||||
*/
|
||||
public function test_get_individual_conversations_between_users_no_user_sets() {
|
||||
$this->assertEmpty(\core_message\api::get_individual_conversations_between_users([]));
|
||||
}
|
||||
|
||||
/**
|
||||
* Test a conversation is not returned if there is none.
|
||||
*/
|
||||
public function test_get_individual_conversations_between_users_no_conversation() {
|
||||
$generator = $this->getDataGenerator();
|
||||
$user1 = $generator->create_user();
|
||||
$user2 = $generator->create_user();
|
||||
|
||||
$this->assertEquals(
|
||||
[null],
|
||||
\core_message\api::get_individual_conversations_between_users([[$user1->id, $user2->id]])
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the result set includes null if there is no conversation between users.
|
||||
*/
|
||||
public function test_get_individual_conversations_between_users_partial_conversations() {
|
||||
$generator = $this->getDataGenerator();
|
||||
$user1 = $generator->create_user();
|
||||
$user2 = $generator->create_user();
|
||||
$user3 = $generator->create_user();
|
||||
$type = \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL;
|
||||
|
||||
$conversation1 = \core_message\api::create_conversation($type, [$user1->id, $user2->id]);
|
||||
$conversation2 = \core_message\api::create_conversation($type, [$user1->id, $user3->id]);
|
||||
|
||||
$results = \core_message\api::get_individual_conversations_between_users([
|
||||
[$user1->id, $user2->id],
|
||||
[$user2->id, $user3->id],
|
||||
[$user1->id, $user3->id]
|
||||
]);
|
||||
|
||||
$result = array_map(function($result) {
|
||||
if ($result) {
|
||||
return $result->id;
|
||||
} else {
|
||||
return $result;
|
||||
}
|
||||
}, $results);
|
||||
|
||||
$this->assertEquals(
|
||||
[$conversation1->id, null, $conversation2->id],
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test all conversations are returned if each set has a conversation.
|
||||
*/
|
||||
public function test_get_individual_conversations_between_users_all_conversations() {
|
||||
$generator = $this->getDataGenerator();
|
||||
$user1 = $generator->create_user();
|
||||
$user2 = $generator->create_user();
|
||||
$user3 = $generator->create_user();
|
||||
$type = \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL;
|
||||
|
||||
$conversation1 = \core_message\api::create_conversation($type, [$user1->id, $user2->id]);
|
||||
$conversation2 = \core_message\api::create_conversation($type, [$user2->id, $user3->id]);
|
||||
$conversation3 = \core_message\api::create_conversation($type, [$user1->id, $user3->id]);
|
||||
|
||||
$results = \core_message\api::get_individual_conversations_between_users([
|
||||
[$user1->id, $user2->id],
|
||||
[$user2->id, $user3->id],
|
||||
[$user1->id, $user3->id]
|
||||
]);
|
||||
|
||||
$result = array_map(function($result) {
|
||||
if ($result) {
|
||||
return $result->id;
|
||||
} else {
|
||||
return $result;
|
||||
}
|
||||
}, $results);
|
||||
|
||||
$this->assertEquals(
|
||||
[$conversation1->id, $conversation2->id, $conversation3->id],
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test that the results are ordered to match the order of the parameters.
|
||||
*/
|
||||
public function test_get_individual_conversations_between_users_ordering() {
|
||||
$generator = $this->getDataGenerator();
|
||||
$user1 = $generator->create_user();
|
||||
$user2 = $generator->create_user();
|
||||
$user3 = $generator->create_user();
|
||||
$type = \core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL;
|
||||
|
||||
$conversation1 = \core_message\api::create_conversation($type, [$user1->id, $user2->id]);
|
||||
$conversation2 = \core_message\api::create_conversation($type, [$user2->id, $user3->id]);
|
||||
$conversation3 = \core_message\api::create_conversation($type, [$user1->id, $user3->id]);
|
||||
|
||||
$results = \core_message\api::get_individual_conversations_between_users([
|
||||
[$user1->id, $user2->id],
|
||||
[$user2->id, $user3->id],
|
||||
[$user1->id, $user3->id]
|
||||
]);
|
||||
|
||||
$result = array_map(function($result) {
|
||||
if ($result) {
|
||||
return $result->id;
|
||||
} else {
|
||||
return $result;
|
||||
}
|
||||
}, $results);
|
||||
|
||||
$this->assertEquals(
|
||||
[$conversation1->id, $conversation2->id, $conversation3->id],
|
||||
$result
|
||||
);
|
||||
|
||||
$results = \core_message\api::get_individual_conversations_between_users([
|
||||
[$user2->id, $user3->id],
|
||||
[$user1->id, $user2->id],
|
||||
[$user1->id, $user3->id]
|
||||
]);
|
||||
|
||||
$result = array_map(function($result) {
|
||||
if ($result) {
|
||||
return $result->id;
|
||||
} else {
|
||||
return $result;
|
||||
}
|
||||
}, $results);
|
||||
|
||||
$this->assertEquals(
|
||||
[$conversation2->id, $conversation1->id, $conversation3->id],
|
||||
$result
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test returning members in a conversation with no contact requests.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user