Commit 31dc50e3 authored by Devin Zuczek's avatar Devin Zuczek
Browse files

#1718046: tests for course objects that require a grade

parent b03b8173
Loading
Loading
Loading
Loading
+41 −1
Changes for tests/CourseGradeTestCase.test: 41 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ class CourseGradeTestCase extends CourseTestCase {
    $courseNode = $this->createCourseNode();

    // Create a graded course object.
    $co1 = $this->createGradedCourseObject($courseNode);
    $co1 = $this->createCourseObject($courseNode, TRUE);

    // Reload the course from DB.
    $course = course_get_course($courseNode);
@@ -41,4 +41,44 @@ class CourseGradeTestCase extends CourseTestCase {
    $this->assertEqual($co1->getCourse()->getTracker()->getOption('grade_result'), 80, 'Course grade was given from course object');
  }

  public function testCourseGradeAccess() {
    $courseNode = $this->createCourseNode();

    // Create a graded course objects.
    $this->createCourseObject($courseNode, TRUE);

    // Add a non-graded course object.
    $this->createCourseObject($courseNode);

    // Reload the course from DB.
    $course = course_get_course($courseNode, NULL, TRUE);
    $courseObjects = $course->getObjects();
    $co1 = $courseObjects[0];
    $co2 = $courseObjects[1];

    // Set object 1 to be included in the course grade.
    $co1->setOption('grade_include', TRUE);

    // Set object 2 to require a course grade of 80.
    $co2->addOptions(array(
      'plugins' => array(
        'access' => array(
          'grade' => array(
            'course_grade' => 80,
          ),
        ),
      ),
    ));

    // Complete but don't hit the grade requirement.
    $co1->getFulfillment()->setOption('grade_result', 79)->setComplete(1);
    $course->getTracker()->track();
    $this->assertFalse($co2->access('take'), 'User cannot take course object with lower grade.');

    // Hit the grade requirement.
    $co1->getFulfillment()->setOption('grade_result', 80)->setComplete(1);
    $course->getTracker()->track();
    $this->assertTrue($co2->access('take'), 'User can take course object with required grade.');
  }

}
+7 −13
Changes for tests/CourseTestCase.test: 7 added lines, 13 removed lines.
Original line number Diff line number Diff line
@@ -43,22 +43,16 @@ class CourseTestCase extends DrupalWebTestCase {
   * @param stdClass $courseNode
   * @return Course
   */
  function createCourseObject($courseNode) {
  function createCourseObject($courseNode, $graded = FALSE) {
    static $weight = 0;
    if ($graded) {
      $courseObject = course_get_course_object('course_test', 'course_test_graded_object');
    }
    else {
      $courseObject = course_get_course_object('course_test', 'course_test_object');
    $courseObject->setCourse($courseNode->nid);
    $courseObject->save();
    return $courseObject;
    }

  /**
   * Create a new persistent graded course object on a Course.
   *
   * @param stdClass $courseNode
   * @return Course
   */
  function createGradedCourseObject($courseNode) {
    $courseObject = course_get_course_object('course_test', 'course_test_graded_object');
    $courseObject->setCourse($courseNode->nid);
    $courseObject->setOption('weight', $weight++);
    $courseObject->save();
    return $courseObject;
  }