MDL-61514 Quiz: unit testing restore
This commit is contained in:
BIN
Binary file not shown.
@@ -0,0 +1,95 @@
|
||||
<?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 usage of tags in quizzes.
|
||||
*
|
||||
* @package mod_quiz
|
||||
* @copyright 2018 Shamim Rezaie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
global $CFG;
|
||||
require_once($CFG->dirroot . '/mod/quiz/locallib.php');
|
||||
|
||||
/**
|
||||
* Class mod_quiz_tags_testcase
|
||||
* Class for tests related to usage of question tags in quizzes.
|
||||
*
|
||||
* @copyright 2018 Shamim Rezaie <[email protected]>
|
||||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class mod_quiz_tags_testcase extends advanced_testcase {
|
||||
public function test_restore_random_question_by_tag() {
|
||||
global $CFG, $USER, $DB;
|
||||
|
||||
require_once($CFG->dirroot . '/backup/util/includes/restore_includes.php');
|
||||
|
||||
$this->resetAfterTest();
|
||||
$this->setAdminUser();
|
||||
|
||||
$backupid = 'abc';
|
||||
$backuppath = $CFG->tempdir . '/backup/' . $backupid;
|
||||
check_dir_exists($backuppath);
|
||||
get_file_packer('application/vnd.moodle.backup')->extract_to_pathname(
|
||||
__DIR__ . "/fixtures/random_by_tag_quiz.mbz", $backuppath);
|
||||
|
||||
// Do the restore to new course with default settings.
|
||||
$categoryid = $DB->get_field_sql("SELECT MIN(id) FROM {course_categories}");
|
||||
$newcourseid = restore_dbops::create_new_course('Test fullname', 'Test shortname', $categoryid);
|
||||
$rc = new restore_controller($backupid, $newcourseid, backup::INTERACTIVE_NO, backup::MODE_GENERAL, $USER->id,
|
||||
backup::TARGET_NEW_COURSE);
|
||||
|
||||
$this->assertTrue($rc->execute_precheck());
|
||||
$rc->execute_plan();
|
||||
$rc->destroy();
|
||||
|
||||
// Get the information about the resulting course and check that it is set up correctly.
|
||||
$modinfo = get_fast_modinfo($newcourseid);
|
||||
$quiz = array_values($modinfo->get_instances_of('quiz'))[0];
|
||||
$quizobj = quiz::create($quiz->instance);
|
||||
$structure = \mod_quiz\structure::create_for_quiz($quizobj);
|
||||
|
||||
// Are the correct slots returned?
|
||||
$slots = $structure->get_slots();
|
||||
$this->assertCount(1, $slots);
|
||||
|
||||
$quizobj->preload_questions();
|
||||
$quizobj->load_questions();
|
||||
$questions = $quizobj->get_questions();
|
||||
|
||||
$this->assertCount(1, $questions);
|
||||
|
||||
$question = array_values($questions)[0];
|
||||
|
||||
$tag1 = core_tag_tag::get_by_name(0, 't1', 'id, name');
|
||||
$this->assertNotFalse($tag1);
|
||||
|
||||
$tag2 = core_tag_tag::get_by_name(0, 't2', 'id, name');
|
||||
$this->assertNotFalse($tag2);
|
||||
|
||||
$tag3 = core_tag_tag::get_by_name(0, 't3', 'id, name');
|
||||
$this->assertNotFalse($tag3);
|
||||
|
||||
$tagrecords = array($tag2->to_object());
|
||||
$this->assertEquals(quiz_build_random_question_tag_json($tagrecords), $question->randomfromtags);
|
||||
|
||||
$defaultcategory = question_get_default_category(context_course::instance($newcourseid)->id);
|
||||
$this->assertEquals($defaultcategory->id, $question->randomfromcategory);
|
||||
$this->assertEquals(0, $question->randomincludingsubcategories);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user