]> git.mjollnir.org Git - moodle.git/commitdiff
Fixed submission grade aggregation
authorDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:19:48 +0000 (18:19 +0000)
committerDavid Mudrak <david.mudrak@gmail.com>
Mon, 4 Jan 2010 18:19:48 +0000 (18:19 +0000)
Overriding the submission grade influence the total grade, not the
aggregated one.

mod/workshop/locallib.php
mod/workshop/simpletest/testlocallib.php

index 50f5ec0f383087f919e0cab05eafb234d01a39b0..28e7ef0b9f4eeaea9040a9d85a74297dfe612619 100644 (file)
@@ -1216,7 +1216,7 @@ class workshop {
         global $DB;
 
         // fetch a recordset with all assessments to process
-        $sql = 'SELECT s.id AS submissionid, s.grade AS submissiongrade, s.gradeover,
+        $sql = 'SELECT s.id AS submissionid, s.grade AS submissiongrade,
                        a.weight, a.grade
                   FROM {workshop_submissions} s
              LEFT JOIN {workshop_assessments} a ON (a.submissionid = s.id)
@@ -1412,11 +1412,6 @@ class workshop {
                 // the currently saved grade is the same in all records, fetch it during the first loop cycle
                 $current = $assessment->submissiongrade;
             }
-            if (!is_null($assessment->gradeover)) {
-                // the grade for this assessment is overriden by a teacher, no need to calculate anything
-                $finalgrade = grade_floatval($assessment->gradeover);
-                break;
-            }
             if (is_null($assessment->grade)) {
                 // this was not assessed yet
                 continue;
index 65ea02f734d5dfd15846d2b8afe693ca1df17883..cd7a92bbe4c68d9872a27929fdec8440b2598481 100644 (file)
@@ -83,8 +83,7 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => null);
+        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'weight' => 1, 'grade' => null);
         $DB->expectNever('set_field');
         // excercise SUT
         $this->workshop->aggregate_submission_grades_process($batch);
@@ -95,8 +94,7 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 10.12345);
+        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'weight' => 1, 'grade' => 10.12345);
         $expected = 10.12345;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 12)));
         // excercise SUT
@@ -108,10 +106,8 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 45.54321);
-        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => null);
+        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'weight' => 1, 'grade' => 45.54321);
+        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'weight' => 1, 'grade' => null);
         $expected = 45.54321;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 12)));
         // excercise SUT
@@ -123,8 +119,7 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'gradeover' => null,
-                'weight' => 4, 'grade' => 14.00012);
+        $batch[] = (object)array('submissionid' => 12, 'submissiongrade' => null, 'weight' => 4, 'grade' => 14.00012);
         $expected = 14.00012;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 12)));
         // excercise SUT
@@ -136,14 +131,10 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 56.12000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 12.59000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 10.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 0.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 56.12000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 12.59000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 10.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 0.00000);
         $expected = 19.67750;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 45)));
         // excercise SUT
@@ -155,14 +146,10 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 56.12000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 12.59000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 10.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 0.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'weight' => 1, 'grade' => 56.12000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'weight' => 1, 'grade' => 12.59000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'weight' => 1, 'grade' => 10.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 12.57750, 'weight' => 1, 'grade' => 0.00000);
         $expected = 19.67750;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 45)));
         // excercise SUT
@@ -174,14 +161,10 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 56.12000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 12.59000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 10.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'gradeover' => null, 'weight' => 1,
-                'grade' => 0.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'weight' => 1, 'grade' => 56.12000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'weight' => 1, 'grade' => 12.59000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'weight' => 1, 'grade' => 10.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => 19.67750, 'weight' => 1, 'grade' => 0.00000);
         $DB->expectNever('set_field');
         // excercise SUT
         $this->workshop->aggregate_submission_grades_process($batch);
@@ -192,12 +175,9 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 4.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 2.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null, 'weight' => 1,
-                'grade' => 1.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 4.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 2.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 1.00000);
         $expected = 2.33333;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 45)));
         // excercise SUT
@@ -209,49 +189,16 @@ class workshop_internal_api_test extends UnitTestCase {
 
         // fixture set-up
         $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null,
-                'weight' => 3, 'grade' => 12.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null,
-                'weight' => 2, 'grade' => 30.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null,
-                'weight' => 1, 'grade' => 10.00000);
-        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'gradeover' => null,
-                'weight' => 0, 'grade' => 1000.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 3, 'grade' => 12.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 2, 'grade' => 30.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 1, 'grade' => 10.00000);
+        $batch[] = (object)array('submissionid' => 45, 'submissiongrade' => null, 'weight' => 0, 'grade' => 1000.00000);
         $expected = 17.66667;
         $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 45)));
         // excercise SUT
         $this->workshop->aggregate_submission_grades_process($batch);
     }
 
-    public function test_aggregate_submission_grades_process_overriden_different() {
-        global $DB;
-
-        // fixture set-up
-        $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 11, 'submissiongrade' => null, 'gradeover' => 95.00000,
-                'weight' => 3, 'grade' => 100.00000);
-        $batch[] = (object)array('submissionid' => 11, 'submissiongrade' => null, 'gradeover' => 95.00000,
-                'weight' => 2, 'grade' => 96.50000);
-        $expected = 95.00000;
-        $DB->expectOnce('set_field', array('workshop_submissions', 'grade', $expected, array('id' => 11)));
-        // excercise SUT
-        $this->workshop->aggregate_submission_grades_process($batch);
-    }
-
-    public function test_aggregate_submission_grades_process_overriden_equals() {
-        global $DB;
-
-        // fixture set-up
-        $batch = array();   // batch of a submission's assessments
-        $batch[] = (object)array('submissionid' => 11, 'submissiongrade' => 95.00000, 'gradeover' => 95.00000,
-                'weight' => 3, 'grade' => 100.00000);
-        $batch[] = (object)array('submissionid' => 11, 'submissiongrade' => 95.00000, 'gradeover' => 95.00000,
-                'weight' => 2, 'grade' => 96.50000);
-        $DB->expectNever('set_field');
-        // excercise SUT
-        $this->workshop->aggregate_submission_grades_process($batch);
-    }
-
     public function test_aggregate_grading_grades_process_nograding() {
         global $DB;
         // fixture set-up