Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.

Differences Between: [Versions 402 and 403]

   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  /**
  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   */
  24  
  25  defined('MOODLE_INTERNAL') || die();
  26  
  27  use tool_filetypes\utils;
  28  
  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'));
  43  
  44          // The frog extension does not.
  45          $this->assertFalse(utils::is_extension_invalid('frog'));
  46  
  47          // However you could use the pdf extension when editing the pdf extension.
  48          $this->assertFalse(utils::is_extension_invalid('pdf', 'pdf'));
  49  
  50          // Blank extension is invalid.
  51          $this->assertTrue(utils::is_extension_invalid(''));
  52  
  53          // Extensions with dot are invalid.
  54          $this->assertTrue(utils::is_extension_invalid('.frog'));
  55      }
  56  
  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'));
  64  
  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'));
  68  
  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      }
  73  
  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');
  80  
  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  }