Skip to content

Commit

Permalink
Merge branch 'MDL-48410_27' of git://github.com/timhunt/moodle into M…
Browse files Browse the repository at this point in the history
…OODLE_27_STABLE
  • Loading branch information
danpoltawski committed Dec 8, 2014
2 parents caf5047 + 0f08552 commit 5985ad8
Showing 1 changed file with 51 additions and 1 deletion.
52 changes: 51 additions & 1 deletion mod/quiz/tests/behat/behat_mod_quiz.php
Expand Up @@ -29,7 +29,8 @@
require_once(__DIR__ . '/../../../../question/tests/behat/behat_question_base.php');

use Behat\Behat\Context\Step\Given as Given,
Behat\Gherkin\Node\TableNode as TableNode;
Behat\Gherkin\Node\TableNode as TableNode,
Behat\Mink\Exception\ExpectationException as ExpectationException;

/**
* Steps definitions related to mod_quiz.
Expand All @@ -40,6 +41,55 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class behat_mod_quiz extends behat_question_base {

/**
* Put the specified questions on the specified pages of a given quiz.
*
* Give the question name in the first column, and that page number in the
* second column. You may optionally give the desired maximum mark for each
* question in a third column.
*
* @param string $quizname the name of the quiz to add questions to.
* @param TableNode $data information about the questions to add.
*
* @Given /^quiz "([^"]*)" contains the following questions:$/
*/
public function quiz_contains_the_following_questions($quizname, TableNode $data) {
global $DB;

$quiz = $DB->get_record('quiz', array('name' => $quizname), '*', MUST_EXIST);

// The action depends on the field type.
foreach ($data->getRows() as $questiondata) {
if (count($questiondata) < 2 || count($questiondata) > 3) {
throw new ExpectationException('When adding questions to a quiz, you should give 2 or three 3 things: ' .
' the question name, the page number, and optionally a the maxiumum mark. ' .
count($questiondata) . ' values passed.', $this->getSession());
}

list($questionname, $rawpage) = $questiondata;
if (!isset($questiondata[2]) || $questiondata[2] === '') {
$maxmark = null;
} else {
$maxmark = clean_param($questiondata[2], PARAM_FLOAT);
if (!is_numeric($questiondata[2]) || $maxmark < 0) {
throw new ExpectationException('When adding questions to a quiz, the max mark must be a positive number.',
$this->getSession());
}
}

$page = clean_param($rawpage, PARAM_INT);
if ($page <= 0 || (string) $page !== $rawpage) {
throw new ExpectationException('When adding questions to a quiz, the page number must be a positive integer.',
$this->getSession());
}

$questionid = $DB->get_field('question', 'id', array('name' => $questionname), MUST_EXIST);
quiz_add_quiz_question($questionid, $quiz, $page, $maxmark);
}
quiz_update_sumgrades($quiz);
}

/**
* Adds a question to the existing quiz with filling the form.
*
Expand Down

0 comments on commit 5985ad8

Please sign in to comment.