weekly release 3.5dev
[moodle.git] / privacy / tests / request_transform_test.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  * Unit Tests for the request transform helper.
19  *
20  * @package     core_privacy
21  * @category    test
22  * @copyright   2018 Andrew Nicols <andrew@nicols.co.uk>
23  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24  */
26 defined('MOODLE_INTERNAL') || die();
28 global $CFG;
30 use \core_privacy\local\request\transform;
32 /**
33  * Tests for the \core_privacy API's request transform helper functionality.
34  *
35  * @copyright   2018 Andrew Nicols <andrew@nicols.co.uk>
36  * @license     http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37  */
38 class request_transform_test extends advanced_testcase {
39     /**
40      * Test that user translation currently does nothing.
41      *
42      * We have not determined if we will do this or not, but we provide the functionality and encourgae people to use
43      * it so that it can be retrospectively fitted if required.
44      */
45     public function test_user() {
46         // Note: This test currently sucks, but there's no point creating users just to test this.
47         for ($i = 0; $i < 10; $i++) {
48             $this->assertEquals($i, transform::user($i));
49         }
50     }
52     /**
53      * Test that the datetime is translated into a string.
54      */
55     public function test_datetime() {
56         $this->assertInternalType('string', transform::datetime(1));
57     }
59     /**
60      * Test that the date is translated into a string.
61      */
62     public function test_date() {
63         $this->assertInternalType('string', transform::date(1));
64     }
66     /**
67      * Ensure that the yesno function translates correctly.
68      *
69      * @dataProvider yesno_provider
70      * @param   mixed   $input The input to test
71      * @param   string  $expected The expected value
72      */
73     public function test_yesno($input, $expected) {
74         $this->assertEquals($expected, transform::yesno($input));
75     }
77     /**
78      * Data provider for tests of the yesno transformation.
79      *
80      * @return  array
81      */
82     public function yesno_provider() {
83         return [
84             'Bool False' => [
85                 false,
86                 get_string('no'),
87             ],
88             'Bool true' => [
89                 true,
90                 get_string('yes'),
91             ],
92             'Int 0' => [
93                 0,
94                 get_string('no'),
95             ],
96             'Int 1' => [
97                 1,
98                 get_string('yes'),
99             ],
100             'String 0' => [
101                 '0',
102                 get_string('no'),
103             ],
104             'String 1' => [
105                 '1',
106                 get_string('yes'),
107             ],
108         ];
109     }