Differences Between: [Versions 310 and 400] [Versions 311 and 400] [Versions 39 and 400]
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 * Behat data generator for core_question. 19 * 20 * @package core_question 21 * @category test 22 * @copyright 2020 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 29 /** 30 * Behat data generator for core_question. 31 */ 32 class behat_core_question_generator extends behat_generator_base { 33 34 protected function get_creatable_entities(): array { 35 // Note, for historical reasons, questions and question categories 36 // are generated by behat_core_generator. 37 return [ 38 'Tags' => [ 39 'singular' => 'Tag', 40 'datagenerator' => 'question_tag', 41 'required' => ['question', 'tag'], 42 'switchids' => ['question' => 'questionid'], 43 ], 44 'updated questions' => [ 45 'singular' => 'question', 46 'datagenerator' => 'updated_question', 47 'required' => ['question', 'questioncategory'], 48 'switchids' => ['question' => 'id', 'questioncategory' => 'category'], 49 ], 50 ]; 51 } 52 53 /** 54 * Look up the id of a question from its name. 55 * 56 * @param string $questionname the question name, for example 'Question 1'. 57 * @return int corresponding id. 58 */ 59 protected function get_question_id(string $questionname): int { 60 global $DB; 61 62 if (!$id = $DB->get_field('question', 'id', ['name' => $questionname])) { 63 throw new Exception('There is no question with name "' . $questionname . '".'); 64 } 65 return $id; 66 } 67 68 /** 69 * Update a question 70 * 71 * This will update a question matching the supplied name with the provided data, creating a new version in the process. 72 * 73 * @param array $data the row of data from the behat script. 74 * @return void 75 */ 76 protected function process_updated_question(array $data): void { 77 global $DB; 78 $question = $DB->get_record('question', ['id' => $data['id']], '*', MUST_EXIST); 79 foreach ($data as $key => $value) { 80 $question->{$key} = $value; 81 } 82 83 $this->datagenerator->get_plugin_generator('core_question')->update_question($question); 84 } 85 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body