Differences Between: [Versions 310 and 311] [Versions 310 and 400] [Versions 310 and 401] [Versions 310 and 402] [Versions 39 and 310]
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 * Unit tests for the question bank view class. 19 * 20 * @package core_question 21 * @category test 22 * @copyright 2018 the Open University 23 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 24 */ 25 26 defined('MOODLE_INTERNAL') || die(); 27 28 global $CFG; 29 require_once($CFG->dirroot . '/question/editlib.php'); 30 31 32 /** 33 * Unit tests for the question bank view class. 34 * 35 * @copyright 2018 the Open University 36 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 37 */ 38 class core_question_bank_view_testcase extends advanced_testcase { 39 40 public function test_viewing_question_bank_should_not_load_individual_questions() { 41 $this->resetAfterTest(); 42 $this->setAdminUser(); 43 $generator = $this->getDataGenerator(); 44 /** @var core_question_generator $questiongenerator */ 45 $questiongenerator = $generator->get_plugin_generator('core_question'); 46 47 // Create a course. 48 $course = $generator->create_course(); 49 $context = context_course::instance($course->id); 50 51 // Create a question in the default category. 52 $contexts = new question_edit_contexts($context); 53 $cat = question_make_default_categories($contexts->all()); 54 $questiondata = $questiongenerator->create_question('numerical', null, 55 ['name' => 'Example question', 'category' => $cat->id]); 56 57 // Ensure the question is not in the cache. 58 $cache = cache::make('core', 'questiondata'); 59 $cache->delete($questiondata->id); 60 61 // Generate the view. 62 $view = new core_question\bank\view($contexts, new moodle_url('/'), $course); 63 ob_start(); 64 $view->display('editq', 0, 20, $cat->id . ',' . $context->id, false, false, false); 65 $html = ob_get_clean(); 66 67 // Verify the output includes the expected question. 68 $this->assertStringContainsString('Example question', $html); 69 70 // Verify the question has not been loaded into the cache. 71 $this->assertFalse($cache->has($questiondata->id)); 72 } 73 74 public function test_unknown_qtype_does_not_break_view() { 75 global $DB; 76 $this->resetAfterTest(); 77 $this->setAdminUser(); 78 $generator = $this->getDataGenerator(); 79 /** @var core_question_generator $questiongenerator */ 80 $questiongenerator = $generator->get_plugin_generator('core_question'); 81 82 // Create a course. 83 $course = $generator->create_course(); 84 $context = context_course::instance($course->id); 85 86 // Create a question in the default category. 87 $contexts = new question_edit_contexts($context); 88 $cat = question_make_default_categories($contexts->all()); 89 $questiondata = $questiongenerator->create_question('numerical', null, 90 ['name' => 'Example question', 'category' => $cat->id]); 91 $DB->set_field('question', 'qtype', 'unknownqtype', ['id' => $questiondata->id]); 92 93 // Generate the view. 94 $view = new core_question\bank\view($contexts, new moodle_url('/'), $course); 95 ob_start(); 96 $view->display('editq', 0, 20, $cat->id . ',' . $context->id, false, false, false); 97 $html = ob_get_clean(); 98 99 // Mainly we are verifying that there was no fatal error. 100 101 // Verify the output includes the expected question. 102 $this->assertStringContainsString('Example question', $html); 103 } 104 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body