MDL-49329 admin: Get rid of mdeploy and \core\update\deployer class
[moodle.git] / lib / tests / fixtures / testable_plugin_manager.php
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/>.
17 /**
18  * Provides testable_core_plugin_manager class.
19  *
20  * @package     core
21  * @category    test
22  * @copyright   2015 David Mudrak <david@moodle.com>
23  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die();
28 require_once(__DIR__.'/testable_update_api.php');
30 /**
31  * Testable variant of the core_plugin_manager
32  *
33  * @copyright 2015 David Mudrak <david@moodle.com>
34  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35  */
36 class testable_core_plugin_manager extends core_plugin_manager {
38     /** @var testable_core_plugin_manager holds the singleton instance */
39     protected static $singletoninstance;
41     /**
42      * Allows us to inject items directly into the plugins info tree.
43      *
44      * Do not forget to call our reset_caches() after using this method to force a new
45      * singleton instance.
46      */
47     public function inject_testable_plugininfo($type, $name, \core\plugininfo\base $plugininfo) {
48         $this->pluginsinfo[$type][$name] = $plugininfo;
49     }
51     /**
52      * Returns testable subclass of the client.
53      *
54      * @return \core\update\testable_api
55      */
56     protected function get_update_api_client() {
57         return \core\update\testable_api::client();
58     }
60     /**
61      * Mockup implementation of loading available updates info.
62      *
63      * This testable implementation does not actually use
64      * {@link \core\update\checker}. Instead, it provides hard-coded list of
65      * fictional available updates for some standard plugin.
66      *
67      * @param string $component
68      * @return array|null array of \core\update\info objects or null
69      */
70     public function load_available_updates_for_plugin($component) {
72         if ($component === 'mod_forum') {
73             $updates = array();
75             $updates[] = new \core\update\info($component, array(
76                 'version' => '2002073008',
77                 'release' => 'Forum 0.1',
78                 'maturity' => MATURITY_ALPHA,
79                 'url' => 'https://en.wikipedia.org/wiki/Moodle',
80                 'download' => 'https://moodle.org/plugins/pluginversion.php?id=1',
81                 'downloadmd5' => md5('I can not think of anything funny to type here'),
82             ));
84             $updates[] = new \core\update\info($component, array(
85                 'version' => '2999122400',
86                 'release' => 'Forum NG',
87                 'maturity' => MATURITY_BETA,
88             ));
90             return $updates;
91         }
93         return null;
94     }
95 }