MDL-69068 behat: New step to support singular generators
[moodle.git] / question / tests / generator / behat_core_question_generator.php
CommitLineData
c689726d
TH
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
26defined('MOODLE_INTERNAL') || die();
27
28
29/**
30 * Behat data generator for core_question.
31 */
32class 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' => [
b49cb92e 39 'singular' => 'Tag',
c689726d
TH
40 'datagenerator' => 'question_tag',
41 'required' => ['question', 'tag'],
42 'switchids' => ['question' => 'questionid'],
43 ],
44 ];
45 }
46
47 /**
48 * Look up the id of a question from its name.
49 *
50 * @param string $questionname the question name, for example 'Question 1'.
51 * @return int corresponding id.
52 */
53 protected function get_question_id(string $questionname): int {
54 global $DB;
55
56 if (!$id = $DB->get_field('question', 'id', ['name' => $questionname])) {
57 throw new Exception('There is no question with name "' . $questionname . '".');
58 }
59 return $id;
60 }
61}