diff --git a/lib/classes/requirejs.php b/lib/classes/requirejs.php index 9894dc5c987..ebe4e6ff19b 100644 --- a/lib/classes/requirejs.php +++ b/lib/classes/requirejs.php @@ -90,7 +90,7 @@ class core_requirejs { $subsystems = core_component::get_core_subsystems(); foreach ($subsystems as $subsystem => $dir) { if (!empty($dir) && is_dir($dir . '/amd')) { - $jsdirs[$subsystem] = $dir . '/amd'; + $jsdirs['core_' . $subsystem] = $dir . '/amd'; } } $plugintypes = core_component::get_plugin_types(); diff --git a/lib/tests/requirejs_test.php b/lib/tests/requirejs_test.php new file mode 100644 index 00000000000..3e5bdf3d626 --- /dev/null +++ b/lib/tests/requirejs_test.php @@ -0,0 +1,95 @@ +. + +/** + * Unit tests for requirejs loader. + * + * @package core + * @author Damyon Wiese + * @copyright 2016 Damyon Wiese + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +/** + * Unit tests for requirejs. + * + * @package core + * @author Damyon Wiese + * @copyright 2016 Damyon Wiese + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class core_requirejs_testcase extends advanced_testcase { + + /** + * Test requirejs loader + */ + public function test_requirejs() { + global $CFG; + + // Find a core module. + $result = core_requirejs::find_one_amd_module('core', 'templates', false); + $expected = ['core/templates' => $CFG->dirroot . '/lib/amd/build/templates.min.js']; + $this->assertEquals($expected, $result); + + $result = core_requirejs::find_one_amd_module('core', 'templates', true); + $expected = ['core/templates' => $CFG->dirroot . '/lib/amd/src/templates.js']; + $this->assertEquals($expected, $result); + + // Find a subsystem module (none exist yet). + $result = core_requirejs::find_one_amd_module('core_group', 'doesnotexist', false); + $expected = []; + $this->assertEquals($expected, $result); + + // Find a plugin module. + $result = core_requirejs::find_one_amd_module('tool_templatelibrary', 'search', true); + $expected = ['tool_templatelibrary/search' => $CFG->dirroot . '/admin/tool/templatelibrary/amd/src/search.js']; + $this->assertEquals($expected, $result); + + // Find all modules - no debugging. + $result = core_requirejs::find_all_amd_modules(true); + foreach ($result as $key => $path) { + // Lets verify the first part of the key is a valid component name and the second part correctly contains "min" or not. + list($component, $template) = explode('/', $key, 2); + // Can we resolve it to a valid dir? + $dir = core_component::get_component_directory($component); + $this->assertNotEmpty($dir); + + // Only "core" is allowed to have no _ in component names. + if (strpos($component, '_') === false) { + $this->assertEquals('core', $component); + } + $this->assertNotContains('.min', $path); + } + + // Find all modules - debugging. + $result = core_requirejs::find_all_amd_modules(false); + foreach ($result as $key => $path) { + // Lets verify the first part of the key is a valid component name and the second part correctly contains "min" or not. + list($component, $template) = explode('/', $key, 2); + $dir = core_component::get_component_directory($component); + $this->assertNotEmpty($dir); + // Only "core" is allowed to have no _ in component names. + if (strpos($component, '_') === false) { + $this->assertEquals('core', $component); + } + + $this->assertContains('.min', $path); + } + + } +}