MDL-42616 filelib: New user interface to edit and add file types (2/2)
[moodle.git] / admin / tool / filetypes / tests / tool_filetypes_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 custom file types.
19  *
20  * @package tool_filetypes
21  * @copyright 2014 The Open University
22  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 defined('MOODLE_INTERNAL') || die();
27 use tool_filetypes\utils;
29 /**
30  * Unit tests for the custom file types.
31  *
32  * @package tool_filetypes
33  * @copyright 2014 The Open University
34  * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
35  */
36 class tool_filetypes_test extends advanced_testcase {
37     /**
38      * Tests is_extension_invalid() function.
39      */
40     public function test_is_extension_invalid() {
41         // The pdf file extension already exists in default moodle minetypes.
42         $this->assertTrue(utils::is_extension_invalid('pdf'));
44         // The frog extension does not.
45         $this->assertFalse(utils::is_extension_invalid('frog'));
47         // However you could use the pdf extension when editing the pdf extension.
48         $this->assertFalse(utils::is_extension_invalid('pdf', 'pdf'));
50         // Blank extension is invalid.
51         $this->assertTrue(utils::is_extension_invalid(''));
53         // Extensions with dot are invalid.
54         $this->assertTrue(utils::is_extension_invalid('.frog'));
55     }
57     /**
58      * Tests is_defaulticon_allowed() function.
59      */
60     public function test_is_defaulticon_allowed() {
61         // You ARE allowed to set a default icon for a MIME type that hasn't
62         // been used yet.
63         $this->assertTrue(utils::is_defaulticon_allowed('application/x-frog'));
65         // You AREN'T allowed to set default icon for text/plain as there is
66         // already a type that has that set.
67         $this->assertFalse(utils::is_defaulticon_allowed('text/plain'));
69         // But you ARE still allowed to set it when actually editing txt, which
70         // is the default.
71         $this->assertTrue(utils::is_defaulticon_allowed('text/plain', 'txt'));
72     }
74     /**
75      * Tests get_icons_from_path() function.
76      */
77     public function test_get_icons_from_path() {
78         // Get icons from the fixtures folder.
79         $icons = utils::get_icons_from_path(__DIR__ . '/fixtures');
81         // The icons are returned alphabetically and with keys === values.
82         // For the icon with numbers after the name, only the base name is
83         // returned and only one of it.
84         $this->assertEquals(array('frog' => 'frog', 'zombie' => 'zombie'), $icons);
85     }
86 }