return true;
}
- private function fill_table_recursive(&$element) {
+ private function fill_table_recursive(&$element, &$aggregationhints = array()) {
global $DB, $CFG;
$type = $element['type'];
$data['contributiontocoursetotal']['class'] = $class;
$data['contributiontocoursetotal']['content'] = '-';
$data['contributiontocoursetotal']['headers'] = "$header_cat $header_row contributiontocoursetotal";
- /**
- if (($type != 'categoryitem') && ($type != 'courseitem')) {
- $weight = $grade_grade->get_aggregation_weight($grade_object);
- if (is_numeric($weight)) {
- $me = $grade_grade->grade_item;
- $percentoftotal = $hint;
- $validpercent = true;
- $parent = null;
- while ((!$me->is_course_item()) && ($validpercent)) {
- // The parent of a category grade item is itself (yes - how odd).
- // This means we need to use the parent of the grade_category if it exists.
- if (!empty($parent)) {
- $parent = $parent->get_parent_category();
- } else {
- $parent = $me->get_parent_category();
- }
- $parentgradeitem = $parent->load_grade_item();
- $parentgradegrade = grade_grade::fetch(array('itemid'=>$parentgradeitem->id, 'userid'=>$this->user->id));
- if (!$parentgradegrade) {
- $validpercent = false;
- continue;
- }
- $hint = $parentgradegrade->get_aggregation_hint($parentgradeitem);
- $me = $parentgradeitem;
- if (!is_numeric($hint)) {
- // It's OK for the course grade item to not have a usedinaggregation value.
- $validpercent = $parentgradeitem->is_course_item();
- continue;
- }
- $thispercent = $hint;
- $percentoftotal *= $thispercent;
- }
- if ($validpercent) {
- $grademin = $grade_grade->grade_item->grademin;
- $grademax = $grade_grade->grade_item->grademax;
- $finalgrade = $grade_grade->finalgrade;
- $contribution = format_float(((($finalgrade-$grademin)/($grademax-$grademin)*($percentoftotal * 100.0))),2);
- $data['contributiontocoursetotal']['content'] = $contribution;
- }
- }
- } **/
- $hint = $grade_grade->get_aggregation_hint($grade_object);
- if ($hint && is_numeric($hint)) {
- $data['contributiontocoursetotal']['content'] = $hint;
- $data['contributiontocoursetotal']['content'] .= ' ' . $grade_grade->finalgrade . ' ' . $grade_grade->rawgrademin . ' ' . $grade_grade->rawgrademax;
+
+ $hint['grademax'] = $grade_grade->grade_item->grademax;
+ $hint['grademin'] = $grade_grade->grade_item->grademin;
+ $hint['grade'] = $gradeval;
+ $parent = $grade_object->load_parent_category();
+ if ($grade_object->is_category_item()) {
+ $parent = $parent->load_parent_category();
}
+ $hint['parent'] = $parent->load_grade_item()->id;
+ $aggregationhints[$grade_grade->itemid] = $hint;
}
}
}
/// Recursively iterate through all child elements
if (isset($element['children'])) {
foreach ($element['children'] as $key=>$child) {
- $this->fill_table_recursive($element['children'][$key]);
+ $this->fill_table_recursive($element['children'][$key], $aggregationhints);
+ }
+ }
+
+ if ($this->showcontributiontocoursetotal && ($type == 'category' && $depth == 1)) {
+ // We should have collected all the hints by now - walk the tree again and build the contributions column.
+
+ $this->fill_contributions_column($element, $aggregationhints);
+ }
+ }
+
+ public function fill_contributions_column($element, $aggregationhints) {
+
+ /// Recursively iterate through all child elements
+ if (isset($element['children'])) {
+ foreach ($element['children'] as $key=>$child) {
+ $this->fill_contributions_column($element['children'][$key], $aggregationhints);
+ }
+ } else if ($element['type'] == 'item') {
+ $grade_object = $element['object'];
+ $itemid = $grade_object->id;
+ if (isset($aggregationhints[$itemid])) {
+
+ $graderange = $aggregationhints[$itemid]['grademax'] - $aggregationhints[$itemid]['grademin'];
+ $gradeval = ($aggregationhints[$itemid]['grade'] - $aggregationhints[$itemid]['grademin']) / $graderange;
+
+ $parent = $aggregationhints[$itemid]['parent'];
+ do {
+ if (!is_null($aggregationhints[$itemid]['weight'])) {
+ $gradeval *= $aggregationhints[$itemid]['weight'];
+ }
+
+ if (isset($aggregationhints[$itemid]['parent']) &&
+ $aggregationhints[$itemid]['parent'] != $itemid) {
+ $parent = $aggregationhints[$itemid]['parent'];
+ $itemid = $parent;
+ } else {
+ $parent = false;
+ }
+ } while ($parent);
+ $gradeval *= $aggregationhints[$itemid]['grademax'];
+
+ $header_row = "row_{$grade_object->id}_{$this->user->id}";
+ foreach ($this->tabledata as $key => $row) {
+ if (isset($row['itemname']) &&
+ ($row['itemname']['id'] == $header_row)) {
+ $decimals = $grade_object->get_decimals();
+ $this->tabledata[$key]['contributiontocoursetotal']['content'] = format_float($gradeval, $decimals, true);
+ break;
+ }
+ }
}
}
}
+++ /dev/null
-@core @core_grades
-Feature: We can understand the gradebook user report
- In order to understand the gradebook user report
- As an teacher
- I need to see the calculated weights for each type of aggregation
-
- Background:
- Given the following "courses" exist:
- | fullname | shortname | category | groupmode |
- | Course 1 | C1 | 0 | 1 |
- And the following "users" exist:
- | username | firstname | lastname | email | idnumber |
- | teacher1 | Teacher | 1 | teacher1@asd.com | t1 |
- | student1 | Student | 1 | student1@asd.com | s1 |
- And the following "course enrolments" exist:
- | user | course | role |
- | teacher1 | C1 | editingteacher |
- | student1 | C1 | student |
- And the following "activities" exist:
- | activity | course | idnumber | name | intro |
- | assign | C1 | a1 | Test assignment one | Submit something! |
- | assign | C1 | a2 | Test assignment two | Submit something! |
- | assign | C1 | a3 | Test assignment three | Submit something! |
- | assign | C1 | a4 | Test assignment four | Submit something! |
- | assign | C1 | a5 | Test assignment five | Submit something! |
- | assign | C1 | a6 | Test assignment six | Submit something! |
- And I log in as "admin"
- And I set the following administration settings values:
- | grade_aggregations_visible | Mean of grades,Weighted mean of grades,Simple weighted mean of grades,Mean of grades (with extra credits),Median of grades,Lowest grade,Highest grade,Mode of grades,Natural |
- And I log out
- And I log in as "teacher1"
- And I follow "Course 1"
- And I follow "Grades"
- And I turn editing mode on
- And I give the grade "60.00" to the user "Student 1" for the grade item "Test assignment one"
- And I give the grade "20.00" to the user "Student 1" for the grade item "Test assignment two"
- And I give the grade "40.00" to the user "Student 1" for the grade item "Test assignment three"
- And I give the grade "10.00" to the user "Student 1" for the grade item "Test assignment four"
- And I give the grade "70.00" to the user "Student 1" for the grade item "Test assignment five"
- And I give the grade "30.00" to the user "Student 1" for the grade item "Test assignment six"
- And I press "Save changes"
- And I navigate to "Course grade settings" node in "Grade administration > Settings"
- And I set the field "Show weightings" to "Show"
- And I set the field "Show contribution to course total" to "Show"
- And I press "Save changes"
- And I set the field "Grade report" to "Set up grades layout"
- And I press "Add category"
- And I set the field "Category name" to "Sub category"
- And I press "Save changes"
- And I click on "Move" "link" in the "Test assignment six" "table_row"
- # This xpath finds the forth last row in the table.
- And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
- And I click on "Move" "link" in the "Test assignment five" "table_row"
- And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
- And I click on "Move" "link" in the "Test assignment four" "table_row"
- And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
-
- @javascript
- Scenario: Mean of grades aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Mean of grades |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Weighted mean of grades aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Weighted mean of grades |
- And I set the following settings for grade item "Test assignment one":
- | Item weight | 2.0 |
- And I set the following settings for grade item "Test assignment two":
- | Item weight | 1.0 |
- And I set the following settings for grade item "Test assignment three":
- | Item weight | 1.0 |
- And I set the following settings for grade item "Sub category":
- | Item weight | 1.0 |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '40.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '20.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '20.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '40.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '20.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '20.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '6.67 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '6.67 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '6.67 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Simple weighted mean of grades aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Simple weighted mean of grades |
- And I set the following settings for grade item "Test assignment three":
- | Extra credit | 1 |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., 'Extra credit')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '-')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Mean of grades (with extra credits) aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Mean of grades (with extra credits) |
- And I set the following settings for grade item "Test assignment three":
- | Extra credit weight | 1.0 |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., 'Extra credit')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '-')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '11.11 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Median of grades aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Median of grades |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '25.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '8.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Lowest grade aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Lowest grade |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
-
- @javascript
- Scenario: Highest grade aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Highest grade |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Mode of grades aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Mode of grades |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '100.00 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '0.00 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
-
- @javascript
- Scenario: Natural aggregation
- And I set the following settings for grade item "Course 1":
- | Aggregation | Natural |
- And I set the following settings for grade item "Test assignment three":
- | Extra credit | 1 |
- And I set the field "Grade report" to "User report"
- And I set the field "Select all or one user" to "Student 1"
-
- # Check the values in the weights column.
- Then "//td[contains(@headers,'weight') and contains(., '38.30 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '12.77 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'weight') and contains(., 'Extra credit')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'weight') and contains(., '33.33 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"
- # Check the values in the contributions column.
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '38.30 %')]" "xpath_element" should exist in the "Test assignment one" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '12.77 %')]" "xpath_element" should exist in the "Test assignment two" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '-')]" "xpath_element" should exist in the "Test assignment three" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '7.80 %')]" "xpath_element" should exist in the "Test assignment four" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '7.80 %')]" "xpath_element" should exist in the "Test assignment five" "table_row"
- And "//td[contains(@headers,'contributiontocoursetotal') and contains(., '7.80 %')]" "xpath_element" should exist in the "Test assignment six" "table_row"