コード例 #1
0
 /**
  * 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']);
 }