You are here

course_quiz.test in Course 6

File

modules/course_quiz/course_quiz.test
View source
<?php

require_once drupal_get_path('module', 'course') . '/tests/CourseTestCase.test';

/**
 * Tests for quiz Course objects.
 */
class CourseObjectQuizTestCase extends CourseTestCase {
  public static function getInfo() {

    // Note that getInfo() strings are not translated with t().
    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(
      'administer nodes',
    ) + quiz_perm());
  }
  function testQuizCourseObject() {
    $this
      ->drupalLogin($this->quiz_admin);

    // Create a course with 1 quiz.
    $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.');

    // Add a question.
    $this
      ->drupalGet('node/add/truefalse', array(
      'query' => 'quiz_nid=2&quiz_vid=2',
    ));
    $this
      ->drupalPost(NULL, array(
      'body' => 'Test question',
      'correct_answer' => 1,
    ), 'Save');

    // Fail the quiz.
    $this
      ->drupalGet("node/{$quizNode->nid}/take");
    $this
      ->assertFalse($co1
      ->getFulfillment()
      ->isComplete(), 'Check that quiz fulfillment is not complete after fail.');
    $this
      ->drupalPost(NULL, array(
      'tries' => 0,
    ), 'Finish');

    // Reload because something happened in the DB.
    $co1 = course_get_course_object_by_id($co1
      ->getId(), $this->quiz_admin);
    $this
      ->assertFalse($co1
      ->getFulfillment()
      ->isComplete(), 'Check that quiz fulfillment is not complete.');

    // Pass the quiz.
    $this
      ->drupalGet("node/{$quizNode->nid}/take");
    $this
      ->drupalPost(NULL, array(
      'tries' => 1,
    ), 'Finish');

    // Reload because something happened in the DB.
    $co1 = course_get_course_object_by_id($co1
      ->getId(), $this->quiz_admin);
    $this
      ->assertTrue($co1
      ->getFulfillment()
      ->isComplete(), 'Check that quiz fulfillment is complete.');
  }

}

Classes

Namesort descending Description
CourseObjectQuizTestCase Tests for quiz Course objects.