/** * Tests retrieving conversations as another user. */ public function test_messagearea_conversations_as_other_user() { $this->resetAfterTest(true); // Set as admin. $this->setAdminUser(); // Create some users. $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); $user3 = self::getDataGenerator()->create_user(); $user4 = self::getDataGenerator()->create_user(); // Send some messages back and forth, have some different conversations with different users. $time = time(); $this->send_message($user1, $user2, 'Yo!', 0, $time); $this->send_message($user2, $user1, 'Sup mang?', 0, $time + 1); $this->send_message($user1, $user2, 'Writing PHPUnit tests!', 0, $time + 2); $this->send_message($user2, $user1, 'Word.', 0, $time + 3); $this->send_message($user1, $user3, 'Booyah', 0, $time + 4); $this->send_message($user3, $user1, 'Whaaat?', 0, $time + 5); $this->send_message($user1, $user3, 'Nothing.', 0, $time + 6); $this->send_message($user3, $user1, 'Cool.', 0, $time + 7); $this->send_message($user1, $user4, 'Hey mate, you see the new messaging UI in Moodle?', 0, $time + 8); $this->send_message($user4, $user1, 'Yah brah, it\'s pretty rad.', 0, $time + 9); $this->send_message($user1, $user4, 'Dope.', 0, $time + 10); // Retrieve the conversations. $result = core_message_external::data_for_messagearea_conversations($user1->id); // We need to execute the return values cleaning process to simulate the web service server. $result = external_api::clean_returnvalue(core_message_external::data_for_messagearea_conversations_returns(), $result); // Confirm the data is correct. $messages = $result['contacts']; $this->assertCount(3, $messages); $message1 = $messages[0]; $message2 = $messages[1]; $message3 = $messages[2]; $this->assertEquals($user4->id, $message1['userid']); $this->assertTrue($message1['ismessaging']); $this->assertTrue($message1['sentfromcurrentuser']); $this->assertEquals('Dope.', $message1['lastmessage']); $this->assertNull($message1['messageid']); $this->assertFalse($message1['isonline']); $this->assertTrue($message1['isread']); $this->assertFalse($message1['isblocked']); $this->assertEquals(0, $message1['unreadcount']); $this->assertEquals($user3->id, $message2['userid']); $this->assertTrue($message2['ismessaging']); $this->assertFalse($message2['sentfromcurrentuser']); $this->assertEquals('Cool.', $message2['lastmessage']); $this->assertNull($message2['messageid']); $this->assertFalse($message2['isonline']); $this->assertFalse($message2['isread']); $this->assertFalse($message2['isblocked']); $this->assertEquals(2, $message2['unreadcount']); $this->assertEquals($user2->id, $message3['userid']); $this->assertTrue($message3['ismessaging']); $this->assertFalse($message3['sentfromcurrentuser']); $this->assertEquals('Word.', $message3['lastmessage']); $this->assertNull($message3['messageid']); $this->assertFalse($message3['isonline']); $this->assertFalse($message3['isread']); $this->assertFalse($message3['isblocked']); $this->assertEquals(2, $message3['unreadcount']); }