$this->gradecategorycounter++;
$i = $this->gradecategorycounter;
+ $record = (array)$record;
+
+ if (empty($record['courseid'])) {
+ throw new coding_exception('courseid must be present in testing::create_grade_category() $record');
+ }
+
if (!isset($record['fullname'])) {
$record['fullname'] = 'Grade category ' . $i;
}
// For gradelib classes.
require_once($CFG->libdir . '/gradelib.php');
// Create new grading category in this course.
- $gradecategory = new grade_category($record, false);
+ $gradecategory = new grade_category(array('courseid' => $record['courseid']), false);
$gradecategory->apply_default_settings();
+ grade_category::set_properties($gradecategory, $record);
$gradecategory->apply_forced_settings();
$gradecategory->insert();
+
// This creates a default grade item for the category
$gradeitem = $gradecategory->load_grade_item();
- if (isset($record->parentcategory)) {
- $gradecategory->set_parent($data->parentcategory);
- }
-
$gradecategory->update_from_db();
return $gradecategory->get_record_data();
}
$scale = $generator->create_scale();
$this->assertNotEmpty($scale);
-
- // Note we only count grade cats with depth > 1 because the course grade category
- // is lazily created.
- $count = $DB->count_records_select('grade_categories', 'depth <> 1');
- $gradecategory = $generator->create_grade_category(array('courseid'=>$course->id));
- $this->assertEquals($count+1, $DB->count_records_select('grade_categories', 'depth <> 1'));
- $this->assertEquals(2, $gradecategory->depth);
- $this->assertEquals($course->id, $gradecategory->courseid);
- $this->assertEquals('Grade category 1', $gradecategory->fullname);
}
public function test_create_module() {
$result = $this->getDataGenerator()->enrol_user($user2->id, $course3->id, null, 'self');
$this->assertFalse($result);
}
+
+ public function test_create_grade_category() {
+ global $DB, $CFG;
+ require_once $CFG->libdir . '/grade/constants.php';
+
+ $this->resetAfterTest(true);
+ $generator = $this->getDataGenerator();
+ $course = $generator->create_course();
+
+ // Generate category and make sure number of records in DB table increases.
+ // Note we only count grade cats with depth > 1 because the course grade category
+ // is lazily created.
+ $count = $DB->count_records_select('grade_categories', 'depth <> 1');
+ $gradecategory = $generator->create_grade_category(array('courseid'=>$course->id));
+ $this->assertEquals($count+1, $DB->count_records_select('grade_categories', 'depth <> 1'));
+ $this->assertEquals(2, $gradecategory->depth);
+ $this->assertEquals($course->id, $gradecategory->courseid);
+ $this->assertEquals('Grade category 1', $gradecategory->fullname);
+
+ // Generate category and make sure aggregation is set.
+ $gradecategory = $generator->create_grade_category(
+ array('courseid' => $course->id, 'aggregation' => GRADE_AGGREGATE_MEDIAN));
+ $this->assertEquals(GRADE_AGGREGATE_MEDIAN, $gradecategory->aggregation);
+
+ // Generate category and make sure parent is set.
+ $gradecategory2 = $generator->create_grade_category(
+ array('courseid' => $course->id,
+ 'parent' => $gradecategory->id));
+ $this->assertEquals($gradecategory->id, $gradecategory2->parent);
+ }
}