From 8d600233d38739b8070a5fcdb2cae9bcedadc7b6 Mon Sep 17 00:00:00 2001 From: Sara Arjona Date: Tue, 14 Dec 2021 18:15:56 +0100 Subject: [PATCH] MDL-73339 blog_tags: Add block only if main feature is enabled The Blog tags block should be added only if the blogs and the tags advanced features are enabled. --- blocks/blog_tags/block_blog_tags.php | 14 ++++- blocks/blog_tags/tests/blog_tags_test.php | 71 +++++++++++++++++++++++ 2 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 blocks/blog_tags/tests/blog_tags_test.php diff --git a/blocks/blog_tags/block_blog_tags.php b/blocks/blog_tags/block_blog_tags.php index 8b26a3c1270..7acfa691442 100644 --- a/blocks/blog_tags/block_blog_tags.php +++ b/blocks/blog_tags/block_blog_tags.php @@ -222,6 +222,18 @@ class block_blog_tags extends block_base { 'plugin' => new stdClass(), ]; } + + /** + * This block shouldn't be added to a page if the blogs and the tags advanced features are disabled. + * + * @param moodle_page $page + * @return bool + */ + public function can_block_be_added(moodle_page $page): bool { + global $CFG; + + return $CFG->enableblogs && $CFG->usetags; + } } function block_blog_tags_sort($a, $b) { @@ -241,5 +253,3 @@ function block_blog_tags_sort($a, $b) { return 0; } } - - diff --git a/blocks/blog_tags/tests/blog_tags_test.php b/blocks/blog_tags/tests/blog_tags_test.php new file mode 100644 index 00000000000..27f0fbd19ca --- /dev/null +++ b/blocks/blog_tags/tests/blog_tags_test.php @@ -0,0 +1,71 @@ +. + +namespace block_blog_tags\tests; + +use advanced_testcase; +use block_blog_tags; +use context_course; + +/** + * PHPUnit block_blog_tags tests + * + * @package block_blog_tags + * @category test + * @copyright 2021 Sara Arjona (sara@moodle.com) + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @coversDefaultClass \block_blog_tags + */ +class blog_tags_test extends advanced_testcase { + public static function setUpBeforeClass(): void { + require_once(__DIR__ . '/../../moodleblock.class.php'); + require_once(__DIR__ . '/../block_blog_tags.php'); + } + + /** + * Test the behaviour of can_block_be_added() method. + * + * @covers ::can_block_be_added + */ + public function test_can_block_be_added(): void { + $this->resetAfterTest(); + $this->setAdminUser(); + + // Create a course and prepare the page where the block will be added. + $course = $this->getDataGenerator()->create_course(); + $page = new \moodle_page(); + $page->set_context(context_course::instance($course->id)); + $page->set_pagelayout('course'); + + $block = new block_blog_tags(); + + // If blogs and tags advanced features are enabled, the method should return true. + set_config('enableblogs', true); + set_config('usetags', true); + $this->assertTrue($block->can_block_be_added($page)); + + // However, if any of these advanced features is disabled, the method should return false. + set_config('enableblogs', false); + $this->assertFalse($block->can_block_be_added($page)); + + set_config('enableblogs', true); + set_config('usetags', false); + $this->assertFalse($block->can_block_be_added($page)); + + set_config('enableblogs', false); + $this->assertFalse($block->can_block_be_added($page)); + } +}