From 407f5d053cce1e767c1f65e7814a33a7b2e6c278 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Mon, 28 May 2018 08:52:50 +0800 Subject: [PATCH] MDL-62543 mod_forum: Add RSS Unit tests --- mod/forum/tests/rsslib_test.php | 102 ++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 mod/forum/tests/rsslib_test.php diff --git a/mod/forum/tests/rsslib_test.php b/mod/forum/tests/rsslib_test.php new file mode 100644 index 00000000000..8b0e3620444 --- /dev/null +++ b/mod/forum/tests/rsslib_test.php @@ -0,0 +1,102 @@ +. + +/** + * Tests for the forum implementation of the RSS component. + * + * @package mod_forum + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +global $CFG; +require_once(__DIR__ . '/helper.php'); +require_once("{$CFG->dirroot}/mod/forum/rsslib.php"); + +/** + * Tests for the forum implementation of the RSS component. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class mod_forum_rsslib_testcase extends advanced_testcase { + // Include the mod_forum test helpers. + // This includes functions to create forums, users, discussions, and posts. + use helper; + + /** + * Ensure that deleted posts are not included. + */ + public function test_forum_rss_feed_discussions_sql_respect_deleted() { + global $DB; + + $this->resetAfterTest(); + + $course = $this->getDataGenerator()->create_course(); + $forum = $this->getDataGenerator()->create_module('forum', ['course' => $course->id]); + $cm = get_coursemodule_from_instance('forum', $forum->id); + + list($user, $otheruser) = $this->helper_create_users($course, 2); + + // Post twice. + $this->helper_post_to_forum($forum, $otheruser); + list($discussion, $post) = $this->helper_post_to_forum($forum, $otheruser); + + list($sql, $params) = forum_rss_feed_discussions_sql($forum, $cm); + $discussions = $DB->get_records_sql($sql, $params); + $this->assertCount(2, $discussions); + + $post->deleted = 1; + $DB->update_record('forum_posts', $post); + + list($sql, $params) = forum_rss_feed_discussions_sql($forum, $cm); + $discussions = $DB->get_records_sql($sql, $params); + $this->assertCount(1, $discussions); + } + + + /** + * Ensure that deleted posts are not included. + */ + public function test_forum_rss_feed_posts_sql_respect_deleted() { + global $DB; + + $this->resetAfterTest(); + + $course = $this->getDataGenerator()->create_course(); + $forum = $this->getDataGenerator()->create_module('forum', ['course' => $course->id]); + $cm = get_coursemodule_from_instance('forum', $forum->id); + + list($user, $otheruser) = $this->helper_create_users($course, 2); + + // Post twice. + $this->helper_post_to_forum($forum, $otheruser); + list($discussion, $post) = $this->helper_post_to_forum($forum, $otheruser); + + list($sql, $params) = forum_rss_feed_posts_sql($forum, $cm); + $posts = $DB->get_records_sql($sql, $params); + $this->assertCount(2, $posts); + + $post->deleted = 1; + $DB->update_record('forum_posts', $post); + + list($sql, $params) = forum_rss_feed_posts_sql($forum, $cm); + $posts = $DB->get_records_sql($sql, $params); + $this->assertCount(1, $posts); + } +} -- 2.43.0