Merge branch 'wip-MDL-47676-master' of git://github.com/abgreeve/moodle
[moodle.git] / grade / tests / behat / grade_natural_normalisation.feature
1 @core @core_grades
2 Feature: We can use natural aggregation and weights will be normalised to a total of one hundred
3   In order to override weights
4   As a teacher
5   I need to add assessments to the gradebook.
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 "grade categories" exist:
20       | fullname | course |
21       | Sub category 1 | C1 |
22     And the following "activities" exist:
23       | activity | course | idnumber | name | intro | grade |
24       | assign | C1 | a1 | Test assignment one | Submit something! | 300 |
25       | assign | C1 | a2 | Test assignment two | Submit something! | 100 |
26       | assign | C1 | a3 | Test assignment three | Submit something! | 150 |
27       | assign | C1 | a4 | Test assignment four | Submit nothing! | 150 |
28     And the following "activities" exist:
29       | activity | course | idnumber | name | intro | gradecategory | grade |
30       | assign | C1 | a5 | Test assignment five | Submit something! | Sub category 1 | 20 |
31       | assign | C1 | a6 | Test assignment six | Submit something! | Sub category 1 | 10 |
32       | assign | C1 | a7 | Test assignment seven | Submit nothing! | Sub category 1 | 15 |
33     And I log in as "teacher1"
34     And I follow "Course 1"
35     And I follow "Grades"
36     And I set the field "Grade report" to "Categories and items"
38   @javascript
39   Scenario: Setting all weights in a category to exactly one hundred in total.
41     And the field "Weight of Test assignment five" matches value "44.444"
42     And the field "Weight of Test assignment six" matches value "22.222"
43     And the field "Weight of Test assignment seven" matches value "33.333"
44     When I set the field "Override weight of Test assignment five" to "1"
45     And I set the field "Override weight of Test assignment six" to "1"
46     And I set the field "Override weight of Test assignment seven" to "1"
47     And I set the field "Weight of Test assignment five" to "30"
48     And I set the field "Weight of Test assignment six" to "50"
49     And I set the field "Weight of Test assignment seven" to "20"
50     And I press "Save changes"
52     Then I should not see "Your weights have been adjusted to total 100."
53     And the field "Weight of Test assignment five" matches value "30.0"
54     And the field "Weight of Test assignment six" matches value "50.0"
55     And the field "Weight of Test assignment seven" matches value "20.0"
57   @javascript
58   Scenario: Setting all weights in a category to less than one hundred is normalised.
60     When I set the field "Override weight of Test assignment five" to "1"
61     And I set the field "Override weight of Test assignment six" to "1"
62     And I set the field "Override weight of Test assignment seven" to "1"
63     And I set the field "Weight of Test assignment five" to "1"
64     And I set the field "Weight of Test assignment six" to "1"
65     And I set the field "Weight of Test assignment seven" to "2"
66     And I press "Save changes"
68     Then I should see "Your weights have been adjusted to total 100."
69     And the field "Weight of Test assignment five" matches value "25.0"
70     And the field "Weight of Test assignment six" matches value "25.0"
71     And the field "Weight of Test assignment seven" matches value "50.0"
73   @javascript
74   Scenario: Set one of the grade item weights to a figure over one hundred.
76     When I set the field "Override weight of Test assignment five" to "1"
77     And I set the field "Weight of Test assignment five" to "120"
78     And I press "Save changes"
80     Then I should see "Your weights have been adjusted to total 100."
81     And the field "Weight of Test assignment five" matches value "100.0"
82     And the field "Weight of Test assignment six" matches value "0.0"
83     And the field "Weight of Test assignment seven" matches value "0.0"
85   @javascript
86   Scenario: Setting several but not all grade item weights to over one hundred each.
88     When I set the field "Override weight of Test assignment five" to "1"
89     And I set the field "Override weight of Test assignment six" to "1"
90     And I set the field "Weight of Test assignment five" to "150"
91     And I set the field "Weight of Test assignment six" to "150"
92     And I press "Save changes"
94     Then I should see "Your weights have been adjusted to total 100."
95     And the field "Weight of Test assignment five" matches value "50.000"
96     And the field "Weight of Test assignment six" matches value "50.000"
97     And the field "Weight of Test assignment seven" matches value "0.0"
99   @javascript
100   Scenario: Grade items weights are normalised when all grade item weights are overridden (sum exactly 100). Extra credit is set to zero.
102     When I set the following settings for grade item "Test assignment seven":
103       | Extra credit | 1 |
104     And the field "Weight of Test assignment five" matches value "66.667"
105     And the field "Weight of Test assignment six" matches value "33.333"
106     And the field "Weight of Test assignment seven" matches value "50.0"
107     And I set the field "Override weight of Test assignment five" to "1"
108     And I set the field "Override weight of Test assignment six" to "1"
109     And I set the field "Weight of Test assignment five" to "60"
110     And I set the field "Weight of Test assignment six" to "40"
111     And I press "Save changes"
113     Then I should see "Your weights have been adjusted to total 100."
114     And the field "Weight of Test assignment five" matches value "60.000"
115     And the field "Weight of Test assignment six" matches value "40.000"
116     And the field "Weight of Test assignment seven" matches value "0.0"
117     And I reset weights for grade category "Sub category 1"
118     And the field "Weight of Test assignment five" matches value "66.667"
119     And the field "Weight of Test assignment six" matches value "33.333"
120     And the field "Weight of Test assignment seven" matches value "50.0"
122   @javascript
123   Scenario: Grade items weights are normalised when all grade item weights are overridden (sum over 100). Extra credit is set to zero.
125     When I set the following settings for grade item "Test assignment seven":
126       | Extra credit | 1 |
127     And I set the field "Override weight of Test assignment five" to "1"
128     And I set the field "Override weight of Test assignment six" to "1"
129     And I set the field "Weight of Test assignment five" to "60"
130     And I set the field "Weight of Test assignment six" to "50"
131     And I press "Save changes"
133     Then I should see "Your weights have been adjusted to total 100."
134     And the field "Weight of Test assignment five" matches value "54.545"
135     And the field "Weight of Test assignment six" matches value "45.455"
136     And the field "Weight of Test assignment seven" matches value "0.0"
137     And I reset weights for grade category "Sub category 1"
138     And the field "Weight of Test assignment five" matches value "66.667"
139     And the field "Weight of Test assignment six" matches value "33.333"
140     And the field "Weight of Test assignment seven" matches value "50.0"
142   @javascript
143   Scenario: Grade items weights are normalised when all grade item weights are overridden (sum under 100). Extra credit is set to zero.
145     When I set the following settings for grade item "Test assignment seven":
146       | Extra credit | 1 |
147     And I set the field "Override weight of Test assignment five" to "1"
148     And I set the field "Override weight of Test assignment six" to "1"
149     And I set the field "Weight of Test assignment five" to "40"
150     And I set the field "Weight of Test assignment six" to "30"
151     And I press "Save changes"
153     Then I should see "Your weights have been adjusted to total 100."
154     And the field "Weight of Test assignment five" matches value "57.143"
155     And the field "Weight of Test assignment six" matches value "42.857"
156     And the field "Weight of Test assignment seven" matches value "0.0"
157     And I reset weights for grade category "Sub category 1"
158     And the field "Weight of Test assignment five" matches value "66.667"
159     And the field "Weight of Test assignment six" matches value "33.333"
160     And the field "Weight of Test assignment seven" matches value "50.0"
162   @javascript
163   Scenario: Grade items weights are normalised when not all grade item weights are overridden. Extra credit is set respectful to non-overridden items.
165     When I set the following settings for grade item "Test assignment seven":
166       | Extra credit | 1 |
167     And I set the field "Override weight of Test assignment five" to "1"
168     And I set the field "Weight of Test assignment five" to "40"
169     And I press "Save changes"
171     Then I should see "Your weights have been adjusted to total 100."
172     And the field "Weight of Test assignment five" matches value "40.00"
173     And the field "Weight of Test assignment six" matches value "60.000"
174     And the field "Weight of Test assignment seven" matches value "90.0"
175     And I reset weights for grade category "Sub category 1"
176     And the field "Weight of Test assignment five" matches value "66.667"
177     And the field "Weight of Test assignment six" matches value "33.333"
178     And the field "Weight of Test assignment seven" matches value "50.0"
180   @javascript
181   Scenario: The extra credit grade item weight is overridden to a figure over one hundred and then
182   the grade item is set to normal.
184     When I set the following settings for grade item "Test assignment seven":
185       | Extra credit | 1 |
186     And I set the field "Override weight of Test assignment seven" to "1"
187     And I set the field "Weight of Test assignment seven" to "105"
188     And I press "Save changes"
189     Then I should not see "Your weights have been adjusted to total 100."
190     And the field "Weight of Test assignment five" matches value "66.667"
191     And the field "Weight of Test assignment six" matches value "33.333"
192     And the field "Weight of Test assignment seven" matches value "105.0"
193     When I set the following settings for grade item "Test assignment seven":
194       | Extra credit | 0 |
195     And I should see "Your weights have been adjusted to total 100."
197     And the field "Weight of Test assignment five" matches value "0.0"
198     And the field "Weight of Test assignment six" matches value "0.0"
199     And the field "Weight of Test assignment seven" matches value "100.0"
201   @javascript
202   Scenario: The extra credit grade item weight is overridden to a figure over one hundred and then
203   the grade category is reset.
205     When I set the following settings for grade item "Test assignment seven":
206       | Extra credit | 1 |
207     And I set the field "Override weight of Test assignment seven" to "1"
208     And I set the field "Weight of Test assignment seven" to "105"
209     And I press "Save changes"
211     And I reset weights for grade category "Sub category 1"
212     And the field "Weight of Test assignment five" matches value "66.667"
213     And the field "Weight of Test assignment six" matches value "33.333"
214     And the field "Weight of Test assignment seven" matches value "50.0"
216   @javascript
217   Scenario: Two out of three grade items weights are overridden and one is not.
218   The overridden grade item weights total over one hundred.
220     Given I set the field "Override weight of Test assignment six" to "1"
221     And I set the field "Override weight of Test assignment seven" to "1"
222     And I set the field "Weight of Test assignment six" to "55"
223     And I set the field "Weight of Test assignment seven" to "65"
224     And I press "Save changes"
225     And I should see "Your weights have been adjusted to total 100."
227     Then the field "Weight of Test assignment five" matches value "0.0"
228     And the field "Weight of Test assignment six" matches value "45.833"
229     And the field "Weight of Test assignment seven" matches value "54.167"
231   @javascript
232   Scenario: With one grade item set as extra credit, when I reset the weights for a category they return to the natural weights.
234   When I set the following settings for grade item "Test assignment five":
235     | Extra credit | 1 |
236   And I set the field "Override weight of Test assignment six" to "1"
237   And I set the field "Override weight of Test assignment seven" to "1"
238   And I set the field "Weight of Test assignment six" to "55"
239   And I set the field "Weight of Test assignment seven" to "40"
240   And I press "Save changes"
241   And I reset weights for grade category "Sub category 1"
242   Then the field "Weight of Test assignment five" matches value "80.0"
243   And the field "Weight of Test assignment six" matches value "40.0"
244   And the field "Weight of Test assignment seven" matches value "60.0"
246   @javascript
247   Scenario: Overriding a grade item with a negative value results in the value being changed to zero.
249   When I set the field "Override weight of Test assignment five" to "1"
250   And I set the field "Weight of Test assignment five" to "-15"
251   And I press "Save changes"
252   Then the field "Weight of Test assignment five" matches value "0.0"
253   And the field "Weight of Test assignment six" matches value "40.0"
254   And the field "Weight of Test assignment seven" matches value "60.0"
255   And I set the field "Override weight of Test assignment six" to "1"
256   And I set the field "Weight of Test assignment six" to "-25"
257   And I press "Save changes"
258   And the field "Weight of Test assignment six" matches value "0.0"
259   And the field "Weight of Test assignment seven" matches value "100.0"
260   And I follow "Reset weights of Sub category 1"
261   And I set the field "Override weight of Test assignment five" to "1"
262   And I set the field "Override weight of Test assignment six" to "1"
263   And I set the field "Weight of Test assignment five" to "-10"
264   And I set the field "Weight of Test assignment six" to "120"
265   And I press "Save changes"
266   And the field "Weight of Test assignment five" matches value "0.0"
267   And the field "Weight of Test assignment six" matches value "100.0"
268   And the field "Weight of Test assignment seven" matches value "0.0"