/** * Tests retrieving messages as another user. */ public function test_messagearea_messages_as_other_user() { $this->resetAfterTest(true); // Set as admin. $this->setAdminUser(); // Create some users. $user1 = self::getDataGenerator()->create_user(); $user2 = self::getDataGenerator()->create_user(); // Send some messages back and forth. $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); // Retrieve the messages. $result = core_message_external::data_for_messagearea_messages($user1->id, $user2->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_messages_returns(), $result); // Check the results are correct. $this->assertFalse($result['iscurrentuser']); $this->assertEquals($user1->id, $result['currentuserid']); $this->assertEquals($user2->id, $result['otheruserid']); $this->assertEquals(fullname($user2), $result['otheruserfullname']); $this->assertFalse($result['isonline']); // Confirm the message data is correct. $messages = $result['messages']; $this->assertCount(4, $messages); $message1 = $messages[0]; $message2 = $messages[1]; $message3 = $messages[2]; $message4 = $messages[3]; $this->assertEquals($user1->id, $message1['useridfrom']); $this->assertEquals($user2->id, $message1['useridto']); $this->assertTrue($message1['displayblocktime']); $this->assertContains('Yo!', $message1['text']); $this->assertEquals($user2->id, $message2['useridfrom']); $this->assertEquals($user1->id, $message2['useridto']); $this->assertFalse($message2['displayblocktime']); $this->assertContains('Sup mang?', $message2['text']); $this->assertEquals($user1->id, $message3['useridfrom']); $this->assertEquals($user2->id, $message3['useridto']); $this->assertFalse($message3['displayblocktime']); $this->assertContains('Writing PHPUnit tests!', $message3['text']); $this->assertEquals($user2->id, $message4['useridfrom']); $this->assertEquals($user1->id, $message4['useridto']); $this->assertFalse($message4['displayblocktime']); $this->assertContains('Word.', $message4['text']); }