MDL-61364 core_question: tests for question_has_capability_on exception

This commit is contained in:
Simey Lameze
2018-03-28 08:54:11 +08:00
parent ca18d567d7
commit 15cd009097
+34 -1
View File
@@ -1890,7 +1890,7 @@ class core_questionlib_testcase extends advanced_testcase {
* @dataProvider question_capability_on_question_provider
* @param array $capabilities The capability assignments to set.
* @param string $capability The capability to test
* @param bool $expectall The expectation when passing false to checkmine.
* @param bool $isowner The expectation when passing false to checkmine.
* @param bool $expectmine The expectation when passing true to checkmine.
*/
public function test_question_has_capability_on_using_question($capabilities, $capability, $isowner, $expect) {
@@ -1930,4 +1930,37 @@ class core_questionlib_testcase extends advanced_testcase {
$result = question_has_capability_on($question, $capability);
$this->assertEquals($expect, $result);
}
/**
* Tests that question_has_capability_on throws an exception for wrong parameter types.
*/
public function test_question_has_capability_on_wrong_param_type() {
// Create the test data.
$generator = $this->getDataGenerator();
$questiongenerator = $generator->get_plugin_generator('core_question');
$user = $generator->create_user();
$category = $generator->create_category();
$context = context_coursecat::instance($category->id);
$questioncat = $questiongenerator->create_question_category([
'contextid' => $context->id,
]);
// Create the question.
$question = $questiongenerator->create_question('truefalse', null, [
'category' => $questioncat->id,
]);
$question = question_bank::load_question_data($question->id);
// The question generator does not support setting of the createdby for some reason.
$question->createdby = $user->id;
$this->setUser($user);
$result = question_has_capability_on((string)$question->id, 'tag');
$this->assertFalse($result);
$this->expectException('coding_exception');
$this->expectExceptionMessage('$questionorid parameter needs to be an integer or an object.');
question_has_capability_on('one', 'tag');
}
}