Merge branch 'MDL-58399-master' of git://github.com/jleyva/moodle
[moodle.git] / mod / forum / tests / externallib_test.php
index 3f141b9..e3ee2b6 100644 (file)
@@ -94,6 +94,7 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
         $forum1->numdiscussions = 1;
         $forum1->cancreatediscussions = true;
         $forum1->istracked = true;
+        $forum1->unreadpostscount = 0;
         $forum1->introfiles = [];
 
         $record = new stdClass();
@@ -215,6 +216,7 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
         $record = new stdClass();
         $record->course = $course1->id;
         $forum2 = self::getDataGenerator()->create_module('forum', $record);
+        $forum2cm = get_coursemodule_from_id('forum', $forum2->cmid);
         $forum2context = context_module::instance($forum2->cmid);
 
         // Add discussions to the forums.
@@ -353,6 +355,16 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
         array_pop($posts['posts']);
         $this->assertEquals($expectedposts, $posts);
 
+        // Check we receive the unread count correctly on tracked forum.
+        forum_tp_count_forum_unread_posts($forum2cm, $course1, true);    // Reset static cache.
+        $result = mod_forum_external::get_forums_by_courses(array($course1->id));
+        $result = external_api::clean_returnvalue(mod_forum_external::get_forums_by_courses_returns(), $result);
+        foreach ($result as $f) {
+            if ($f['id'] == $forum2->id) {
+                $this->assertEquals(1, $f['unreadpostscount']);
+            }
+        }
+
         // Test discussion without additional posts. There should be only one post (the one created by the discussion).
         $posts = mod_forum_external::get_forum_discussion_posts($discussion2->id, 'modified', 'DESC');
         $posts = external_api::clean_returnvalue(mod_forum_external::get_forum_discussion_posts_returns(), $posts);
@@ -383,6 +395,16 @@ class mod_forum_external_testcase extends externallib_advanced_testcase {
         foreach ($posts['posts'] as $post) {
             $this->assertTrue($post['postread']);
         }
+
+        // Check we receive 0 unread posts.
+        forum_tp_count_forum_unread_posts($forum2cm, $course1, true);    // Reset static cache.
+        $result = mod_forum_external::get_forums_by_courses(array($course1->id));
+        $result = external_api::clean_returnvalue(mod_forum_external::get_forums_by_courses_returns(), $result);
+        foreach ($result as $f) {
+            if ($f['id'] == $forum2->id) {
+                $this->assertEquals(0, $f['unreadpostscount']);
+            }
+        }
     }
 
     /**