MDL-37457 testing Mark current classes as deprecated
[moodle.git] / lib / testing / generator / block_generator.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  * Block generator base class.
19  *
20  * @package    core
21  * @category   test
22  * @copyright  2012 Petr Skoda {@link http://skodak.org}
23  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
27 /**
28  * Block generator base class.
29  *
30  * Extend in blocks/xxxx/tests/generator/lib.php as class block_xxxx_generator.
31  *
32  * @package    core
33  * @category   test
34  * @copyright  2012 Petr Skoda {@link http://skodak.org}
35  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36  */
37 abstract class testing_block_generator {
38     /** @var testing_data_generator */
39     protected $datagenerator;
41     /** @var number of created instances */
42     protected $instancecount = 0;
44     /**
45      * Dumb constructor to throw the deprecated notification
46      * @param testing_data_generator $datagenerator
47      */
48     public function __construct(testing_data_generator $datagenerator) {
49         $this->datagenerator = $datagenerator;
50     }
52     /**
53      * To be called from data reset code only,
54      * do not use in tests.
55      * @return void
56      */
57     public function reset() {
58         $this->instancecount = 0;
59     }
61     /**
62      * Returns block name
63      * @return string name of block that this class describes
64      * @throws coding_exception if class invalid
65      */
66     public function get_blockname() {
67         $matches = null;
68         if (!preg_match('/^block_([a-z0-9_]+)_generator$/', get_class($this), $matches)) {
69             throw new coding_exception('Invalid block generator class name: '.get_class($this));
70         }
72         if (empty($matches[1])) {
73             throw new coding_exception('Invalid block generator class name: '.get_class($this));
74         }
75         return $matches[1];
76     }
78     /**
79      * Fill in record defaults
80      * @param stdClass $record
81      * @return stdClass
82      */
83     protected function prepare_record(stdClass $record) {
84         $record->blockname = $this->get_blockname();
85         if (!isset($record->parentcontextid)) {
86             $record->parentcontextid = context_system::instance()->id;
87         }
88         if (!isset($record->showinsubcontexts)) {
89             $record->showinsubcontexts = 1;
90         }
91         if (!isset($record->pagetypepattern)) {
92             $record->pagetypepattern = '';
93         }
94         if (!isset($record->subpagepattern)) {
95             $record->subpagepattern = null;
96         }
97         if (!isset($record->defaultregion)) {
98             $record->defaultregion = '';
99         }
100         if (!isset($record->defaultweight)) {
101             $record->defaultweight = '';
102         }
103         if (!isset($record->configdata)) {
104             $record->configdata = null;
105         }
106         return $record;
107     }
109     /**
110      * Create a test block
111      * @param array|stdClass $record
112      * @param array $options
113      * @return stdClass activity record
114      */
115     abstract public function create_instance($record = null, array $options = null);
118 /**
119  * Deprecated in favour of testing_block_generator
120  *
121  * @deprecated since Moodle 2.5 MDL-37457 - please do not use this function any more.
122  * @todo       MDL-37517 This will be deleted in Moodle 2.7
123  * @see        testing_block_generator
124  * @package    core
125  * @category   test
126  * @copyright  2012 David MonllaĆ³
127  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
128  */
129 abstract class phpunit_block_generator extends testing_block_generator {
131     /**
132      * Dumb constructor to throw the deprecated notification
133      * @param testing_data_generator $datagenerator
134      */
135     public function __construct(testing_data_generator $datagenerator) {
136         debugging('Class phpunit_block_generator is deprecated, please use class testing_block_generator instead', DEBUG_DEVELOPER);
137         parent::__construct($datagenerator);
138     }