public function CourseGradeTestCase::testCourseGradeAccess in Course 7.2
Same name and namespace in other branches
- 6 tests/CourseGradeTestCase.test \CourseGradeTestCase::testCourseGradeAccess()
- 7 tests/CourseGradeTestCase.test \CourseGradeTestCase::testCourseGradeAccess()
Test that the course grade access plugin functions properly.
File
- tests/
CourseGradeTestCase.test, line 50
Class
- CourseGradeTestCase
- Tests for Course grade.
Code
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);
$courseObjects = array_values($course
->getObjects());
$co1 = $courseObjects[0];
$co2 = $courseObjects[1];
// Set object 1 to be included in the course grade.
$co1
->setOption('grade_include', TRUE)
->save();
// Set object 2 to require a course grade of 80.
$co2
->addOptions(array(
'plugins' => array(
'access' => array(
'grade' => array(
'course_grade_range' => array(
'low' => 80,
'high' => 90,
),
),
),
),
))
->save();
// Enroll the user.
course_enroll($courseNode, $this->student_user);
// Complete but don't hit the low grade requirement.
$course
->getObjects()[1]
->getFulfillment($this->student_user)
->setOption('grade_result', 79)
->setComplete(1)
->save();
$course
->getTracker($this->student_user)
->track();
$this
->assertFalse($co2
->access('take', $this->student_user), 'User cannot take course object with lower grade.');
// Complete but don't hit the high grade requirement.
$course
->getObjects()[1]
->getFulfillment($this->student_user)
->setOption('grade_result', 91)
->setComplete(1)
->save();
$course
->getTracker($this->student_user)
->track();
$this
->assertFalse($co2
->access('take', $this->student_user), 'User cannot take course object with higher grade.');
// Hit the grade requirement.
$course
->getObjects()[1]
->getFulfillment($this->student_user)
->setOption('grade_result', 80)
->setComplete(1)
->save();
$course
->getTracker($this->student_user)
->track();
$this
->assertTrue($co2
->access('take', $this->student_user), 'User can take course object with required grade.');
}