Proyectos de Subversion Moodle

Rev

Rev 1 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
namespace core_backup;
18
 
19
use base_setting;
20
use base_setting_ui;
21
 
22
defined('MOODLE_INTERNAL') || die();
23
 
24
global $CFG;
25
 
26
require_once($CFG->dirroot.'/backup/util/settings/tests/settings_test.php');
27
 
28
/**
29
 * Tests for base_setting_ui class.
30
 *
31
 * @package   core_backup
32
 * @copyright 2021 Université Rennes 2 {@link https://www.univ-rennes2.fr}
33
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
34
 */
35
class base_setting_ui_test extends \advanced_testcase {
36
    /**
37
     * Tests set_label().
38
     *
39
     * @return void
40
     */
11 efrain 41
    public function test_set_label(): void {
1 efrain 42
        $this->resetAfterTest();
43
 
44
        $bs = new mock_base_setting('test', base_setting::IS_BOOLEAN);
45
        $bsui = new base_setting_ui($bs);
46
 
47
        // Should keep original text string.
48
        $bsui->set_label('Section name');
49
        $this->assertEquals('Section name', $bsui->get_label());
50
 
51
        // Should keep original HTML string.
52
        $bsui->set_label('<b>Section name</b>');
53
        $this->assertEquals('<b>Section name</b>', $bsui->get_label());
54
 
55
        // Should be converted to text string.
56
        $bsui->set_label(123);
57
        $this->assertSame('123', $bsui->get_label());
58
 
59
        // Should be converted to non-breaking space (U+00A0) when label is empty.
60
        $bsui->set_label('');
61
        $this->assertSame("\u{00A0}", $bsui->get_label());
62
 
63
        // Should be converted to non-breaking space (U+00A0) when the trimmed label is empty.
64
        $bsui->set_label("  \t\t\n\n\t\t  ");
65
        $this->assertSame("\u{00A0}", $bsui->get_label());
66
 
67
        // Should clean partially the wrong bits.
68
        $bsui->set_label('<b onmouseover=alert("test")>label</b>');
69
        $this->assertSame('<b>label</b>', $bsui->get_label());
70
 
71
        // Should raise an exception when cleaning ends with 100% empty.
72
        $this->expectException(\Exception::class);
73
        $this->expectExceptionMessage('error/setting_invalid_ui_label');
74
        $bsui->set_label('<script>alert("test")</script>');
75
    }
76
}