Skip to content
Snippets Groups Projects
Commit 08d73d1c authored by Chris Sangwin's avatar Chris Sangwin
Browse files

Copy over editform_test.php to fix CI in latest moodle (main). Part of 7d530484.

parent a32dac2e
No related branches found
No related tags found
No related merge requests found
...@@ -14,6 +14,14 @@ ...@@ -14,6 +14,14 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Subclass of qtype_stack_edit_form_testable that is easier to use in unit tests.
*
* @package qtype_stack
* @copyright 2012 The Open University.
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
*/
namespace qtype_stack; namespace qtype_stack;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
...@@ -22,25 +30,34 @@ global $CFG; ...@@ -22,25 +30,34 @@ global $CFG;
require_once($CFG->dirroot . '/question/engine/tests/helpers.php'); require_once($CFG->dirroot . '/question/engine/tests/helpers.php');
require_once(__DIR__ . '/../edit_stack_form.php'); require_once(__DIR__ . '/../edit_stack_form.php');
// Subclass of qtype_stack_edit_form_testable that is easier to use in unit tests.
//
// @copyright 2012 The Open University.
// @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later.
/** /**
* Subclass of qtype_stack_edit_form_testable that is easier to use in unit tests.
* @group qtype_stack * @group qtype_stack
* @covers \qtype_stack_edit_form * @covers \qtype_stack_edit_form
*/ */
class editform_test_class extends \qtype_stack_edit_form { final class editform_test_class extends \qtype_stack_edit_form {
public function __construct($questiontext, $specificfeedback) { // phpcs:ignore moodle.Commenting.MissingDocblock.MissingTestcaseMethodDescription
public function __construct($questiontext, $specificfeedback, $quizmoduleid) {
global $USER; global $USER;
$syscontext = \context_system::instance(); // ISS1325 - Use quiz context rather than system context as
$category = question_make_default_categories([$syscontext]); // question categories only allowed in modules from Moodle 5.
$quizcontext = \context_module::instance($quizmoduleid);
if (function_exists('question_get_default_category')) {
// This function exists from Moodle 4.5 onwards but the second parameter
// which creates the category if it doesn't exist is 5.0 onwards.
$category = question_get_default_category($quizcontext->id, true);
if (!$category) {
$category = $category = question_make_default_categories([$quizcontext]);
}
} else {
// Deprecated from 5.0.
$category = $category = question_make_default_categories([$quizcontext]);
}
$fakequestion = new \stdClass(); $fakequestion = new \stdClass();
$fakequestion->qtype = 'stack'; $fakequestion->qtype = 'stack';
$fakequestion->category = $category->id; $fakequestion->category = $category->id;
$fakequestion->contextid = $syscontext->id; $fakequestion->contextid = $quizcontext->id;
$fakequestion->createdby = $USER->id; $fakequestion->createdby = $USER->id;
$fakequestion->modifiedby = $USER->id; $fakequestion->modifiedby = $USER->id;
$fakequestion->questiontext = $questiontext; $fakequestion->questiontext = $questiontext;
...@@ -52,9 +69,9 @@ class editform_test_class extends \qtype_stack_edit_form { ...@@ -52,9 +69,9 @@ class editform_test_class extends \qtype_stack_edit_form {
$fakequestion->inputs = null; $fakequestion->inputs = null;
// Support both Moodle 4.x and 3.x. // Support both Moodle 4.x and 3.x.
if (class_exists('\core_question\local\bank\question_edit_contexts')) { if (class_exists('\core_question\local\bank\question_edit_contexts')) {
$contexts = new \core_question\local\bank\question_edit_contexts($syscontext); $contexts = new \core_question\local\bank\question_edit_contexts($quizcontext);
} else { } else {
$contexts = new \question_edit_contexts($syscontext); $contexts = new \question_edit_contexts($quizcontext);
} }
parent::__construct(new \moodle_url('/'), $fakequestion, $category, $contexts); parent::__construct(new \moodle_url('/'), $fakequestion, $category, $contexts);
} }
...@@ -64,21 +81,28 @@ class editform_test_class extends \qtype_stack_edit_form { ...@@ -64,21 +81,28 @@ class editform_test_class extends \qtype_stack_edit_form {
/** /**
* Unit tests for Stack question editing form. * Unit tests for Stack question editing form.
* *
* @package qtype_stack
* @copyright 2012 The Open University * @copyright 2012 The Open University
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @group qtype_stack * @group qtype_stack
* @covers \qtype_stack_edit_form * @covers \qtype_stack_edit_form
*/ */
class editform_test extends \advanced_testcase { final class editform_test extends \advanced_testcase {
// phpcs:ignore moodle.Commenting.MissingDocblock.MissingTestcaseMethodDescription
protected function get_form($questiontext, $specificfeedback) { protected function get_form($questiontext, $specificfeedback) {
$this->setAdminUser(); $this->setAdminUser();
$this->resetAfterTest(); $this->resetAfterTest();
$quizgenerator = self::getDataGenerator()->get_plugin_generator('mod_quiz');
return new editform_test_class($questiontext, $specificfeedback); $site = get_site();
// Add a quiz to the site course.
$quiz = $quizgenerator->create_instance(['course' => $site->id, 'grade' => 100.0, 'sumgrades' => 2, 'layout' => '1,0']);
$quizmoduleid = $quiz->cmid;
return new editform_test_class($questiontext, $specificfeedback, $quizmoduleid);
} }
public function test_get_input_names_from_question_text_default() { public function test_get_input_names_from_question_text_default(): void {
$form = $this->get_form(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT, $form = $this->get_form(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT,
\qtype_stack_edit_form::DEFAULT_SPECIFIC_FEEDBACK); \qtype_stack_edit_form::DEFAULT_SPECIFIC_FEEDBACK);
$qtype = new \qtype_stack(); $qtype = new \qtype_stack();
...@@ -87,7 +111,8 @@ class editform_test extends \advanced_testcase { ...@@ -87,7 +111,8 @@ class editform_test extends \advanced_testcase {
$qtype->get_input_names_from_question_text(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT)); $qtype->get_input_names_from_question_text(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT));
} }
public function test_get_prt_names_from_question_default() { public function test_get_prt_names_from_question_default(): void {
$form = $this->get_form(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT, $form = $this->get_form(\qtype_stack_edit_form::DEFAULT_QUESTION_TEXT,
\qtype_stack_edit_form::DEFAULT_SPECIFIC_FEEDBACK); \qtype_stack_edit_form::DEFAULT_SPECIFIC_FEEDBACK);
$qtype = new \qtype_stack(); $qtype = new \qtype_stack();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment