Merge branch 'MDL-56407-master-2' of git://github.com/junpataleta/moodle
[moodle.git] / message / tests / api_test.php
index 803ae64..8883993 100644 (file)
@@ -953,4 +953,129 @@ class core_message_api_testcase extends core_message_messagelib_testcase {
         $status = \core_message\api::is_processor_enabled($name);
         $this->assertEquals(1, $status);
     }
+
+    /**
+     * Test retrieving messages by providing a minimum timecreated value.
+     */
+    public function test_get_messages_time_from_only() {
+        // Create some users.
+        $user1 = self::getDataGenerator()->create_user();
+        $user2 = self::getDataGenerator()->create_user();
+
+        // The person doing the search.
+        $this->setUser($user1);
+
+        // Send some messages back and forth.
+        $time = 1;
+        $this->send_fake_message($user1, $user2, 'Message 1', 0, $time + 1);
+        $this->send_fake_message($user2, $user1, 'Message 2', 0, $time + 2);
+        $this->send_fake_message($user1, $user2, 'Message 3', 0, $time + 3);
+        $this->send_fake_message($user2, $user1, 'Message 4', 0, $time + 4);
+
+        // Retrieve the messages from $time, which should be all of them.
+        $messages = \core_message\api::get_messages($user1->id, $user2->id, 0, 0, 'timecreated ASC', $time);
+
+        // Confirm the message data is correct.
+        $this->assertEquals(4, count($messages));
+
+        $message1 = $messages[0];
+        $message2 = $messages[1];
+        $message3 = $messages[2];
+        $message4 = $messages[3];
+
+        $this->assertContains('Message 1', $message1->text);
+        $this->assertContains('Message 2', $message2->text);
+        $this->assertContains('Message 3', $message3->text);
+        $this->assertContains('Message 4', $message4->text);
+
+        // Retrieve the messages from $time + 3, which should only be the 2 last messages.
+        $messages = \core_message\api::get_messages($user1->id, $user2->id, 0, 0, 'timecreated ASC', $time + 3);
+
+        // Confirm the message data is correct.
+        $this->assertEquals(2, count($messages));
+
+        $message1 = $messages[0];
+        $message2 = $messages[1];
+
+        $this->assertContains('Message 3', $message1->text);
+        $this->assertContains('Message 4', $message2->text);
+    }
+
+    /**
+     * Test retrieving messages by providing a maximum timecreated value.
+     */
+    public function test_get_messages_time_to_only() {
+        // Create some users.
+        $user1 = self::getDataGenerator()->create_user();
+        $user2 = self::getDataGenerator()->create_user();
+
+        // The person doing the search.
+        $this->setUser($user1);
+
+        // Send some messages back and forth.
+        $time = 1;
+        $this->send_fake_message($user1, $user2, 'Message 1', 0, $time + 1);
+        $this->send_fake_message($user2, $user1, 'Message 2', 0, $time + 2);
+        $this->send_fake_message($user1, $user2, 'Message 3', 0, $time + 3);
+        $this->send_fake_message($user2, $user1, 'Message 4', 0, $time + 4);
+
+        // Retrieve the messages up until $time + 4, which should be all of them.
+        $messages = \core_message\api::get_messages($user1->id, $user2->id, 0, 0, 'timecreated ASC', 0, $time + 4);
+
+        // Confirm the message data is correct.
+        $this->assertEquals(4, count($messages));
+
+        $message1 = $messages[0];
+        $message2 = $messages[1];
+        $message3 = $messages[2];
+        $message4 = $messages[3];
+
+        $this->assertContains('Message 1', $message1->text);
+        $this->assertContains('Message 2', $message2->text);
+        $this->assertContains('Message 3', $message3->text);
+        $this->assertContains('Message 4', $message4->text);
+
+        // Retrieve the messages up until $time + 2, which should be the first two.
+        $messages = \core_message\api::get_messages($user1->id, $user2->id, 0, 0, 'timecreated ASC', 0, $time + 2);
+
+        // Confirm the message data is correct.
+        $this->assertEquals(2, count($messages));
+
+        $message1 = $messages[0];
+        $message2 = $messages[1];
+
+        $this->assertContains('Message 1', $message1->text);
+        $this->assertContains('Message 2', $message2->text);
+    }
+
+    /**
+     * Test retrieving messages by providing a minimum and maximum timecreated value.
+     */
+    public function test_get_messages_time_from_and_to() {
+        // Create some users.
+        $user1 = self::getDataGenerator()->create_user();
+        $user2 = self::getDataGenerator()->create_user();
+
+        // The person doing the search.
+        $this->setUser($user1);
+
+        // Send some messages back and forth.
+        $time = 1;
+        $this->send_fake_message($user1, $user2, 'Message 1', 0, $time + 1);
+        $this->send_fake_message($user2, $user1, 'Message 2', 0, $time + 2);
+        $this->send_fake_message($user1, $user2, 'Message 3', 0, $time + 3);
+        $this->send_fake_message($user2, $user1, 'Message 4', 0, $time + 4);
+
+        // Retrieve the messages from $time + 2 up until $time + 3, which should be 2nd and 3rd message.
+        $messages = \core_message\api::get_messages($user1->id, $user2->id, 0, 0, 'timecreated ASC', $time + 2, $time + 3);
+
+        // Confirm the message data is correct.
+        $this->assertEquals(2, count($messages));
+
+        $message1 = $messages[0];
+        $message2 = $messages[1];
+
+        $this->assertContains('Message 2', $message1->text);
+        $this->assertContains('Message 3', $message2->text);
+    }
 }