From dda0c7e6663a990b57d526cbf39e03eec708e173 Mon Sep 17 00:00:00 2001 From: nicolasconnault Date: Mon, 14 May 2007 08:18:03 +0000 Subject: [PATCH] MDL-9506 Added some unit tests, found some errors, and realised they came from incorrect setup unit test data, which I corrected (grade finals for item 3 were set to 2-digit ints although item 3 was a scale of 1-7. --- lib/grade/grade_category.php | 6 ++++-- lib/grade/grade_item.php | 6 ++++++ .../grade/simpletest/testgradecategory.php | 14 +++++++++++--- lib/simpletest/testgradelib.php | 6 +++--- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/lib/grade/grade_category.php b/lib/grade/grade_category.php index f56638a2e4..431386caa6 100644 --- a/lib/grade/grade_category.php +++ b/lib/grade/grade_category.php @@ -372,6 +372,7 @@ class grade_category extends grade_object { $final_grades_for_aggregation[] = $item->get_standardised_final(); } } + // 3. Aggregate the grades $aggregated_grades = $this->aggregate_grades($final_grades_for_aggregation); @@ -445,9 +446,10 @@ class grade_category extends grade_object { // If the gradevalue is null, we have a problem if (empty($aggregated_value)) { return false; - } - + } + $grade_raw = new grade_grades_raw(); + $grade_raw->userid = $userid; $grade_raw->gradevalue = $aggregated_value; $grade_raw->grademin = $this->grade_item->grademin; diff --git a/lib/grade/grade_item.php b/lib/grade/grade_item.php index 5ca7f1e713..f41f7e4dc3 100644 --- a/lib/grade/grade_item.php +++ b/lib/grade/grade_item.php @@ -489,6 +489,9 @@ class grade_item extends grade_object { $raw_grade->update($raw_grade->gradevalue, $howmodified, $note); } else { $raw_grade->itemid = $this->id; + if ($raw_grade->gradevalue > $raw_grade->grademax) { + die("raw GRADE EXCEEDED grademax FIRST"); + } $raw_grade->insert(); } @@ -536,6 +539,9 @@ class grade_item extends grade_object { $final_grade->gradevalue = $this->adjust_grade($raw_grade); $final_grade->itemid = $this->id; $final_grade->userid = $raw_grade->userid; + if ($final_grade->gradevalue > $this->grademax) { + die("FINAL GRADE EXCEEDED grademax FIRST"); + } $success = $success & $final_grade->insert(); $this->grade_grades_final[$final_grade->userid] = $final_grade; } diff --git a/lib/simpletest/grade/simpletest/testgradecategory.php b/lib/simpletest/grade/simpletest/testgradecategory.php index a1cf3d3325..1e050dcfad 100755 --- a/lib/simpletest/grade/simpletest/testgradecategory.php +++ b/lib/simpletest/grade/simpletest/testgradecategory.php @@ -175,6 +175,14 @@ class grade_category_test extends gradelib_test { $this->assertEqual(3, count($raw_grades)); $this->assertEqual(3, count($final_grades)); + + foreach ($raw_grades as $grade) { + $this->assertWithinMargin($grade->gradevalue, $grade->grademin, $grade->grademax); + } + + foreach ($final_grades as $grade) { + $this->assertWithinMargin($grade->gradevalue, 0, 100); + } } function test_grade_category_aggregate_grades() { @@ -202,12 +210,12 @@ class grade_category_test extends gradelib_test { $raw_grade = new grade_grades_raw(); $raw_grade->itemid = $item->id; $raw_grade->userid = $userid; - $raw_grade->grademin = $item->grademin; - $raw_grade->grademax = $item->grademax; + $raw_grade->grademin = 0; + $raw_grade->grademax = 1; $valuetype = "grade$item->gradetype"; $raw_grade->gradevalue = rand(0, 1000) / 1000; $raw_grade->insert(); - return $raw_grade; + return $raw_grade->gradevalue; } } ?> diff --git a/lib/simpletest/testgradelib.php b/lib/simpletest/testgradelib.php index 9db24fc9a8..423f2e90a7 100644 --- a/lib/simpletest/testgradelib.php +++ b/lib/simpletest/testgradelib.php @@ -849,7 +849,7 @@ class gradelib_test extends UnitTestCase { $grade_final = new stdClass(); $grade_final->itemid = $this->grade_items[2]->id; $grade_final->userid = 1; - $grade_final->gradevalue = 70.5; + $grade_final->gradevalue = 6; $grade_final->timecreated = mktime(); $grade_final->timemodified = mktime(); $grade_final->locked = true; @@ -861,7 +861,7 @@ class gradelib_test extends UnitTestCase { $grade_final = new stdClass(); $grade_final->itemid = $this->grade_items[2]->id; $grade_final->userid = 2; - $grade_final->gradevalue = 80.5; + $grade_final->gradevalue = 2; $grade_final->timecreated = mktime(); $grade_final->timemodified = mktime(); $grade_final->locked = true; @@ -873,7 +873,7 @@ class gradelib_test extends UnitTestCase { $grade_final = new stdClass(); $grade_final->itemid = $this->grade_items[2]->id; $grade_final->userid = 3; - $grade_final->gradevalue = 64.5; + $grade_final->gradevalue = 3; $grade_final->timecreated = mktime(); $grade_final->timemodified = mktime(); $grade_final->locked = false; -- 2.39.5