1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 declare(strict_types=1); 18 19 namespace core\plugininfo; 20 21 use advanced_testcase; 22 23 /** 24 * Unit tests for the mod plugininfo class 25 * 26 * @package core 27 * @covers \core\plugininfo\block 28 * @copyright 2023 Andrew Lyons <andrew@nicols.co.uk> 29 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 30 */ 31 class block_test extends advanced_testcase { 32 33 /** 34 * Test the get_enabled_plugins method. 35 * 36 * @covers ::get_enabled_plugins 37 */ 38 public function test_get_enabled_plugins(): void { 39 $this->resetAfterTest(); 40 41 // The bigbluebuttonbn plugin is disabled by default. 42 // Check all default formats. 43 $plugins = block::get_enabled_plugins(); 44 $this->assertArrayHasKey('badges', $plugins); 45 $this->assertArrayHasKey('timeline', $plugins); 46 $this->assertArrayHasKey('admin_bookmarks', $plugins); 47 48 // Disable a plugin. 49 block::enable_plugin('timeline', 0); 50 51 $plugins = block::get_enabled_plugins(); 52 $this->assertArrayHasKey('badges', $plugins); 53 $this->assertArrayNotHasKey('timeline', $plugins); 54 $this->assertArrayHasKey('admin_bookmarks', $plugins); 55 } 56 57 /** 58 * Test the is_uninstall_allowed method. 59 * 60 * @dataProvider is_uninstall_allowed_provider 61 * @param string $plugin 62 * @param bool $expected 63 */ 64 public function test_is_uninstall_allowed( 65 string $plugin, 66 bool $expected, 67 ): void { 68 $pluginmanager = \core_plugin_manager::instance(); 69 $plugininfo = $pluginmanager->get_plugin_info("block_{$plugin}"); 70 $this->assertEquals($expected, $plugininfo->is_uninstall_allowed()); 71 } 72 73 public function is_uninstall_allowed_provider(): array { 74 $plugins = block::get_enabled_plugins(); 75 return array_map(function ($plugin) { 76 $expected = true; 77 if ($plugin === 'settings' || $plugin === 'navigation') { 78 $expected = false; 79 } 80 return [ 81 'plugin' => $plugin, 82 'expected' => $expected, 83 ]; 84 }, array_keys($plugins)); 85 } 86 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body