Rev 11 | 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/>./*** Unit tests for export/import description (info) for question category in the Moodle XML format.** @package qformat_aiken* @copyright 2018 Jean-Michel Vedrine* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/use core_question\local\bank\question_version_status;defined('MOODLE_INTERNAL') || die();global $CFG;require_once($CFG->libdir . '/questionlib.php');require_once($CFG->dirroot . '/question/format.php');require_once($CFG->dirroot . '/question/format/aiken/format.php');require_once($CFG->dirroot . '/question/engine/tests/helpers.php');require_once($CFG->dirroot . '/question/editlib.php');/*** Unit tests for the Aiken question format export.** @copyright 2018 Jean-Michel vedrine)* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later* @covers \qformat_aiken*/final class qformat_aiken_export_test extends advanced_testcase {/*** Assert that 2 strings are the same, ignoring ends of line.* We need to override this function because we don't want any output* @param string $expectedtext The expected string.* @param string $text The actual string.*/public function assert_same_aiken($expectedtext, $text) {$this->assertEquals(phpunit_util::normalise_line_endings($expectedtext),phpunit_util::normalise_line_endings($text));}public function test_export_questions(): void {$this->resetAfterTest();$this->setAdminUser();// Create a new course category and and a new course in that.$category = $this->getDataGenerator()->create_category();$course = $this->getDataGenerator()->create_course(array('category' => $category->id));$qbank = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);$context = context_module::instance($qbank->cmid);$generator = $this->getDataGenerator()->get_plugin_generator('core_question');$cat = $generator->create_question_category(array('contextid' => $context->id));$question1 = $generator->create_question('shortanswer', null,array('category' => $cat->id));$question2 = $generator->create_question('essay', null,array('category' => $cat->id));$question3 = $generator->create_question('numerical', null,array('category' => $cat->id));$question4 = $generator->create_question('multichoice', 'one_of_four',array('category' => $cat->id));$question4 = $generator->create_question('multichoice', 'two_of_four',array('category' => $cat->id));$exporter = new qformat_aiken();$exporter->category = $cat;$exporter->setCourse($course);$expectedoutput = <<<EOTWhich is the oddest number?A) OneB) TwoC) ThreeD) FourANSWER: AEOT;$this->assert_same_aiken($expectedoutput, $exporter->exportprocess());}public function test_export_multiline_question(): void {$this->resetAfterTest();$this->setAdminUser();// Create a new course category and and a new course in that.$category = $this->getDataGenerator()->create_category();$course = $this->getDataGenerator()->create_course(array('category' => $category->id));$generator = $this->getDataGenerator()->get_plugin_generator('core_question');$qbank = self::getDataGenerator()->create_module('qbank', ['course' => $course->id]);$context = context_module::instance($qbank->cmid);$cat = $generator->create_question_category(array('contextid' => $context->id));$question = $generator->create_question('multichoice', 'one_of_four',array('category' => $cat->id));$question->questiontext = <<<EOT<p>Which is the</p><p>oddest number?</p>EOT;$exporter = new qformat_aiken();$exporter->category = $cat;$exporter->setCourse($course);$expectedoutput = <<<EOTWhich is the oddest number?A) OneB) TwoC) ThreeD) FourANSWER: AEOT;$this->assert_same_aiken($expectedoutput, $exporter->exportprocess());}public function test_hidden_question_not_exported(): void {$this->resetAfterTest();$this->setAdminUser();// Create a new course category and a new course in that.$category = $this->getDataGenerator()->create_category();$course = $this->getDataGenerator()->create_course(['category' => $category->id]);$generator = $this->getDataGenerator()->get_plugin_generator('core_question');$context = context_coursecat::instance($category->id);$cat = $generator->create_question_category(['contextid' => $context->id]);// Create a visible and a hidden question.$generator->create_question('multichoice', 'one_of_four', ['category' => $cat->id,'questiontext' => ['text' => 'This question is the visible one.', 'format' => FORMAT_HTML],]);$generator->create_question('multichoice', 'one_of_four', ['category' => $cat->id,'questiontext' => ['text' => 'This question is the hidden one.', 'format' => FORMAT_HTML],'status' => question_version_status::QUESTION_STATUS_HIDDEN,]);// Prepared the expected result.$expectedoutput = <<<EOTThis question is the visible one.A) OneB) TwoC) ThreeD) FourANSWER: AEOT;// Do the export and verify.$exporter = new qformat_aiken();$exporter->category = $cat;$exporter->setCourse($course);$this->assert_same_aiken($expectedoutput, $exporter->exportprocess());}}