示例#1
0
 /**
  * Tests the setting of the grade_grades aggregationweight column.
  * Currently, this is only a regression test for MDL-51715.
  * This must be run before sub_test_grade_category_set_parent(), which alters
  * the fixture.
  */
 protected function sub_test_grade_category_generate_grades_aggregationweight()
 {
     global $DB;
     // Start of regression test for MDL-51715.
     // grade_categories [1] and [2] are child categories of [0]
     // Ensure that grades have been generated with fixture data.
     $childcat1 = new grade_category($this->grade_categories[1]);
     $childcat1itemid = $childcat1->load_grade_item()->id;
     $childcat1->generate_grades();
     $childcat2 = new grade_category($this->grade_categories[2]);
     $childcat2itemid = $childcat2->load_grade_item()->id;
     $childcat2->generate_grades();
     $parentcat = new grade_category($this->grade_categories[0]);
     $parentcat->generate_grades();
     // Drop low and and re-generate to produce 'dropped' aggregation status.
     $parentcat->droplow = 1;
     $parentcat->generate_grades();
     $this->assertTrue($DB->record_exists_select('grade_grades', "aggregationstatus='dropped' and itemid in (?,?)", array($childcat1itemid, $childcat2itemid)));
     $this->assertFalse($DB->record_exists_select('grade_grades', "aggregationstatus='dropped' and aggregationweight > 0.00"), "aggregationweight should be 0.00 if aggregationstatus=='dropped'");
     // Reset grade data to be consistent with fixture data.
     $parentcat->droplow = 0;
     $parentcat->generate_grades();
     // Blank out the final grade for one of the child categories and re-generate
     // to produce 'novalue' aggregationstatus.  Direct DB update is testing shortcut.
     $DB->set_field('grade_grades', 'finalgrade', null, array('itemid' => $childcat1itemid));
     $parentcat->generate_grades();
     $this->assertTrue($DB->record_exists_select('grade_grades', "aggregationstatus='novalue' and itemid = ?", array($childcat1itemid)));
     $this->assertFalse($DB->record_exists_select('grade_grades', "aggregationstatus='novalue' and aggregationweight > 0.00"), "aggregationweight should be 0.00 if aggregationstatus=='novalue'");
     // Re-generate to be consistent with fixture data.
     $childcat1->generate_grades();
     $parentcat->generate_grades();
     // End of regression test for MDL-51715.
 }