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 * Fixture for testing the functionality of core_h5p. 19 * 20 * @package core 21 * @subpackage fixtures 22 * @category test 23 * @copyright 2019 Victor Deniz <victor@moodle.com> 24 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 25 */ 26 27 namespace core_h5p; 28 29 defined('MOODLE_INTERNAL') || die(); 30 31 /** 32 * H5P factory class stub for testing purposes. 33 * 34 * This class extends the real one to return the H5P core class stub. 35 * 36 * @copyright 2019 Victor Deniz <victor@moodle.com> 37 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 38 */ 39 class h5p_test_factory extends factory { 40 /** 41 * Returns an instance of the \core_h5p\core stub class. 42 * 43 * @return core_h5p\core 44 */ 45 public function get_core(): core { 46 if ($this->core === null ) { 47 $fs = new file_storage(); 48 $language = framework::get_language(); 49 $context = \context_system::instance(); 50 51 $url = \moodle_url::make_pluginfile_url($context->id, 'core_h5p', '', null, 52 '', '')->out(); 53 54 $this->core = new h5p_test_core($this->get_framework(), $fs, $url, $language, true); 55 } 56 57 return $this->core; 58 } 59 } 60 61 /** 62 * H5P core class stub for testing purposes. 63 * 64 * Modifies get_api_endpoint method to use local URLs. 65 * 66 * @copyright 2019 Victor Deniz <victor@moodle.com> 67 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 68 */ 69 class h5p_test_core extends core { 70 /** @var $endpoint Endpoint URL for testing H5P API */ 71 protected $endpoint; 72 73 /** 74 * Set the endpoint URL 75 * 76 * @param string $url Endpoint URL 77 * @return void 78 */ 79 public function set_endpoint($url): void { 80 $this->endpoint = $url; 81 } 82 83 /** 84 * Get the URL of the test endpoints instead of the H5P ones. 85 * 86 * If $endpoint = 'content' and $library is null, moodle_url is the endpoint of the latest version of the H5P content 87 * types; however, if $library is the machine name of a content type, moodle_url is the endpoint to download the content type. 88 * The SITES endpoint ($endpoint = 'site') may be use to get a site UUID or send site data. 89 * 90 * @param string|null $library The machineName of the library whose endpoint is requested. 91 * @param string $endpoint The endpoint required. Valid values: "site", "content". 92 * @return \moodle_url The endpoint moodle_url object. 93 */ 94 public function get_api_endpoint(?string $library = null, string $endpoint = 'content'): \moodle_url { 95 96 if ($library) { 97 $h5purl = $this->endpoint . '/' . $library . '.h5p'; 98 } else if ($endpoint == 'content') { 99 $h5purl = $this->endpoint . '/h5pcontenttypes.json'; 100 } else { 101 $h5purl = $this->endpoint . '/h5puuid.json'; 102 } 103 104 return new \moodle_url($h5purl); 105 } 106 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body