Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?php// This file is part of Moodle - http://moodle.org///// Moodle is free software: you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation, either version 3 of the License, or// (at your option) any later version.//// Moodle is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License// along with Moodle. If not, see <http://www.gnu.org/licenses/>.namespace core\output;/*** Unit tests for activity header** @package core* @category test* @coversDefaultClass \core\output\activity_header* @copyright 2021 Peter* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/class activity_header_test extends \advanced_testcase {/*** Test the title setter** @dataProvider set_title_provider* @param string $value* @param string $expected* @covers ::set_title*/public function test_set_title(string $value, string $expected): void {global $PAGE, $DB;$this->resetAfterTest();$course = $this->getDataGenerator()->create_course(['enablecompletion' => true]);$assign = $this->getDataGenerator()->create_module('assign', ['course' => $course->id,'completion' => COMPLETION_TRACKING_AUTOMATIC,'completionview' => 1]);$this->setAdminUser();$cm = $DB->get_record('course_modules', ['id' => $assign->cmid]);$PAGE->set_cm($cm);$PAGE->set_activity_record($assign);$header = $PAGE->activityheader;$header->set_title($value);$data = $header->export_for_template($PAGE->get_renderer('core'));$this->assertEquals($expected, $data['title']);}/*** Provider for the test_set_title unit test.* @return array*/public function set_title_provider(): array {return ["Set the title with a plain text" => ["Activity title", "Activity title"],"Set the title with a string with standard header tags" => ["<h2>Activity title</h2>", "Activity title"],"Set the title with a string with multiple header content" => ["<h2 id='heading'>Activity title</h2><h2>Header 2</h2>", "Activity title</h2><h2>Header 2"],];}/*** Test setting multiple attributes** @covers ::set_attrs*/public function test_set_attrs(): void {global $DB, $PAGE;$this->resetAfterTest();$course = $this->getDataGenerator()->create_course(['enablecompletion' => true]);$assign = $this->getDataGenerator()->create_module('assign', ['course' => $course->id,'completion' => COMPLETION_TRACKING_AUTOMATIC,'completionview' => 1]);$cm = $DB->get_record('course_modules', ['id' => $assign->cmid]);$PAGE->set_cm($cm);$PAGE->set_activity_record($assign);$PAGE->activityheader->set_attrs(['hidecompletion' => true,'additionalnavitems' => new \url_select([]),'hideoverflow' => true,'title' => 'My title','description' => 'My description',]);$renderer = $PAGE->get_renderer('core');$export = $PAGE->activityheader->export_for_template($renderer);$this->assertEquals('My title', $export['title']);$this->assertEquals('My description', $export['description']);$this->assertEmpty($export['completion']); // Because hidecompletion = true.$this->assertEmpty($export['additional_items']); // Because hideoverflow = true.}/*** Test calling set_attrs with an invalid variable name** @covers ::set_attrs*/public function test_set_attrs_invalid_variable(): void {global $PAGE;$PAGE->activityheader->set_attrs(['unknown' => true]);$this->assertDebuggingCalledCount(1, ['Invalid class member variable: unknown']);}/*** Data provider for {@see test_get_heading_level()}.** @return array[]*/public function get_heading_level_provider(): array {return ['Title not allowed' => [false, '', 2],'Title allowed, no title' => [true, '', 2],'Title allowed, empty string title' => [true, ' ', 2],'Title allowed, non-empty string title' => [true, 'Cool', 3],];}/*** Test the heading level getter** @dataProvider get_heading_level_provider* @covers ::get_heading_level* @param bool $allowtitle Whether the title is allowed.* @param string $title The activity heading.* @param int $expectedheadinglevel The expected heading level.*/public function test_get_heading_level(bool $allowtitle, string $title, int $expectedheadinglevel): void {$activityheaderstub = $this->getMockBuilder(activity_header::class)->disableOriginalConstructor()->onlyMethods(['is_title_allowed'])->getMock();$activityheaderstub->method('is_title_allowed')->willReturn($allowtitle);$activityheaderstub->set_title($title);$this->assertEquals($expectedheadinglevel, $activityheaderstub->get_heading_level());}}