mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
MDL-64993 core_message: Adding self-conversations to unit tests
This commit is contained in:
parent
3204deacfe
commit
888a467a78
@ -212,8 +212,8 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
|
||||
$favouritesrepo = new favourite_repository($user1context);
|
||||
|
||||
// Verify that for an empty repository, find_all returns an empty array.
|
||||
$this->assertEquals([], $favouritesrepo->find_all());
|
||||
// Verify that only two self-conversations are found.
|
||||
$this->assertCount(2, $favouritesrepo->find_all());
|
||||
|
||||
// Save a favourite for 2 courses, in different areas.
|
||||
$favourite = new favourite(
|
||||
@ -233,9 +233,9 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
$favouritesrepo->add($favourite);
|
||||
$favouritesrepo->add($favourite2);
|
||||
|
||||
// Verify that find_all returns both of our favourites.
|
||||
// Verify that find_all returns both of our favourites + two self-conversations.
|
||||
$favourites = $favouritesrepo->find_all();
|
||||
$this->assertCount(2, $favourites);
|
||||
$this->assertCount(4, $favourites);
|
||||
foreach ($favourites as $fav) {
|
||||
$this->assertInstanceOf(favourite::class, $fav);
|
||||
$this->assertObjectHasAttribute('id', $fav);
|
||||
@ -251,11 +251,11 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
|
||||
$favouritesrepo = new favourite_repository($user1context);
|
||||
|
||||
// Verify that for an empty repository, find_all with any combination of page options returns an empty array.
|
||||
$this->assertEquals([], $favouritesrepo->find_all(0, 0));
|
||||
$this->assertEquals([], $favouritesrepo->find_all(0, 10));
|
||||
$this->assertEquals([], $favouritesrepo->find_all(1, 0));
|
||||
$this->assertEquals([], $favouritesrepo->find_all(1, 10));
|
||||
// Verify that for an empty repository, find_all with any combination of page options returns only self-conversations.
|
||||
$this->assertCount(2, $favouritesrepo->find_all(0, 0));
|
||||
$this->assertCount(2, $favouritesrepo->find_all(0, 10));
|
||||
$this->assertCount(1, $favouritesrepo->find_all(1, 0));
|
||||
$this->assertCount(1, $favouritesrepo->find_all(1, 10));
|
||||
|
||||
// Save 10 arbitrary favourites to the repo.
|
||||
foreach (range(1, 10) as $i) {
|
||||
@ -269,19 +269,19 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
$favouritesrepo->add($favourite);
|
||||
}
|
||||
|
||||
// Verify we have 10 favourites.
|
||||
$this->assertEquals(10, $favouritesrepo->count());
|
||||
// Verify we have 10 favourites + 2 self-conversations.
|
||||
$this->assertEquals(12, $favouritesrepo->count());
|
||||
|
||||
// Verify we can fetch the first page of 5 records.
|
||||
$favourites = $favouritesrepo->find_all(0, 5);
|
||||
$this->assertCount(5, $favourites);
|
||||
// Verify we can fetch the first page of 5 records+ 2 self-conversations.
|
||||
$favourites = $favouritesrepo->find_all(0, 6);
|
||||
$this->assertCount(6, $favourites);
|
||||
|
||||
// Verify we can fetch the second page.
|
||||
$favourites = $favouritesrepo->find_all(5, 5);
|
||||
$this->assertCount(5, $favourites);
|
||||
$favourites = $favouritesrepo->find_all(6, 6);
|
||||
$this->assertCount(6, $favourites);
|
||||
|
||||
// Verify the third page request ends with an empty array.
|
||||
$favourites = $favouritesrepo->find_all(10, 5);
|
||||
$favourites = $favouritesrepo->find_all(12, 6);
|
||||
$this->assertCount(0, $favourites);
|
||||
}
|
||||
|
||||
@ -321,11 +321,11 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
|
||||
$favouritesrepo = new favourite_repository($user1context);
|
||||
|
||||
// Verify that for an empty repository, find_all with any combination of page options returns an empty array.
|
||||
$this->assertEquals([], $favouritesrepo->find_by([], 0, 0));
|
||||
$this->assertEquals([], $favouritesrepo->find_by([], 0, 10));
|
||||
$this->assertEquals([], $favouritesrepo->find_by([], 1, 0));
|
||||
$this->assertEquals([], $favouritesrepo->find_by([], 1, 10));
|
||||
// Verify that by default, find_all with any combination of page options returns only self-conversations.
|
||||
$this->assertCount(2, $favouritesrepo->find_by([], 0, 0));
|
||||
$this->assertCount(2, $favouritesrepo->find_by([], 0, 10));
|
||||
$this->assertCount(1, $favouritesrepo->find_by([], 1, 0));
|
||||
$this->assertCount(1, $favouritesrepo->find_by([], 1, 10));
|
||||
|
||||
// Save 10 arbitrary favourites to the repo.
|
||||
foreach (range(1, 10) as $i) {
|
||||
@ -339,12 +339,12 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
$favouritesrepo->add($favourite);
|
||||
}
|
||||
|
||||
// Verify we have 10 favourites.
|
||||
$this->assertEquals(10, $favouritesrepo->count());
|
||||
// Verify we have 10 favourites + 2 self-conversations.
|
||||
$this->assertEquals(12, $favouritesrepo->count());
|
||||
|
||||
// Verify a request for a page, when no criteria match, results in an empty array.
|
||||
// Verify a request for a page, when no criteria match, results in 2 self-conversations array.
|
||||
$favourites = $favouritesrepo->find_by(['component' => 'core_message'], 0, 5);
|
||||
$this->assertCount(0, $favourites);
|
||||
$this->assertCount(2, $favourites);
|
||||
|
||||
// Verify we can fetch a the first page of 5 records.
|
||||
$favourites = $favouritesrepo->find_by(['component' => 'core_course'], 0, 5);
|
||||
@ -546,8 +546,8 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
$favourite1 = $favouritesrepo->add($favourite);
|
||||
$favourite2 = $favouritesrepo->add($favourite2);
|
||||
|
||||
// Verify we have 2 items in the repo.
|
||||
$this->assertEquals(2, $favouritesrepo->count());
|
||||
// Verify we have 2 items in the repo + 2 self-conversations.
|
||||
$this->assertEquals(4, $favouritesrepo->count());
|
||||
|
||||
// Try to delete by a non-existent area, and confirm it doesn't remove anything.
|
||||
$favouritesrepo->delete_by(
|
||||
@ -557,7 +557,7 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
'itemtype' => 'donaldduck'
|
||||
]
|
||||
);
|
||||
$this->assertEquals(2, $favouritesrepo->count());
|
||||
$this->assertEquals(4, $favouritesrepo->count());
|
||||
|
||||
// Try to delete by a non-existent area, and confirm it doesn't remove anything.
|
||||
$favouritesrepo->delete_by(
|
||||
@ -567,7 +567,7 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
'itemtype' => 'cat'
|
||||
]
|
||||
);
|
||||
$this->assertEquals(2, $favouritesrepo->count());
|
||||
$this->assertEquals(4, $favouritesrepo->count());
|
||||
|
||||
// Delete by area, and confirm we have one record left, from the 'core_course/anothertype' area.
|
||||
$favouritesrepo->delete_by(
|
||||
@ -577,7 +577,7 @@ class favourite_repository_testcase extends advanced_testcase {
|
||||
'itemtype' => 'course'
|
||||
]
|
||||
);
|
||||
$this->assertEquals(1, $favouritesrepo->count());
|
||||
$this->assertEquals(3, $favouritesrepo->count());
|
||||
$this->assertFalse($favouritesrepo->exists($favourite1->id));
|
||||
$this->assertTrue($favouritesrepo->exists($favourite2->id));
|
||||
}
|
||||
|
@ -714,12 +714,15 @@ class core_group_privacy_provider_testcase extends provider_testcase {
|
||||
$coursecontext1 = context_course::instance($course1->id);
|
||||
$coursecontext2 = context_course::instance($course2->id);
|
||||
|
||||
// User1 is member of some groups in course1 and course2.
|
||||
// User1 is member of some groups in course1 and course2 + self-conversation.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(2, $contextlist);
|
||||
$contextids = $contextlist->get_contextids();
|
||||
// First user context is the one related to self-conversation. Let's test group contexts.
|
||||
array_pop($contextids);
|
||||
$this->assertCount(3, $contextlist);
|
||||
$this->assertEquals(
|
||||
[$coursecontext1->id, $coursecontext2->id],
|
||||
$contextlist->get_contextids(),
|
||||
$contextids,
|
||||
'', 0.0, 10, true);
|
||||
}
|
||||
|
||||
@ -757,7 +760,7 @@ class core_group_privacy_provider_testcase extends provider_testcase {
|
||||
// User is member of some groups in course1 and course2,
|
||||
// but only the membership in course1 is directly managed by core_group.
|
||||
$contextlist = provider::get_contexts_for_userid($user->id);
|
||||
$this->assertEquals([$coursecontext1->id], $contextlist->get_contextids());
|
||||
$this->assertEquals($coursecontext1->id, $contextlist->get_contextids()[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -384,17 +384,19 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// When site wide messaging is disabled, we expect to see only those users who we share a course with and whose profiles
|
||||
// are visible in that course. This excludes users like course contacts.
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]->id);
|
||||
$this->assertCount(3, $noncontacts);
|
||||
// Self-conversation first.
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]->id);
|
||||
|
||||
// Verify the correct conversations were returned for the non-contacts.
|
||||
$this->assertCount(1, $noncontacts[0]->conversations);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
|
||||
$noncontacts[0]->conversations[$ic2->id]->type);
|
||||
|
||||
$this->assertCount(1, $noncontacts[1]->conversations);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[1]->conversations[$gc1->id]->type);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
|
||||
$noncontacts[1]->conversations[$ic2->id]->type);
|
||||
|
||||
$this->assertCount(1, $noncontacts[2]->conversations);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[2]->conversations[$gc1->id]->type);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -436,6 +438,9 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$teacherrole = $DB->get_record('role', array('shortname' => 'editingteacher'));
|
||||
set_config('coursecontact', $teacherrole->id);
|
||||
|
||||
// Get self-conversation.
|
||||
$selfconversation = \core_message\api::get_self_conversation($users[1]->id);
|
||||
|
||||
// Create individual conversations between some users, one contact and one non-contact.
|
||||
$ic1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
|
||||
[$users[1]->id, $users[2]->id]);
|
||||
@ -474,13 +479,29 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// If site wide messaging is enabled, we expect to only be able to search for users whose profiles we can view.
|
||||
// In this case, as a student, that's the course contact for course2 and those noncontacts sharing a course with user1.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[2]->id);
|
||||
$this->assertCount(1, $noncontacts[0]->conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(4, $noncontacts);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]->id);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[3]->id);
|
||||
|
||||
$this->assertCount(1, $noncontacts[1]->conversations);
|
||||
$this->assertCount(0, $noncontacts[2]->conversations);
|
||||
$this->assertCount(1, $noncontacts[2]->conversations);
|
||||
$this->assertCount(0, $noncontacts[3]->conversations);
|
||||
|
||||
// Verify the correct conversations were returned for the non-contacts.
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
$noncontacts[0]->conversations[$selfconversation->id]->type);
|
||||
|
||||
$this->assertCount(1, $noncontacts[1]->conversations);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL,
|
||||
$noncontacts[1]->conversations[$ic2->id]->type);
|
||||
|
||||
$this->assertCount(1, $noncontacts[2]->conversations);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[2]->conversations[$gc1->id]->type);
|
||||
|
||||
$this->assertCount(0, $noncontacts[3]->conversations);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -499,8 +520,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$user2->lastname = 'Two';
|
||||
$user2 = $this->getDataGenerator()->create_user($user2);
|
||||
|
||||
// Create self-conversation for user1.
|
||||
$sc1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user1->id]);
|
||||
// Get self-conversation for user1.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
testhelper::send_fake_message_to_conversation($user1, $sc1->id, 'Hi myself!');
|
||||
|
||||
// Perform a search as user1.
|
||||
@ -556,7 +577,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Enrol the first 9 users in the same course, but leave them as non-contacts.
|
||||
$this->setAdminUser();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
foreach (range(1, 9) as $i) {
|
||||
foreach (range(1, 8) as $i) {
|
||||
$this->getDataGenerator()->enrol_user($users[$i]->id, $course1->id);
|
||||
}
|
||||
|
||||
@ -581,10 +602,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertEquals($users[13]->id, $contacts[2]->id);
|
||||
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[2]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[3]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[4]->id, $noncontacts[2]->id);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[2]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[3]->id, $noncontacts[2]->id);
|
||||
|
||||
// Now, offset to get the next batch of results.
|
||||
// We expect to see 2 contacts, and 3 non-contacts.
|
||||
@ -596,9 +618,9 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertEquals($users[15]->id, $contacts[1]->id);
|
||||
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[5]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]->id);
|
||||
$this->assertEquals($users[4]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[5]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[2]->id);
|
||||
|
||||
// Now, offset to get the next batch of results.
|
||||
// We expect to see 0 contacts, and 2 non-contacts.
|
||||
@ -608,8 +630,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$this->assertCount(0, $contacts);
|
||||
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[8]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[8]->id, $noncontacts[1]->id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -661,9 +683,11 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// Site-wide messaging is disabled, so we expect to be able to search for any users whose profiles we can view.
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]->id);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]->id);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]->id);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]->id);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -781,24 +805,29 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
array($user1->id, $user2->id, $user3->id),
|
||||
'Project chat');
|
||||
|
||||
// Create self-conversations.
|
||||
$sc1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
array($user1->id));
|
||||
$sc2 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
array($user2->id));
|
||||
|
||||
// Send message to self-conversation.
|
||||
testhelper::send_fake_message_to_conversation($user1, $sc1->id, 'Message to myself!');
|
||||
|
||||
// Get self-conversations.
|
||||
$rsc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
$rsc2 = \core_message\api::get_self_conversation($user2->id);
|
||||
$rsc3 = \core_message\api::get_self_conversation($user3->id);
|
||||
|
||||
// Send message to self-conversation.
|
||||
testhelper::send_fake_message_to_conversation($user1, $rsc1->id, 'Message to myself!');
|
||||
|
||||
// Check that we retrieved the correct conversations.
|
||||
$this->assertEquals($sc1->id, $rsc1->id);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, $sc1->type);
|
||||
$this->assertEquals($sc2->id, $rsc2->id);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, $sc2->type);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, $rsc1->type);
|
||||
$members = \core_message\api::get_conversation_members($user1->id, $rsc1->id);
|
||||
$this->assertCount(1, $members);
|
||||
$member = reset($members);
|
||||
$this->assertEquals($user1->id, $member->id);
|
||||
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, $rsc2->type);
|
||||
$members = \core_message\api::get_conversation_members($user2->id, $rsc2->id);
|
||||
$this->assertCount(1, $members);
|
||||
$member = reset($members);
|
||||
$this->assertEquals($user2->id, $member->id);
|
||||
|
||||
\core_message\api::delete_all_conversation_data($rsc3->id);
|
||||
$rsc3 = \core_message\api::get_self_conversation($user3->id);
|
||||
$this->assertFalse($rsc3);
|
||||
}
|
||||
|
||||
@ -816,8 +845,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// The person doing the search.
|
||||
$this->setUser($user1);
|
||||
|
||||
// Create self-conversation.
|
||||
$sc = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user1->id]);
|
||||
// Get self-conversation.
|
||||
$sc = \core_message\api::get_self_conversation($user1->id);
|
||||
|
||||
// Create group conversation.
|
||||
$gc = \core_message\api::create_conversation(
|
||||
@ -926,8 +955,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// The person doing the search.
|
||||
$this->setUser($user1);
|
||||
|
||||
// No conversations yet.
|
||||
$this->assertEquals([], \core_message\api::get_conversations($user1->id));
|
||||
// Only self-conversation created.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id));
|
||||
|
||||
// Create some conversations for user1.
|
||||
$time = 1;
|
||||
@ -955,12 +984,21 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$service->create_favourite('core_message', 'message_conversations', $convoid, $user1context);
|
||||
}
|
||||
|
||||
// We should have 3 conversations.
|
||||
$this->assertCount(3, \core_message\api::get_conversations($user1->id));
|
||||
// We should have 4 conversations.
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(4, \core_message\api::get_conversations($user1->id));
|
||||
|
||||
// And 2 favourited conversations.
|
||||
// And 3 favourited conversations (self-conversation included).
|
||||
$conversations = \core_message\api::get_conversations($user1->id, 0, 20, null, true);
|
||||
$this->assertCount(2, $conversations);
|
||||
$this->assertCount(3, $conversations);
|
||||
$conversations = \core_message\api::get_conversations(
|
||||
$user1->id,
|
||||
0,
|
||||
20,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
true
|
||||
);
|
||||
$this->assertCount(1, $conversations);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -976,8 +1014,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// The person doing the search.
|
||||
$this->setUser($user1);
|
||||
|
||||
// No conversations yet.
|
||||
$this->assertEquals([], \core_message\api::get_conversations($user1->id));
|
||||
// Only self-conversation created.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id));
|
||||
|
||||
// Create some conversations for user1.
|
||||
$time = 1;
|
||||
@ -1006,14 +1044,15 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$service->create_favourite('core_message', 'message_conversations', $convoid, $user1context);
|
||||
}
|
||||
|
||||
// Consider first conversations is self-conversation.
|
||||
// Get all records, using offset 0 and large limit.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 1, 10, null, true));
|
||||
$this->assertCount(4, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Now, get 10 conversations starting at the second record. We should see 2 conversations.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 1, 10, null, true));
|
||||
$this->assertCount(3, \core_message\api::get_conversations($user1->id, 1, 10, null, true));
|
||||
|
||||
// Now, try to get favourited conversations using an invalid offset.
|
||||
$this->assertCount(0, \core_message\api::get_conversations($user1->id, 4, 10, null, true));
|
||||
$this->assertCount(0, \core_message\api::get_conversations($user1->id, 5, 10, null, true));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1054,7 +1093,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$conversations = \core_message\api::get_conversations($user1->id, 0, 20, null, true);
|
||||
|
||||
// We should have both conversations, despite the other user being soft-deleted.
|
||||
$this->assertCount(2, $conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(3, $conversations);
|
||||
|
||||
// Confirm the conversation is from the non-deleted user.
|
||||
$conversation = reset($conversations);
|
||||
@ -1086,11 +1126,13 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$conversationid1 = \core_message\api::get_conversation_between_users([$user1->id, $user2->id]);
|
||||
$favourite = \core_message\api::set_favourite_conversation($conversationid1, $user1->id);
|
||||
|
||||
// Verify we have a single favourite conversation a user 1.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
// Verify we have two favourite conversations a user 1.
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Verify we have no favourites as user2, despite being a member in that conversation.
|
||||
$this->assertCount(0, \core_message\api::get_conversations($user2->id, 0, 20, null, true));
|
||||
// Verify we have only one favourite as user2, despite being a member in that conversation.
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user2->id, 0, 20, null, true));
|
||||
|
||||
// Try to favourite the same conversation again should just return the existing favourite.
|
||||
$repeatresult = \core_message\api::set_favourite_conversation($conversationid1, $user1->id);
|
||||
@ -1162,16 +1204,16 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
\core_message\api::set_favourite_conversation($conversationid1, $user1->id);
|
||||
\core_message\api::set_favourite_conversation($conversationid2, $user3->id);
|
||||
|
||||
// Verify we have a single favourite conversation for both user 1 and user 3.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user3->id, 0, 20, null, true));
|
||||
// Verify we have two favourite conversations for both user 1 and user 3, counting self conversations.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user3->id, 0, 20, null, true));
|
||||
|
||||
// Now unfavourite the conversation as user 1.
|
||||
\core_message\api::unset_favourite_conversation($conversationid1, $user1->id);
|
||||
|
||||
// Verify we have a single favourite conversation user 3 only, and none for user1.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user3->id, 0, 20, null, true));
|
||||
$this->assertCount(0, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
// Verify we have two favourite conversations user 3 only, and one for user1, counting self conversations.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user3->id, 0, 20, null, true));
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Try to favourite the same conversation again as user 1.
|
||||
$this->expectException(\moodle_exception::class);
|
||||
@ -1286,9 +1328,10 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
*/
|
||||
public function test_get_conversations_no_restrictions() {
|
||||
global $DB;
|
||||
// No conversations should exist yet.
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user();
|
||||
$this->assertEquals([], \core_message\api::get_conversations($user1->id));
|
||||
// Self-conversation should exists.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id));
|
||||
|
||||
// Get a bunch of conversations, some group, some individual and in different states.
|
||||
list($user1, $user2, $user3, $user4, $ic1, $ic2, $ic3,
|
||||
@ -1297,18 +1340,20 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Get all conversations for user1.
|
||||
$conversations = core_message\api::get_conversations($user1->id);
|
||||
|
||||
// Verify there are 2 individual conversation, 2 group conversations, and 2 empty group conversations.
|
||||
// Verify there are 2 individual conversation, 2 group conversations, 2 empty group conversations,
|
||||
// and a self-conversation.
|
||||
// The conversations with the most recent messages should be listed first, followed by the empty
|
||||
// conversations, with the most recently created first.
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
$typecounts = array_count_values(array_column($conversations, 'type'));
|
||||
$this->assertEquals(2, $typecounts[1]);
|
||||
$this->assertEquals(4, $typecounts[2]);
|
||||
$this->assertEquals(1, $typecounts[3]);
|
||||
|
||||
// Those conversations having messages should be listed first, ordered by most recent message time.
|
||||
// Those conversations having messages should be listed after self-conversation, ordered by most recent message time.
|
||||
$this->assertEquals($gc3->id, $conversations[0]->id);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $conversations[0]->type);
|
||||
$this->assertFalse($conversations[0]->isfavourite);
|
||||
$this->assertFalse($conversations[1]->isfavourite);
|
||||
$this->assertCount(1, $conversations[0]->members);
|
||||
$this->assertEquals(4, $conversations[0]->membercount);
|
||||
$this->assertCount(1, $conversations[0]->messages);
|
||||
@ -1463,6 +1508,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
return $first->id > $second->id;
|
||||
});
|
||||
|
||||
// Consider first conversations is self-conversation.
|
||||
$selfconversation = array_shift($conversations);
|
||||
$conv1 = array_shift($conversations);
|
||||
$conv2 = array_shift($conversations);
|
||||
$conv3 = array_shift($conversations);
|
||||
@ -1555,9 +1602,9 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
[$user1->id, $user3->id]);
|
||||
testhelper::send_fake_message_to_conversation($user1, $ic1->id, 'Message from user1 to user2');
|
||||
|
||||
// Create some self-conversations.
|
||||
$sc1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user1->id]);
|
||||
$sc4 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user4->id]);
|
||||
// Get some self-conversations.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
$sc4 = \core_message\api::get_self_conversation($user4->id);
|
||||
testhelper::send_fake_message_to_conversation($user1, $sc1->id, 'Test message to self 1!');
|
||||
|
||||
// Verify we are in a 'self' conversation state.
|
||||
@ -1591,10 +1638,10 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL);
|
||||
$this->assertCount(1, $conversations);
|
||||
|
||||
// Merge self with private conversations for user2 (is the same result than before because user2 hasn't self-conversations).
|
||||
// Merge self with private conversations for user2.
|
||||
$conversations = \core_message\api::get_conversations($user2->id, 0, 20,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL, null, true);
|
||||
$this->assertCount(1, $conversations);
|
||||
$this->assertCount(2, $conversations);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1613,7 +1660,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// We no longer delete the user context, but historically we did.
|
||||
context_helper::delete_instance(CONTEXT_USER, $user2->id);
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider there's a self-conversation (the last one).
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc3->id, $conversations[0]->id);
|
||||
$this->assertcount(1, $conversations[0]->members);
|
||||
$this->assertEquals($gc2->id, $conversations[1]->id);
|
||||
@ -1627,7 +1675,9 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// This user will still be present in the members array, as will the message in the messages array.
|
||||
delete_user($user4);
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
|
||||
// Consider there's a self-conversation (the last one).
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc2->id, $conversations[1]->id);
|
||||
$this->assertcount(1, $conversations[1]->members);
|
||||
$this->assertEquals($user4->id, $conversations[1]->members[$user4->id]->id);
|
||||
@ -1639,7 +1689,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Group conversations are also present, albeit with less members.
|
||||
delete_user($user3);
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider there's a self-conversation (the last one).
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc3->id, $conversations[0]->id);
|
||||
$this->assertcount(1, $conversations[0]->members);
|
||||
$this->assertEquals($gc2->id, $conversations[1]->id);
|
||||
@ -1659,7 +1710,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
$gc1, $gc2, $gc3, $gc4, $gc5, $gc6) = $this->create_conversation_test_data();
|
||||
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(7, $conversations);
|
||||
|
||||
// Delete all messages from a group conversation the user is in - it should be returned.
|
||||
$this->assertTrue(\core_message\api::is_user_in_conversation($user1->id, $gc2->id));
|
||||
@ -1669,7 +1721,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
\core_message\api::delete_message($user1->id, $message->id);
|
||||
}
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertContains($gc2->id, array_column($conversations, 'id'));
|
||||
|
||||
// Delete all messages from an individual conversation the user is in - it should not be returned.
|
||||
@ -1680,7 +1733,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
\core_message\api::delete_message($user1->id, $message->id);
|
||||
}
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(5, $conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertNotContains($ic1->id, array_column($conversations, 'id'));
|
||||
}
|
||||
|
||||
@ -1698,18 +1752,21 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
// Get the conversation, first with no restrictions, confirming the favourite status of the conversations.
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider there is a self-conversation.
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
$this->assertCount(7, $conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
if (in_array($conv->id, [$ic2->id])) {
|
||||
if (in_array($conv->id, [$ic2->id, $selfconversation->id])) {
|
||||
$this->assertTrue($conv->isfavourite);
|
||||
} else {
|
||||
$this->assertFalse($conv->isfavourite);
|
||||
}
|
||||
}
|
||||
|
||||
// Now, get ONLY favourite conversations.
|
||||
// Now, get ONLY favourite conversations (including self-conversation).
|
||||
$conversations = \core_message\api::get_conversations($user1->id, 0, 20, null, true);
|
||||
$this->assertCount(1, $conversations);
|
||||
$this->assertCount(2, $conversations);
|
||||
$self = array_pop($conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
$this->assertTrue($conv->isfavourite);
|
||||
$this->assertEquals($ic2->id, $conv->id);
|
||||
@ -1737,11 +1794,18 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
list($user1, $user2, $user3, $user4, $ic1, $ic2, $ic3,
|
||||
$gc1, $gc2, $gc3, $gc4, $gc5, $gc6) = $this->create_conversation_test_data();
|
||||
|
||||
// Try to get ONLY favourite conversations, when only self-conversation exist.
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Unstar self-conversation.
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
\core_message\api::unset_favourite_conversation($selfconversation->id, $user1->id);
|
||||
|
||||
// Try to get ONLY favourite conversations, when no favourites exist.
|
||||
$this->assertEquals([], \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Try to get NO favourite conversations, when no favourites exist.
|
||||
$this->assertCount(6, \core_message\api::get_conversations($user1->id, 0, 20, null, false));
|
||||
$this->assertCount(7, \core_message\api::get_conversations($user1->id, 0, 20, null, false));
|
||||
|
||||
// Mark a few conversations as favourites.
|
||||
\core_message\api::set_favourite_conversation($ic1->id, $user1->id);
|
||||
@ -1751,7 +1815,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
// Get the conversations, first with no restrictions, confirming the favourite status of the conversations.
|
||||
$conversations = \core_message\api::get_conversations($user1->id);
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
if (in_array($conv->id, $favouriteids)) {
|
||||
$this->assertTrue($conv->isfavourite);
|
||||
@ -1779,7 +1843,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
// And NO favourite conversations.
|
||||
$conversations = \core_message\api::get_conversations($user1->id, 0, 20, null, false);
|
||||
$this->assertCount(3, $conversations);
|
||||
$this->assertCount(4, $conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
$this->assertFalse($conv->isfavourite);
|
||||
$this->assertFalse(array_search($conv->id, $favouriteids));
|
||||
@ -1892,6 +1956,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
// Verify the group without any image works as expected too.
|
||||
$conversations = \core_message\api::get_conversations($user3->id);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertEquals(2, $conversations[0]->membercount);
|
||||
$this->assertEquals($course1->shortname, $conversations[0]->subname);
|
||||
$this->assertEquals('https://www.example.com/moodle/theme/image.php/_s/boost/core/1/g/g1', $conversations[0]->imageurl);
|
||||
@ -1899,7 +1964,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// Now, disable the conversation linked to the group and verify it's no longer returned.
|
||||
$DB->set_field('message_conversations', 'enabled', 0, ['id' => $conversations[0]->id]);
|
||||
$conversations = \core_message\api::get_conversations($user3->id);
|
||||
$this->assertCount(0, $conversations);
|
||||
$this->assertCount(1, $conversations);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3175,9 +3240,9 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
// The person doing the search.
|
||||
$this->setUser($user1);
|
||||
|
||||
// Create self-conversation.
|
||||
$sc1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user1->id]);
|
||||
$sc2 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user2->id]);
|
||||
// Get self-conversation.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
$sc2 = \core_message\api::get_self_conversation($user2->id);
|
||||
|
||||
// Send some messages back and forth.
|
||||
$time = 1;
|
||||
@ -3555,11 +3620,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
]
|
||||
);
|
||||
|
||||
// Create a self-conversation for user1.
|
||||
$sc1 = \core_message\api::create_conversation(
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
[$user1->id]
|
||||
);
|
||||
// Get a self-conversation for user1.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
|
||||
// For group conversations, there are no user privacy checks, so only membership in the conversation is needed.
|
||||
$this->assertTrue(\core_message\api::can_send_message_to_conversation($user1->id, $gc1->id));
|
||||
@ -3716,11 +3778,8 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
]
|
||||
);
|
||||
|
||||
// Create a self-conversation for user1.
|
||||
$sc1 = \core_message\api::create_conversation(
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
[$user1->id]
|
||||
);
|
||||
// Get a self-conversation for user1.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
|
||||
// Verify, non members cannot send a message.
|
||||
$this->assertFalse(\core_message\api::can_send_message_to_conversation($user4->id, $gc1->id));
|
||||
@ -5978,8 +6037,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
|
||||
$user1 = self::getDataGenerator()->create_user($lastaccess);
|
||||
|
||||
$selfconversation = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF,
|
||||
[$user1->id]);
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
testhelper::send_fake_message_to_conversation($user1, $selfconversation->id, 'This is a self-message!');
|
||||
|
||||
// Get the members for the self-conversation.
|
||||
@ -6299,7 +6357,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user5],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6316,7 +6374,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user4],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6333,7 +6391,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6350,7 +6408,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user2],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6367,7 +6425,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user4],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6384,7 +6442,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6401,7 +6459,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6418,7 +6476,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0, 1, 2],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6435,7 +6493,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3, 4, 5],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6452,7 +6510,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0, 1, 2],
|
||||
'arguments' => [$user2],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6469,7 +6527,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3, 4, 5],
|
||||
'arguments' => [$user3],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6486,7 +6544,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [6, 7],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6503,7 +6561,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [6, 7, 8, 9],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6520,7 +6578,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6537,7 +6595,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6554,7 +6612,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user6],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6571,7 +6629,7 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user7],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
|
@ -2629,16 +2629,18 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// When site wide messaging is disabled, we expect to see only those users who we share a course with and whose profiles
|
||||
// are visible in that course. This excludes users like course contacts.
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]['id']);
|
||||
$this->assertCount(3, $noncontacts);
|
||||
// Self-conversation first.
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]['id']);
|
||||
|
||||
// Verify the correct conversations were returned for the non-contacts.
|
||||
$this->assertCount(1, $noncontacts[0]['conversations']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL, $noncontacts[0]['conversations'][0]['type']);
|
||||
|
||||
$this->assertCount(1, $noncontacts[1]['conversations']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[1]['conversations'][0]['type']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL, $noncontacts[1]['conversations'][0]['type']);
|
||||
|
||||
$this->assertCount(1, $noncontacts[2]['conversations']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[2]['conversations'][0]['type']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2723,17 +2725,18 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// If site wide messaging is enabled, we expect to be able to search for any users whose profiles we can view.
|
||||
// In this case, as a student, that's the course contact for course2 and those noncontacts sharing a course with user1.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[2]['id']);
|
||||
$this->assertCount(4, $noncontacts);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]['id']);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[3]['id']);
|
||||
|
||||
// Verify the correct conversations were returned for the non-contacts.
|
||||
$this->assertCount(1, $noncontacts[0]['conversations']);
|
||||
$this->assertCount(1, $noncontacts[1]['conversations']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL, $noncontacts[0]['conversations'][0]['type']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[1]['conversations'][0]['type']);
|
||||
$this->assertCount(0, $noncontacts[2]['conversations']);
|
||||
$this->assertCount(1, $noncontacts[2]['conversations']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL, $noncontacts[1]['conversations'][0]['type']);
|
||||
$this->assertEquals(\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP, $noncontacts[2]['conversations'][0]['type']);
|
||||
$this->assertCount(0, $noncontacts[3]['conversations']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2752,8 +2755,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$user2->lastname = 'Two';
|
||||
$user2 = $this->getDataGenerator()->create_user($user2);
|
||||
|
||||
// Create self-conversation for user1.
|
||||
$sc1 = \core_message\api::create_conversation(\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF, [$user1->id]);
|
||||
// Get self-conversation for user1.
|
||||
$sc1 = \core_message\api::get_self_conversation($user1->id);
|
||||
testhelper::send_fake_message_to_conversation($user1, $sc1->id, 'Hi myself!');
|
||||
|
||||
// Perform a search as user1.
|
||||
@ -2811,7 +2814,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// Enrol the first 9 users in the same course, but leave them as non-contacts.
|
||||
$this->setAdminUser();
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
foreach (range(1, 9) as $i) {
|
||||
foreach (range(1, 8) as $i) {
|
||||
$this->getDataGenerator()->enrol_user($users[$i]->id, $course1->id);
|
||||
}
|
||||
|
||||
@ -2837,10 +2840,11 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals($users[13]->id, $contacts[2]['id']);
|
||||
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// Consider first conversation is self-conversation.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[2]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[3]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[4]->id, $noncontacts[2]['id']);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[2]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[3]->id, $noncontacts[2]['id']);
|
||||
|
||||
// Now, offset to get the next batch of results.
|
||||
// We expect to see 2 contacts, and 3 non-contacts.
|
||||
@ -2853,9 +2857,9 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals($users[15]->id, $contacts[1]['id']);
|
||||
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[5]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]['id']);
|
||||
$this->assertEquals($users[4]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[5]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[2]['id']);
|
||||
|
||||
// Now, offset to get the next batch of results.
|
||||
// We expect to see 0 contacts, and 2 non-contacts.
|
||||
@ -2866,8 +2870,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertCount(0, $contacts);
|
||||
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[8]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[9]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[8]->id, $noncontacts[1]['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2920,9 +2924,11 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
|
||||
// Check that we retrieved the correct non-contacts.
|
||||
// Site-wide messaging is disabled, so we expect to be able to search for any users whose profile we can view.
|
||||
$this->assertCount(2, $noncontacts);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[1]['id']);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(3, $noncontacts);
|
||||
$this->assertEquals($users[1]->id, $noncontacts[0]['id']);
|
||||
$this->assertEquals($users[6]->id, $noncontacts[1]['id']);
|
||||
$this->assertEquals($users[7]->id, $noncontacts[2]['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -5230,6 +5236,12 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$conversation2 = \core_message\api::get_conversation_between_users([$user1->id, $user3->id]);
|
||||
\core_message\api::set_favourite_conversation($conversation1, $user1->id);
|
||||
\core_message\api::set_favourite_conversation($conversation2, $user1->id);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(3, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Unset favourite self-conversation.
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
$result = core_message_external::unset_favourite_conversations($user1->id, [$selfconversation->id]);
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Now, using the web service, unset the favourite conversations.
|
||||
@ -5265,7 +5277,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// Favourite conversation 1 for user1. The current user ($USER) isn't checked for this action.
|
||||
$conversation1 = \core_message\api::get_conversation_between_users([$user1->id, $user2->id]);
|
||||
\core_message\api::set_favourite_conversation($conversation1, $user1->id);
|
||||
$this->assertCount(1, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(2, \core_message\api::get_conversations($user1->id, 0, 20, null, true));
|
||||
|
||||
// Try to unfavourite conversation 1 for user 2, as user3.
|
||||
$conversation1 = \core_message\api::get_conversation_between_users([$user1->id, $user2->id]);
|
||||
@ -5375,16 +5388,20 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
|
||||
// Verify there are 6 conversations: 2 individual, 2 group with message, and 2 group without messages.
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
|
||||
// Verify there are 7 conversations: 2 individual, 2 group with message, 2 group without messages
|
||||
// and a self-conversation.
|
||||
// The conversations with the most recent messages should be listed first, followed by the most newly created
|
||||
// conversations without messages.
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc3->id, $conversations[0]['id']);
|
||||
$this->assertEquals($gc2->id, $conversations[1]['id']);
|
||||
$this->assertEquals($ic2->id, $conversations[2]['id']);
|
||||
$this->assertEquals($ic1->id, $conversations[3]['id']);
|
||||
$this->assertEquals($gc5->id, $conversations[4]['id']);
|
||||
$this->assertEquals($gc4->id, $conversations[5]['id']);
|
||||
$this->assertEquals($selfconversation->id, $conversations[6]['id']);
|
||||
|
||||
foreach ($conversations as $conv) {
|
||||
$this->assertArrayHasKey('id', $conv);
|
||||
@ -5580,6 +5597,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// The user making the request.
|
||||
$this->setUser($user1);
|
||||
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
|
||||
// Delete the second user and retrieve the conversations.
|
||||
// We should have 6 still, as conversations with soft-deleted users are still returned.
|
||||
// Group conversations are also present, albeit with less members.
|
||||
@ -5587,7 +5606,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = core_message_external::get_conversations($user1->id);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc3->id, $conversations[0]['id']);
|
||||
$this->assertcount(1, $conversations[0]['members']);
|
||||
$this->assertEquals($gc2->id, $conversations[1]['id']);
|
||||
@ -5596,6 +5615,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals($ic1->id, $conversations[3]['id']);
|
||||
$this->assertEquals($gc5->id, $conversations[4]['id']);
|
||||
$this->assertEquals($gc4->id, $conversations[5]['id']);
|
||||
$this->assertEquals($selfconversation->id, $conversations[6]['id']);
|
||||
|
||||
// Delete a user from a group conversation where that user had sent the most recent message.
|
||||
// This user will still be present in the members array, as will the message in the messages array.
|
||||
@ -5603,7 +5623,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = core_message_external::get_conversations($user1->id);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc2->id, $conversations[1]['id']);
|
||||
$this->assertcount(1, $conversations[1]['members']);
|
||||
$this->assertEquals($user4->id, $conversations[1]['members'][0]['id']);
|
||||
@ -5611,13 +5631,13 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals($user4->id, $conversations[1]['messages'][0]['useridfrom']);
|
||||
|
||||
// Delete the third user and retrieve the conversations.
|
||||
// We should have 6 still, as conversations with soft-deleted users are still returned.
|
||||
// We should have 7 still (including self-conversation), as conversations with soft-deleted users are still returned.
|
||||
// Group conversations are also present, albeit with less members.
|
||||
delete_user($user3);
|
||||
$result = core_message_external::get_conversations($user1->id);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
$this->assertEquals($gc3->id, $conversations[0]['id']);
|
||||
$this->assertcount(1, $conversations[0]['members']);
|
||||
$this->assertEquals($gc2->id, $conversations[1]['id']);
|
||||
@ -5626,6 +5646,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$this->assertEquals($ic1->id, $conversations[3]['id']);
|
||||
$this->assertEquals($gc5->id, $conversations[4]['id']);
|
||||
$this->assertEquals($gc4->id, $conversations[5]['id']);
|
||||
$this->assertEquals($selfconversation->id, $conversations[6]['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -5696,6 +5717,10 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
// The user making the request.
|
||||
$this->setUser($user1);
|
||||
|
||||
// Unset favourite self-conversation.
|
||||
$selfconversation = \core_message\api::get_self_conversation($user1->id);
|
||||
\core_message\api::unset_favourite_conversation($selfconversation->id, $user1->id);
|
||||
|
||||
// Try to get ONLY favourite conversations, when no favourites exist.
|
||||
$result = core_message_external::get_conversations($user1->id, 0, 20, null, true);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
@ -5706,7 +5731,8 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = core_message_external::get_conversations($user1->id, 0, 20, null, false);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(6, $conversations);
|
||||
// Consider first conversations is self-conversation.
|
||||
$this->assertCount(7, $conversations);
|
||||
|
||||
// Mark a few conversations as favourites.
|
||||
\core_message\api::set_favourite_conversation($ic1->id, $user1->id);
|
||||
@ -5717,7 +5743,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = core_message_external::get_conversations($user1->id);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(6, $conversations);
|
||||
$this->assertCount(7, $conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
if (in_array($conv['id'], [$ic1->id, $gc2->id, $gc5->id])) {
|
||||
$this->assertTrue($conv['isfavourite']);
|
||||
@ -5745,7 +5771,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
$result = core_message_external::get_conversations($user1->id, 0, 20, null, false);
|
||||
$result = external_api::clean_returnvalue(core_message_external::get_conversations_returns(), $result);
|
||||
$conversations = $result['conversations'];
|
||||
$this->assertCount(3, $conversations);
|
||||
$this->assertCount(4, $conversations);
|
||||
foreach ($conversations as $conv) {
|
||||
$this->assertFalse($conv['isfavourite']);
|
||||
}
|
||||
@ -5897,6 +5923,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
return $first['id'] > $second['id'];
|
||||
});
|
||||
|
||||
$selfconversation = array_shift($conversations);
|
||||
$conv1 = array_shift($conversations);
|
||||
$conv2 = array_shift($conversations);
|
||||
$conv3 = array_shift($conversations);
|
||||
@ -6627,7 +6654,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user5],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6644,7 +6671,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user4],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6661,7 +6688,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6678,7 +6705,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user2],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6695,7 +6722,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user4],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6712,7 +6739,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6729,7 +6756,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6746,7 +6773,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0, 1, 2],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6763,7 +6790,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3, 4, 5],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6780,7 +6807,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [0, 1, 2],
|
||||
'arguments' => [$user2],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6797,7 +6824,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [3, 4, 5],
|
||||
'arguments' => [$user3],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 2,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6814,7 +6841,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [6, 7],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6831,7 +6858,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => $user1,
|
||||
'deletemessages' => [6, 7, 8, 9],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6848,7 +6875,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6865,7 +6892,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user1],
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 2, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 1,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6882,7 +6909,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user6],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
@ -6899,7 +6926,7 @@ class core_message_externallib_testcase extends externallib_advanced_testcase {
|
||||
'deletemessagesuser' => null,
|
||||
'deletemessages' => [],
|
||||
'arguments' => [$user7],
|
||||
'expectedcounts' => ['favourites' => 0, 'types' => [
|
||||
'expectedcounts' => ['favourites' => 1, 'types' => [
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_INDIVIDUAL => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_GROUP => 0,
|
||||
\core_message\api::MESSAGE_CONVERSATION_TYPE_SELF => 0
|
||||
|
@ -211,6 +211,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->resetAfterTest();
|
||||
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
|
||||
$contextlist = provider::get_contexts_for_userid($user->id);
|
||||
$this->assertCount(1, $contextlist);
|
||||
|
||||
$this->remove_user_self_conversation($user->id);
|
||||
|
||||
$contextlist = provider::get_contexts_for_userid($user->id);
|
||||
$this->assertEmpty($contextlist);
|
||||
}
|
||||
@ -225,6 +231,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
|
||||
// Test nothing is found before group conversations is created or message is sent.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -267,6 +278,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user4 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
|
||||
// Test nothing is found before group conversations is created or message is sent.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -359,6 +376,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1 = $this->getDataGenerator()->create_user();
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before notification is created.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -393,6 +414,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1 = $this->getDataGenerator()->create_user();
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before contact is created.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -427,6 +452,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1 = $this->getDataGenerator()->create_user();
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before request is created.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -461,6 +490,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1 = $this->getDataGenerator()->create_user();
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before user is blocked.
|
||||
$contextlist = provider::get_contexts_for_userid($user1->id);
|
||||
$this->assertCount(0, $contextlist);
|
||||
@ -498,6 +531,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user4 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
|
||||
\core_message\api::add_contact($user1->id, $user2->id);
|
||||
\core_message\api::add_contact($user1->id, $user3->id);
|
||||
\core_message\api::add_contact($user1->id, $user4->id);
|
||||
@ -535,6 +574,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user4 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
|
||||
\core_message\api::create_contact_request($user1->id, $user2->id);
|
||||
\core_message\api::create_contact_request($user3->id, $user1->id);
|
||||
\core_message\api::create_contact_request($user1->id, $user4->id);
|
||||
@ -574,6 +619,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user4 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
|
||||
\core_message\api::block_user($user1->id, $user2->id);
|
||||
\core_message\api::block_user($user1->id, $user3->id);
|
||||
\core_message\api::block_user($user1->id, $user4->id);
|
||||
@ -611,6 +662,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
|
||||
$now = time();
|
||||
|
||||
// Send messages from user 1 to user 2.
|
||||
@ -718,6 +774,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user1context = \context_user::instance($user1->id);
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
|
||||
$course1 = $this->getDataGenerator()->create_course();
|
||||
$course2 = $this->getDataGenerator()->create_course();
|
||||
$coursecontext1 = \context_course::instance($course1->id);
|
||||
@ -814,6 +875,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user2 = $this->getDataGenerator()->create_user();
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Remove user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
|
||||
$now = time();
|
||||
$timeread = $now - DAYSECS;
|
||||
|
||||
@ -906,8 +972,8 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 2 user actions - one for reading the message, one for deleting.
|
||||
$this->assertEquals(2, $DB->count_records('message_user_actions'));
|
||||
|
||||
// There should be 4 conversation members.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversation_members'));
|
||||
// There should be 4 conversation members + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 5 notifications (3 from create_notification and 2 from create_contact_request).
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
@ -943,8 +1009,8 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// And it is not for user1.
|
||||
$this->assertEquals(0, $DB->count_records('message_user_actions', ['userid' => $user1->id]));
|
||||
|
||||
// Confirm there are only 3 conversation members left.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_members'));
|
||||
// Confirm there are only 3 conversation members left + 4 self-conversations.
|
||||
$this->assertEquals(7, $DB->count_records('message_conversation_members'));
|
||||
// And user1 is not in any conversation.
|
||||
$this->assertEquals(0, $DB->count_records('message_conversation_members', ['userid' => $user1->id]));
|
||||
|
||||
@ -953,6 +1019,18 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// And it is not related to user1.
|
||||
$this->assertEquals(0,
|
||||
$DB->count_records_select('notifications', 'useridfrom = ? OR useridto = ? ', [$user1->id, $user1->id]));
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
$this->remove_user_self_conversation($user5->id);
|
||||
|
||||
// Confirm there are only 3 conversation members left.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_members'));
|
||||
// And user1 is not in any conversation.
|
||||
$this->assertEquals(0, $DB->count_records('message_conversation_members', ['userid' => $user1->id]));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1013,8 +1091,8 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be two user actions - one for reading the message, one for deleting.
|
||||
$this->assertEquals(2, $DB->count_records('message_user_actions'));
|
||||
|
||||
// There should be two conversation members.
|
||||
$this->assertEquals(2, $DB->count_records('message_conversation_members'));
|
||||
// There should be two conversation members + 6 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 5 notifications (3 from create_notification and 2 from create_contact_request).
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
@ -1054,7 +1132,7 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
|
||||
$this->assertCount(0, $muas);
|
||||
|
||||
$this->assertCount(1, $mcms);
|
||||
$this->assertCount(6, $mcms);
|
||||
$mcm = reset($mcms);
|
||||
$this->assertEquals($user2->id, $mcm->userid);
|
||||
|
||||
@ -1074,6 +1152,7 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
|
||||
$user = $this->getDataGenerator()->create_user();
|
||||
$usercontext = context_user::instance($user->id);
|
||||
$this->remove_user_self_conversation($user->id);
|
||||
|
||||
$userlist = new \core_privacy\local\request\userlist($usercontext, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1093,6 +1172,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1context = context_user::instance($user1->id);
|
||||
$user2context = context_user::instance($user2->id);
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before message is sent.
|
||||
$userlist = new \core_privacy\local\request\userlist($user1context, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1130,6 +1213,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1context = context_user::instance($user1->id);
|
||||
$user2context = context_user::instance($user2->id);
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before notification is created.
|
||||
$userlist = new \core_privacy\local\request\userlist($user1context, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1167,6 +1254,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1context = context_user::instance($user1->id);
|
||||
$user2context = context_user::instance($user2->id);
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before contact is created.
|
||||
$userlist = new \core_privacy\local\request\userlist($user1context, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1204,6 +1295,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1context = context_user::instance($user1->id);
|
||||
$user2context = context_user::instance($user2->id);
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before request is created.
|
||||
$userlist = new \core_privacy\local\request\userlist($user1context, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1241,6 +1336,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user1context = context_user::instance($user1->id);
|
||||
$user2context = context_user::instance($user2->id);
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
|
||||
// Test nothing is found before user is blocked.
|
||||
$userlist = new \core_privacy\local\request\userlist($user1context, 'core_message');
|
||||
\core_message\privacy\provider::get_users_in_context($userlist);
|
||||
@ -1324,8 +1423,8 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be two user actions - one for reading the message, one for deleting.
|
||||
$this->assertEquals(2, $DB->count_records('message_user_actions'));
|
||||
|
||||
// There should be two conversation members.
|
||||
$this->assertEquals(2, $DB->count_records('message_conversation_members'));
|
||||
// There should be two conversation members + 6 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be three notifications + two for the contact requests.
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
@ -1367,7 +1466,7 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
|
||||
$this->assertCount(0, $muas);
|
||||
|
||||
$this->assertCount(1, $mcms);
|
||||
$this->assertCount(6, $mcms);
|
||||
$mcm = reset($mcms);
|
||||
$this->assertEquals($user2->id, $mcm->userid);
|
||||
|
||||
@ -1393,6 +1492,12 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$user3 = $this->getDataGenerator()->create_user();
|
||||
$user4 = $this->getDataGenerator()->create_user();
|
||||
|
||||
// Delete user self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
|
||||
// Test nothing is found before group conversations is created or message is sent.
|
||||
$contextlist = new contextlist();
|
||||
provider::add_contexts_for_conversations($contextlist, $user1->id, $component, $itemtype);
|
||||
@ -1871,17 +1976,17 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 3 muted conversations.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be 4 conversations - 2 individual + 2 group.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
// There should be 4 conversations - 2 individual + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group + 5 self-conversations.
|
||||
$this->assertEquals(14 , $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 5 notifications (3 from create_notification and 2 from create_contact_request).
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
|
||||
// There should be 3 favourite conversations.
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be 3 favourite conversations + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete conversations for all users in course1.
|
||||
provider::delete_conversations_for_all_users($coursecontext1, $component, $itemtype);
|
||||
@ -1918,16 +2023,16 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
}, $useractions);
|
||||
$this->assertNotContains($gm3, $useractions);
|
||||
|
||||
// There should be 3 conversations - 2 individual + 1 group (course2).
|
||||
$this->assertEquals(3, $DB->count_records('message_conversations'));
|
||||
// There should be 3 conversations - 2 individual + 1 group (course2) + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversations'));
|
||||
$conversations = $DB->get_records('message_conversations');
|
||||
$this->assertArrayNotHasKey($conversation1->id, $conversations);
|
||||
|
||||
// There should be 6 conversation members - (2 + 2) individual + 2 group.
|
||||
$this->assertEquals(6, $DB->count_records('message_conversation_members'));
|
||||
// There should be 6 conversation members - (2 + 2) individual + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(11, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 1 favourite conversation - the individual one.
|
||||
$this->assertEquals(1, $DB->count_records('favourite'));
|
||||
// There should be 1 favourite conversation - the individual one + 5 self-conversations.
|
||||
$this->assertEquals(6, $DB->count_records('favourite'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2055,17 +2160,17 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 3 muted conversations.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be 4 conversations - 2 individual + 2 group.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
// There should be 4 conversations - 2 individual + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group + 5 self-conversations.
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 5 notifications (3 from create_notification and 2 from create_contact_request).
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
|
||||
// There should be 3 favourite conversations.
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be 3 favourite conversations + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete group conversations for all users in system context.
|
||||
provider::delete_conversations_for_all_users($systemcontext, $component, $itemtype);
|
||||
@ -2077,10 +2182,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(8, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete individual conversations for all users in system context.
|
||||
provider::delete_conversations_for_all_users($systemcontext, '', '');
|
||||
@ -2092,10 +2197,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(8, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2224,17 +2329,17 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 3 muted conversations.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be 4 conversations - 2 individual + 2 group.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
// There should be 4 conversations - 2 individual + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
// There should be 9 conversation members - (2 + 2) individual + (3 + 2) group + 5 self-conversations.
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// There should be 5 notifications (3 from create_notification and 2 from create_contact_request).
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
|
||||
// There should be 3 favourite conversations.
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be 3 favourite conversations + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete group conversations for all users in user context.
|
||||
provider::delete_conversations_for_all_users($user1context, $component, $itemtype);
|
||||
@ -2246,10 +2351,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(8, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete individual conversations for all users in user context.
|
||||
provider::delete_conversations_for_all_users($user1context, '', '');
|
||||
@ -2261,10 +2366,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(8, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(14, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(5, $DB->count_records('notifications'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2384,19 +2489,19 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 3 users muting a conversation.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be 3 conversations - 2 private + 1 group.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversations'));
|
||||
// There should be 3 conversations - 2 private + 1 group + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 7 conversation members - 2 + 2 private conversations + 3 group conversation.
|
||||
$this->assertEquals(7, $DB->count_records('message_conversation_members'));
|
||||
// There should be 7 conversation members - 2 + 2 private conversations + 3 group conversation + 5 self-conversations.
|
||||
$this->assertEquals(12, $DB->count_records('message_conversation_members'));
|
||||
$members = $DB->get_records('message_conversation_members', ['conversationid' => $conversation1->id]);
|
||||
$members = array_map(function($member) {
|
||||
return $member->userid;
|
||||
}, $members);
|
||||
$this->assertContains($user1->id, $members);
|
||||
|
||||
// There should be three favourite conversations.
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be three favourite conversations + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete group conversations for user1 in course1 and course2.
|
||||
$approvedcontextlist = new \core_privacy\tests\request\approved_contextlist($user1, 'core_message',
|
||||
@ -2434,17 +2539,24 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
}, $useractions);
|
||||
$this->assertNotContains($gm3, $useractions);
|
||||
|
||||
// There should be still 3 conversations - 2 private + 1 group.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversations'));
|
||||
// There should be still 3 conversations - 2 private + 1 group + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 6 conversation members - 2 + 2 private conversations + 2 group conversation.
|
||||
$this->assertEquals(6, $DB->count_records('message_conversation_members'));
|
||||
// There should be 6 conversation members - 2 + 2 private conversations + 2 group conversation + 5 self-conversations.
|
||||
$this->assertEquals(11, $DB->count_records('message_conversation_members'));
|
||||
$members = $DB->get_records('message_conversation_members', ['conversationid' => $conversation1->id]);
|
||||
$members = array_map(function($member) {
|
||||
return $member->userid;
|
||||
}, $members);
|
||||
$this->assertNotContains($user1->id, $members);
|
||||
|
||||
// Unset favourite self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
$this->remove_user_self_conversation($user5->id);
|
||||
|
||||
// There should be 2 favourite conversations - 2 group.
|
||||
$this->assertEquals(2, $DB->count_records('favourite'));
|
||||
$favourites = $DB->get_records('favourite');
|
||||
@ -2578,11 +2690,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 3 muted conversation.
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be 3 conversations - 2 private + 2 group.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
// There should be 3 conversations - 2 private + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 8 conversation members - (2 + 2) private + 4 group.
|
||||
$this->assertEquals(8, $DB->count_records('message_conversation_members'));
|
||||
// There should be 8 conversation members - (2 + 2) private + 4 group + 5 self-conversations.
|
||||
$this->assertEquals(13, $DB->count_records('message_conversation_members'));
|
||||
$members = $DB->get_records('message_conversation_members', ['conversationid' => $conversation1->id]);
|
||||
$members = array_map(function($member) {
|
||||
return $member->userid;
|
||||
@ -2590,8 +2702,8 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertContains($user1->id, $members);
|
||||
$this->assertContains($user4->id, $members);
|
||||
|
||||
// There should be 3 favourite conversations.
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be 3 favourite conversations + 5 self-conversations.
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete group conversations for user1 and user2 in course2 context.
|
||||
$approveduserlist = new \core_privacy\local\request\approved_userlist($coursecontext2, 'core_message',
|
||||
@ -2606,9 +2718,9 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(6, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(8, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(13, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
|
||||
// Delete group conversations for user4 in course1 context.
|
||||
$approveduserlist = new \core_privacy\local\request\approved_userlist($coursecontext1, 'core_message',
|
||||
@ -2623,10 +2735,10 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertEquals(6, $DB->count_records('messages'));
|
||||
$this->assertEquals(4, $DB->count_records('message_user_actions'));
|
||||
$this->assertEquals(3, $DB->count_records('message_conversation_actions'));
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(3, $DB->count_records('favourite'));
|
||||
// There should be 7 conversation members - (2 + 2) private + 3 group.
|
||||
$this->assertEquals(7, $DB->count_records('message_conversation_members'));
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
$this->assertEquals(8, $DB->count_records('favourite'));
|
||||
// There should be 7 conversation members - (2 + 2) private + 3 group + 5 self-conversations.
|
||||
$this->assertEquals(12, $DB->count_records('message_conversation_members'));
|
||||
|
||||
// Delete group conversations for user1 and user2 in course1 context.
|
||||
$approveduserlist = new \core_privacy\local\request\approved_userlist($coursecontext1, 'core_message',
|
||||
@ -2664,11 +2776,11 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
// There should be 1 muted conversation.
|
||||
$this->assertEquals(1, $DB->count_records('message_conversation_actions'));
|
||||
|
||||
// There should be still 4 conversations - 2 private + 2 group.
|
||||
$this->assertEquals(4, $DB->count_records('message_conversations'));
|
||||
// There should be still 4 conversations - 2 private + 2 group + 5 self-conversations.
|
||||
$this->assertEquals(9, $DB->count_records('message_conversations'));
|
||||
|
||||
// There should be 5 conversation members - (2 + 2) private + 1 group.
|
||||
$this->assertEquals(5, $DB->count_records('message_conversation_members'));
|
||||
// There should be 5 conversation members - (2 + 2) private + 1 group + 5 self-conversations.
|
||||
$this->assertEquals(10, $DB->count_records('message_conversation_members'));
|
||||
$members = $DB->get_records('message_conversation_members', ['conversationid' => $conversation1->id]);
|
||||
$members = array_map(function($member) {
|
||||
return $member->userid;
|
||||
@ -2676,6 +2788,13 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
$this->assertNotContains($user1->id, $members);
|
||||
$this->assertNotContains($user2->id, $members);
|
||||
|
||||
// Unset favourite self-conversations.
|
||||
$this->remove_user_self_conversation($user1->id);
|
||||
$this->remove_user_self_conversation($user2->id);
|
||||
$this->remove_user_self_conversation($user3->id);
|
||||
$this->remove_user_self_conversation($user4->id);
|
||||
$this->remove_user_self_conversation($user5->id);
|
||||
|
||||
// There should be 2 favourite conversations - user1 individual + user3 group.
|
||||
$this->assertEquals(2, $DB->count_records('favourite'));
|
||||
$favourites = $DB->get_records('favourite');
|
||||
@ -2794,4 +2913,17 @@ class core_message_privacy_provider_testcase extends \core_privacy\tests\provide
|
||||
protected static function sort_contacts($a, $b) {
|
||||
return $a->contact > $b->contact;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to unset favourite and delete all conversation data for a user's self-conversation.
|
||||
*
|
||||
* @param int $userid The user id
|
||||
* @return void
|
||||
* @throws moodle_exception
|
||||
*/
|
||||
protected static function remove_user_self_conversation(int $userid) {
|
||||
$selfconversation = \core_message\api::get_self_conversation($userid);
|
||||
\core_message\api::unset_favourite_conversation($selfconversation->id, $userid);
|
||||
\core_message\api::delete_all_conversation_data($selfconversation->id);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user