MDL-47253 core_grades: set def aggregation method to Natural
[moodle.git] / grade / tests / behat / grade_calculated_weights.feature
1 @core @core_grades
2 Feature: We can understand the gradebook user report
3   In order to understand the gradebook user report
4   As an teacher
5   I need to see the calculated weights for each type of aggregation
7   Background:
8     Given the following "courses" exist:
9       | fullname | shortname | category | groupmode |
10       | Course 1 | C1 | 0 | 1 |
11     And the following "users" exist:
12       | username | firstname | lastname | email | idnumber |
13       | teacher1 | Teacher | 1 | teacher1@asd.com | t1 |
14       | student1 | Student | 1 | student1@asd.com | s1 |
15     And the following "course enrolments" exist:
16       | user | course | role |
17       | teacher1 | C1 | editingteacher |
18       | student1 | C1 | student |
19     And the following "activities" exist:
20       | activity | course | idnumber | name | intro |
21       | assign | C1 | a1 | Test assignment one | Submit something! |
22       | assign | C1 | a2 | Test assignment two | Submit something! |
23       | assign | C1 | a3 | Test assignment three | Submit something! |
24       | assign | C1 | a4 | Test assignment four | Submit something! |
25       | assign | C1 | a5 | Test assignment five | Submit something! |
26       | assign | C1 | a6 | Test assignment six | Submit something! |
27     And I log in as "admin"
28     And I set the following administration settings values:
29       | 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 |
30     And I log out
31     And I log in as "teacher1"
32     And I follow "Course 1"
33     And I follow "Grades"
34     And I turn editing mode on
35     And I give the grade "60.00" to the user "Student 1" for the grade item "Test assignment one"
36     And I give the grade "20.00" to the user "Student 1" for the grade item "Test assignment two"
37     And I give the grade "40.00" to the user "Student 1" for the grade item "Test assignment three"
38     And I give the grade "10.00" to the user "Student 1" for the grade item "Test assignment four"
39     And I give the grade "70.00" to the user "Student 1" for the grade item "Test assignment five"
40     And I give the grade "30.00" to the user "Student 1" for the grade item "Test assignment six"
41     And I press "Save changes"
42     And I navigate to "Course grade settings" node in "Grade administration > Settings"
43     And I set the field "Show weightings" to "Show"
44     And I set the field "Show contribution to course total" to "Show"
45     And I press "Save changes"
46     And I set the field "Grade report" to "Set up grades layout"
47     And I press "Add category"
48     And I set the field "Category name" to "Sub category"
49     And I press "Save changes"
50     And I click on "Move" "link" in the "Test assignment six" "table_row"
51     # This xpath finds the forth last row in the table.
52     And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
53     And I click on "Move" "link" in the "Test assignment five" "table_row"
54     And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
55     And I click on "Move" "link" in the "Test assignment four" "table_row"
56     And I click on "Move to here" "link" in the "//tbody//tr[position()=last()-3]" "xpath_element"
58   @javascript
59   Scenario: Mean of grades aggregation
60     And I set the following settings for grade item "Course 1":
61       | Aggregation | Mean of grades |
62     And I set the field "Grade report" to "User report"
63     And I set the field "Select all or one user" to "Student 1"
65     # Check the values in the weights column.
66     Then the following should exist in the "user-grade" table:
67       | Grade item | Calculated weight | Grade | Contribution to course total |
68       | Test assignment one | 25.00 % | 60.00 | 15.00 |
69       | Test assignment two | 25.00 % | 20.00 | 5.00 |
70       | Test assignment three | 25.00 % | 40.00 | 10.00 |
71       | Test assignment four | 33.33 % | 10.00 | 0.83 |
72       | Test assignment five | 33.33 % | 70.00 | 5.83 |
73       | Test assignment six | 33.33 % | 30.00 | 2.50 |
75   @javascript
76   Scenario: Weighted mean of grades aggregation
77     And I set the following settings for grade item "Course 1":
78       | Aggregation | Weighted mean of grades |
79     And I set the following settings for grade item "Test assignment one":
80       | Item weight | 2.0 |
81     And I set the following settings for grade item "Test assignment two":
82       | Item weight | 1.0 |
83     And I set the following settings for grade item "Test assignment three":
84       | Item weight | 1.0 |
85     And I set the following settings for grade item "Sub category":
86       | Item weight | 1.0 |
87     And I set the field "Grade report" to "User report"
88     And I set the field "Select all or one user" to "Student 1"
90     # Check the values in the weights column.
91     Then the following should exist in the "user-grade" table:
92       | Grade item | Calculated weight | Grade | Contribution to course total |
93       | Test assignment one | 40.00 % | 60.00 | 24.00 |
94       | Test assignment two | 20.00 % | 20.00 | 4.00 |
95       | Test assignment three | 20.00 % | 40.00 | 8.00 |
96       | Test assignment four | 33.33 % | 10.00 | 0.67 |
97       | Test assignment five | 33.33 % | 70.00 | 4.67 |
98       | Test assignment six | 33.33 % | 30.00 | 2.00 |
100   @javascript
101   Scenario: Simple weighted mean of grades aggregation
102     And I set the following settings for grade item "Course 1":
103       | Aggregation | Simple weighted mean of grades |
104     And I set the following settings for grade item "Sub category":
105       | Aggregation | Simple weighted mean of grades |
106     And I set the following settings for grade item "Test assignment three":
107       | Extra credit | 1 |
108     And I set the field "Grade report" to "User report"
109     And I set the field "Select all or one user" to "Student 1"
111     # Check the values in the weights column.
112     Then the following should exist in the "user-grade" table:
113       | Grade item | Calculated weight | Grade | Contribution to course total |
114       | Test assignment one | 33.33 % | 60.00 | 20.00 |
115       | Test assignment two | 33.33 % | 20.00 | 6.67 |
116       | Test assignment three | 33.33 %( Extra credit ) | 40.00 | 13.33 |
117       | Test assignment four | 33.33 % | 10.00 | 1.11 |
118       | Test assignment five | 33.33 % | 70.00 | 7.78 |
119       | Test assignment six | 33.33 % | 30.00 | 3.33 |
121   @javascript
122   Scenario: Mean of grades (with extra credits) aggregation
123     And I set the following settings for grade item "Course 1":
124       | Aggregation | Mean of grades (with extra credits) |
125     And I set the following settings for grade item "Test assignment three":
126       | Extra credit weight | 1.0 |
127     And I set the field "Grade report" to "User report"
128     And I set the field "Select all or one user" to "Student 1"
130     # Check the values in the weights column.
131     Then the following should exist in the "user-grade" table:
132       | Grade item | Calculated weight | Grade | Contribution to course total |
133       | Test assignment one | 33.33 % | 60.00 | 20.00 |
134       | Test assignment two | 33.33 % | 20.00 | 6.67 |
135       | Test assignment three | 33.33 %( Extra credit ) | 40.00 | 13.33 |
136       | Test assignment four | 33.33 % | 10.00 | 1.11 |
137       | Test assignment five | 33.33 % | 70.00 | 7.78 |
138       | Test assignment six | 33.33 % | 30.00 | 3.33 |
140   @javascript
141   Scenario: Median of grades aggregation
142     And I set the following settings for grade item "Course 1":
143       | Aggregation | Median of grades |
144     And I set the field "Grade report" to "User report"
145     And I set the field "Select all or one user" to "Student 1"
147     # Check the values in the weights column.
148     Then the following should exist in the "user-grade" table:
149       | Grade item | Calculated weight | Grade | Contribution to course total |
150       | Test assignment one | 0.00 % | 60.00 | 0.00 |
151       | Test assignment two | 0.00 % | 20.00 | 0.00 |
152       | Test assignment three | 50.00 % | 40.00 | 20.00 |
153       | Test assignment four | 33.33 % | 10.00 | 1.67 |
154       | Test assignment five | 33.33 % | 70.00 | 11.67 |
155       | Test assignment six | 33.33 % | 30.00 | 5.00 |
157   @javascript
158   Scenario: Lowest grade aggregation
159     And I set the following settings for grade item "Course 1":
160       | Aggregation | Lowest grade |
161     And I set the field "Grade report" to "User report"
162     And I set the field "Select all or one user" to "Student 1"
164     # Check the values in the weights column.
165     Then the following should exist in the "user-grade" table:
166       | Grade item | Calculated weight | Grade | Contribution to course total |
167       | Test assignment one | 0.00 % | 60.00 | 0.00 |
168       | Test assignment two | 100.00 % | 20.00 | 20.00 |
169       | Test assignment three | 0.00 % | 40.00 | 0.00 |
170       | Test assignment four | 33.33 % | 10.00 | 0.00 |
171       | Test assignment five | 33.33 % | 70.00 | 0.00 |
172       | Test assignment six | 33.33 % | 30.00 | 0.00 |
174   @javascript
175   Scenario: Highest grade aggregation
176     And I set the following settings for grade item "Course 1":
177       | Aggregation | Highest grade |
178     And I set the field "Grade report" to "User report"
179     And I set the field "Select all or one user" to "Student 1"
181     # Check the values in the weights column.
182     Then the following should exist in the "user-grade" table:
183       | Grade item | Calculated weight | Grade | Contribution to course total |
184       | Test assignment one | 100.00 % | 60.00 | 60.00 |
185       | Test assignment two | 0.00 % | 20.00 | 0.00 |
186       | Test assignment three | 0.00 % | 40.00 | 0.00 |
187       | Test assignment four | 33.33 % | 10.00 | 0.00 |
188       | Test assignment five | 33.33 % | 70.00 | 0.00 |
189       | Test assignment six | 33.33 % | 30.00 | 0.00 |
191   @javascript
192   Scenario: Mode of grades aggregation
193     And I set the following settings for grade item "Course 1":
194       | Aggregation | Mode of grades |
195     And I set the field "Grade report" to "User report"
196     And I set the field "Select all or one user" to "Student 1"
198     # Check the values in the weights column.
199     Then the following should exist in the "user-grade" table:
200       | Grade item | Calculated weight | Grade | Contribution to course total |
201       | Test assignment one | 100.00 % | 60.00 | 60.00 |
202       | Test assignment two | 0.00 % | 20.00 | 0.00 |
203       | Test assignment three | 0.00 % | 40.00 | 0.00 |
204       | Test assignment four | 33.33 % | 10.00 | 0.00 |
205       | Test assignment five | 33.33 % | 70.00 | 0.00 |
206       | Test assignment six | 33.33 % | 30.00 | 0.00 |
208   @javascript
209   Scenario: View user report with mixed aggregation methods
210     And I set the following settings for grade item "Course 1":
211       | Aggregation | Natural |
212     And I set the following settings for grade item "Sub category":
213       | Aggregation | Weighted mean of grades |
214     And I set the following settings for grade item "Test assignment three":
215       | Extra credit | 1 |
216     And I set the field "Grade report" to "User report"
217     And I set the field "Select all or one user" to "Student 1"
219     # Check the values in the weights column.
220     Then the following should exist in the "user-grade" table:
221       | Grade item | Calculated weight | Grade | Contribution to course total |
222       | Test assignment one | 33.33 % | 60.00 | 60.00 |
223       | Test assignment two | 33.33 % | 20.00 | 20.00 |
224       | Test assignment three | 33.33 %( Extra credit ) | 40.00 | 40.00 |
225       | Test assignment four | 33.33 % | 10.00 | 3.33 |
226       | Test assignment five | 33.33 % | 70.00 | 23.33 |
227       | Test assignment six | 33.33 % | 30.00 | 10.00 |
228       | Category totalWeighted mean of grades. | 33.33 % | 36.67 | - |
229       | Course totalNatural. | - | 156.67 | - |
231   @javascript
232   Scenario: View user report with natural aggregation
233     And I set the following settings for grade item "Test assignment three":
234       | Extra credit | 1 |
235     And I set the field "Grade report" to "User report"
236     And I set the field "Select all or one user" to "Student 1"
238     # Check the values in the weights column.
239     Then the following should exist in the "user-grade" table:
240       | Grade item | Calculated weight | Grade | Contribution to course total |
241       | Test assignment one | 20.00 % | 60.00 | 60.00 |
242       | Test assignment two | 20.00 % | 20.00 | 20.00 |
243       | Test assignment three | 20.00 %( Extra credit ) | 40.00 | 40.00 |
244       | Test assignment four | 33.33 % | 10.00 | 10.00 |
245       | Test assignment five | 33.33 % | 70.00 | 70.00 |
246       | Test assignment six | 33.33 % | 30.00 | 30.00 |
247       | Category totalNatural. | 60.00 % | 110.00 | - |
248       | Course totalNatural. | - | 230.00 | - |