View source
<?php
class CourseObjectQuizTestCase extends CourseTestCase {
public static function getInfo() {
return array(
'name' => 'Course object quiz',
'description' => 'Ensure that quiz Course object support functions properly.',
'group' => 'Course',
);
}
function getModules() {
$modules = parent::getModules();
$modules[] = 'quiz';
$modules[] = 'quiz_question';
$modules[] = 'truefalse';
$modules[] = 'course_quiz';
return $modules;
}
function setUp() {
parent::setUp();
$this->quiz_admin = $this
->drupalCreateUser(array(
'access quiz',
'create truefalse content',
'edit any truefalse content',
'create quiz content',
'edit any quiz content',
));
}
function testQuizCourseObject() {
$this
->drupalLogin($this->quiz_admin);
$courseNode = $this
->createCourseNode();
$co1 = course_get_course_object('course_quiz', 'quiz');
$co1
->setCourse($courseNode->nid);
$co1
->setOption('passing_grade', 100);
$co1
->save();
$this
->assertTrue($co1
->getInstanceId() > 0, 'Quiz node created on course object save.');
$quizNode = node_load($co1
->getInstanceId());
$this
->assertTrue($quizNode->type == 'quiz', 'Quiz node is a quiz.');
$this
->drupalGet('node/add/truefalse', array(
'query' => array(
'quiz_nid' => $quizNode->nid,
'quiz_vid' => $quizNode->vid,
),
));
$this
->drupalPost(NULL, array(
'body[und][0][value]' => 'Test question',
'correct_answer' => 1,
), t('Save'));
$answer_element = course_quiz_quiz_version() >= 5 ? "question[3][answer]" : "tries";
course_enroll($courseNode, $this->quiz_admin);
$this
->drupalGet("node/{$quizNode->nid}/take");
$this
->assertFalse($co1
->getFulfillment($this->quiz_admin)
->isComplete(), 'Check that quiz fulfillment is not complete after fail.');
$this
->drupalPost(NULL, array(
$answer_element => 0,
), t('Finish'));
$this
->assertFalse($co1
->getFulfillment($this->quiz_admin)
->isComplete(), 'Check that quiz fulfillment is not complete.');
$this
->drupalGet("node/{$quizNode->nid}/take");
$this
->drupalPost(NULL, array(
$answer_element => 1,
), t('Finish'));
entity_get_controller('course_object_fulfillment')
->resetCache();
$this
->assertTrue($co1
->getFulfillment($this->quiz_admin)
->isComplete(), 'Check that quiz fulfillment is complete.');
}
}