From: nicolasconnault <nicolasconnault>
Date: Mon, 14 May 2007 08:18:03 +0000 (+0000)
Subject: MDL-9506 Added some unit tests, found some errors, and realised they came from incorr... 
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=dda0c7e6663a990b57d526cbf39e03eec708e173;p=moodle.git

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.
---

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;