Merge branch 'MDL-68286-master' of git://github.com/andrewnicols/moodle
[moodle.git] / badges / tests / behat / criteria_cohort.feature
1 @core @core_badges @_file_upload
2 Feature: Award badges based on cohort
3   In order to award badges to users based on their cohort membership
4   As an admin
5   I need to add cohort criteria to badges in the system
7   @javascript
8   Scenario: Award cohort membership badge for a member of a single cohort.
9     Given the following "cohorts" exist:
10       | name       | idnumber |
11       | One Cohort | CH1      |
12       | Two Cohort | CH2      |
13     And the following "users" exist:
14       | username | firstname | lastname | email           |
15       | user1    | First     | User     | first@example.com  |
16       | user2    | Second    | User     | second@example.com |
17     And the following "cohort members" exist:
18       | user  | cohort |
19       | user1 | CH1   |
20       | user2 | CH2   |
21     And I log in as "admin"
22     And I navigate to "Badges > Add a new badge" in site administration
23     And I set the following fields to these values:
24       | Name | Site Badge |
25       | Description | Site badge description |
26       | issuername | Tester of site badge |
27     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
28     And I press "Create badge"
29     And I set the field "type" to "Cohort membership"
30     And I set the field "id_cohort_cohorts" to "One Cohort"
31     And I press "Save"
32     And I press "Enable access"
33     When I press "Continue"
34     Then I should see "Recipients (1)"
35     And I log out
36     And I log in as "user1"
37     And I follow "Profile" in the user menu
38     And I should see "Site Badge"
40   @javascript
41   Scenario: Award cohort membership badge for a member of all required cohorts.
42     Given the following "cohorts" exist:
43       | name         | idnumber |
44       | One Cohort   | CH1      |
45       | Two Cohort   | CH2      |
46       | Three Cohort | CH3      |
47     And the following "users" exist:
48       | username | firstname | lastname | email           |
49       | user1    | First     | User     | first@example.com  |
50       | user2    | Second    | User     | second@example.com |
51     And the following "cohort members" exist:
52       | user  | cohort |
53       | user1 | CH1   |
54       | user1 | CH2   |
55       | user2 | CH1   |
56       | user2 | CH3   |
57     And I log in as "admin"
58     And I navigate to "Badges > Add a new badge" in site administration
59     And I set the following fields to these values:
60       | Name | Site Badge |
61       | Description | Site badge description |
62       | issuername | Tester of site badge |
63     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
64     And I press "Create badge"
65     And I set the field "type" to "Cohort membership"
66     And I expand all fieldsets
67     And I set the field "id_cohort_cohorts" to "One Cohort,Two Cohort"
68     And I set the field "id_agg_1" to "1"
69     And I press "Save"
70     When I press "Enable access"
71     And I press "Continue"
72     Then I should see "Recipients (1)"
73     And I log out
74     And I log in as "user1"
75     And I follow "Profile" in the user menu
76     And I should see "Site Badge"
78   @javascript
79   Scenario: Award cohort membership badge for a member of any required cohorts.
80     Given the following "cohorts" exist:
81       | name         | idnumber |
82       | One Cohort   | CH1      |
83       | Two Cohort   | CH2      |
84       | Three Cohort | CH3      |
85     And the following "users" exist:
86       | username | firstname | lastname | email              |
87       | user1    | First     | User     | first@example.com  |
88       | user2    | Second    | User     | second@example.com |
89       | user3    | third     | User     | third@example.com  |
90     And the following "cohort members" exist:
91       | user  | cohort |
92       | user1 | CH1   |
93       | user1 | CH2   |
94       | user2 | CH1   |
95       | user2 | CH3   |
96       | user3 | CH2   |
97       | user3 | CH3   |
98     And I log in as "admin"
99     And I navigate to "Badges > Add a new badge" in site administration
100     And I set the following fields to these values:
101       | Name | Site Badge |
102       | Description | Site badge description |
103       | issuername | Tester of site badge |
104     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
105     And I press "Create badge"
106     And I set the field "type" to "Cohort membership"
107     And I set the field "id_cohort_cohorts" to "One Cohort"
108     And I press "Save"
109     When I press "Enable access"
110     And I press "Continue"
111     Then I should see "Recipients (2)"
112     And I log out
113     And I log in as "user1"
114     And I follow "Profile" in the user menu
115     And I should see "Site Badge"
116     And I log out
117     And I log in as "user2"
118     And I follow "Profile" in the user menu
119     And I should see "Site Badge"
121   @javascript
122   Scenario: Award badge based on a single cohort membership and other criteria.
123     Given the following "cohorts" exist:
124       | name       | idnumber |
125       | One Cohort | CH1      |
126       | Two Cohort | CH2      |
127     And the following "users" exist:
128       | username | firstname | lastname | email           |
129       | user1    | First     | User     | first@example.com  |
130       | user2    | Second    | User     | second@example.com |
131     And the following "cohort members" exist:
132       | user  | cohort |
133       | user1 | CH1   |
134       | user2 | CH2   |
135     And I log in as "admin"
136     And I navigate to "Badges > Add a new badge" in site administration
137     And I set the following fields to these values:
138       | Name | Site Badge |
139       | Description | Site badge description |
140       | issuername | Tester of site badge |
141     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
142     And I press "Create badge"
143     And I set the field "type" to "Cohort membership"
144     And I set the field "id_cohort_cohorts" to "One Cohort"
145     And I press "Save"
146     And I set the field "type" to "Manual issue by role"
147     And I expand all fieldsets
148     And I set the field "Manager" to "1"
149     And I set the field "Any of the selected roles awards the badge" to "1"
150     And I press "Save"
151     When I press "Enable access"
152     And I press "Continue"
153     And I follow "Recipients (0)"
154     And I press "Award badge"
155     And I set the field "potentialrecipients[]" to "First User (first@example.com)"
156     And I press "Award badge"
157     And I set the field "potentialrecipients[]" to "Second User (second@example.com)"
158     And I press "Award badge"
159     And I follow "Site Badge"
160     Then I should see "Recipients (1)"
161     And I log out
162     And I log in as "user1"
163     And I follow "Profile" in the user menu
164     And I should see "Site Badge"
165     And I log out
166     And I log in as "user2"
167     And I follow "Profile" in the user menu
168     And I should not see "Site Badge"
170   @javascript
171   Scenario: Award badge based on a single cohort membership or other criteria.
172     Given the following "cohorts" exist:
173       | name       | idnumber |
174       | One Cohort | CH1      |
175       | Two Cohort | CH2      |
176     And the following "users" exist:
177       | username | firstname | lastname | email              |
178       | user1    | First     | User     | first@example.com  |
179       | user2    | Second    | User     | second@example.com |
180       | user3    | Third     | User     | third@example.com  |
181     And the following "cohort members" exist:
182       | user  | cohort |
183       | user1 | CH1   |
184       | user2 | CH2   |
185       | user3 | CH2   |
186     And I log in as "admin"
187     And I navigate to "Badges > Add a new badge" in site administration
188     And I set the following fields to these values:
189       | Name | Site Badge |
190       | Description | Site badge description |
191       | issuername | Tester of site badge |
192     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
193     And I press "Create badge"
194     And I set the field "type" to "Cohort membership"
195     And I set the field "id_cohort_cohorts" to "One Cohort"
196     And I press "Save"
197     And I set the field "type" to "Manual issue by role"
198     And I expand all fieldsets
199     And I set the field "Manager" to "1"
200     And I set the field "Any of the selected roles awards the badge" to "1"
201     And I press "Save"
202     And I set the field "update" to "Any"
203     When I press "Enable access"
204     And I press "Continue"
205     And I follow "Recipients (1)"
206     And I press "Award badge"
207     And I set the field "potentialrecipients[]" to "First User (first@example.com)"
208     And I press "Award badge"
209     And I set the field "potentialrecipients[]" to "Second User (second@example.com)"
210     And I press "Award badge"
211     And I follow "Site Badge"
212     Then I should see "Recipients (2)"
213     And I log out
214     And I log in as "user1"
215     And I follow "Profile" in the user menu
216     And I should see "Site Badge"
217     And I log out
218     And I log in as "user2"
219     And I follow "Profile" in the user menu
220     And I should see "Site Badge"
221     And I log out
222     And I log in as "user3"
223     And I follow "Profile" in the user menu
224     And I should not see "Site Badge"
226   @javascript
227   Scenario: Award badge based on a multiple cohort membership or other criteria.
228     Given the following "cohorts" exist:
229       | name       | idnumber |
230       | One Cohort | CH1      |
231       | Two Cohort | CH2      |
232     And the following "users" exist:
233       | username | firstname | lastname | email           |
234       | user1    | First     | User     | first@example.com  |
235       | user2    | Second    | User     | second@example.com |
236       | user3    | third     | User     | third@example.com  |
237     And the following "cohort members" exist:
238       | user  | cohort |
239       | user1 | CH1   |
240       | user1 | CH2   |
241       | user2 | CH2   |
242       | user2 | CH2   |
243     And I log in as "admin"
244     And I navigate to "Badges > Add a new badge" in site administration
245     And I set the following fields to these values:
246       | Name | Site Badge |
247       | Description | Site badge description |
248       | issuername | Tester of site badge |
249     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
250     And I press "Create badge"
251     And I set the field "type" to "Cohort membership"
252     And I set the field "id_cohort_cohorts" to "One Cohort"
253     And I press "Save"
254     And I set the field "type" to "Manual issue by role"
255     And I expand all fieldsets
256     And I set the field "Manager" to "1"
257     And I set the field "Any of the selected roles awards the badge" to "1"
258     And I press "Save"
259     And I set the field "update" to "Any"
260     When I press "Enable access"
261     And I press "Continue"
262     And I follow "Recipients (1)"
263     And I press "Award badge"
264     And I set the field "potentialrecipients[]" to "First User (first@example.com)"
265     And I press "Award badge"
266     And I set the field "potentialrecipients[]" to "Second User (second@example.com)"
267     And I press "Award badge"
268     And I follow "Site Badge"
269     Then I should see "Recipients (2)"
270     And I log out
271     And I log in as "user1"
272     And I follow "Profile" in the user menu
273     And I should see "Site Badge"
274     And I log out
275     And I log in as "user2"
276     And I follow "Profile" in the user menu
277     And I should see "Site Badge"
278     And I log out
279     And I log in as "user3"
280     And I follow "Profile" in the user menu
281     And I should not see "Site Badge"
283   @javascript
284   Scenario: Award badge based on a multiple cohort membership and other criteria.
285     Given the following "cohorts" exist:
286       | name       | idnumber |
287       | One Cohort | CH1      |
288       | Two Cohort | CH2      |
289     And the following "users" exist:
290       | username | firstname | lastname | email              |
291       | user1    | First     | User     | first@example.com  |
292       | user2    | Second    | User     | second@example.com |
293       | user3    | Third     | User     | third@example.com  |
294     And the following "cohort members" exist:
295       | user  | cohort |
296       | user1 | CH1   |
297       | user1 | CH2   |
298       | user2 | CH1   |
299       | user3 | CH2   |
300     And I log in as "admin"
301     And I navigate to "Badges > Add a new badge" in site administration
302     And I set the following fields to these values:
303       | Name | Site Badge |
304       | Description | Site badge description |
305       | issuername | Tester of site badge |
306     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
307     And I press "Create badge"
308     And I set the field "type" to "Cohort membership"
309     And I expand all fieldsets
310     And I set the field "id_cohort_cohorts" to "One Cohort,Two Cohort"
311     And I set the field "id_agg_1" to "1"
312     And I press "Save"
313     And I set the field "type" to "Manual issue by role"
314     And I expand all fieldsets
315     And I set the field "Manager" to "1"
316     And I set the field "Any of the selected roles awards the badge" to "1"
317     And I press "Save"
318     And I set the field "update" to "All"
319     When I press "Enable access"
320     And I press "Continue"
321     And I follow "Recipients (0)"
322     And I press "Award badge"
323     And I set the field "potentialrecipients[]" to "First User (first@example.com)"
324     And I press "Award badge"
325     And I set the field "potentialrecipients[]" to "Second User (second@example.com)"
326     And I press "Award badge"
327     And I follow "Site Badge"
328     Then I should see "Recipients (1)"
329     And I log out
330     And I log in as "user1"
331     And I follow "Profile" in the user menu
332     And I should see "Site Badge"
333     And I log out
334     And I log in as "user2"
335     And I follow "Profile" in the user menu
336     And I should not see "Site Badge"
337     And I log out
338     And I log in as "user3"
339     And I follow "Profile" in the user menu
340     And I should not see "Site Badge"
342   @javascript
343   Scenario: Award multiple badges based on single cohort membership
344     Given the following "cohorts" exist:
345       | name       | idnumber |
346       | One Cohort | CH1      |
347       | Two Cohort | CH2      |
348     And the following "users" exist:
349       | username | firstname | lastname | email              |
350       | user1    | First     | User     | first@example.com  |
351       | user2    | Second    | User     | second@example.com |
352       | user3    | Third     | User     | third@example.com  |
353     And the following "cohort members" exist:
354       | user  | cohort |
355       | user1 | CH1   |
356       | user1 | CH2   |
357       | user2 | CH2   |
358     And I log in as "admin"
359     And I navigate to "Badges > Add a new badge" in site administration
360     And I set the following fields to these values:
361       | Name | Site Badge 1 |
362       | Description | Site badge description |
363       | issuername | Tester of site badge |
364     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
365     And I press "Create badge"
366     And I set the field "type" to "Cohort membership"
367     And I set the field "id_cohort_cohorts" to "One Cohort"
368     And I press "Save"
369     And I press "Enable access"
370     When I press "Continue"
371     And I should see "Recipients (1)"
372     And I navigate to "Badges > Add a new badge" in site administration
373     And I set the following fields to these values:
374       | Name | Site Badge 2 |
375       | Description | Site badge description |
376       | issuername | Tester of site badge |
377     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
378     And I press "Create badge"
379     And I set the field "type" to "Cohort membership"
380     And I set the field "id_cohort_cohorts" to "Two Cohort"
381     And I press "Save"
382     And I press "Enable access"
383     And I press "Continue"
384     Then I should see "Recipients (2)"
385     And I log out
386     And I log in as "user1"
387     And I follow "Profile" in the user menu
388     And I should see "Site Badge 1"
389     And I should see "Site Badge 2"
390     And I log out
391     And I log in as "user2"
392     And I follow "Profile" in the user menu
393     And I should not see "Site Badge 1"
394     And I should see "Site Badge 2"
395     And I log out
396     And I log in as "user3"
397     And I follow "Profile" in the user menu
398     And I should not see "Site Badge 1"
399     And I should not see "Site Badge 2"
401   @javascript
402   Scenario: Award multiple badges based on multiple cohort memberships
403     Given the following "cohorts" exist:
404       | name         | idnumber |
405       | One Cohort   | CH1      |
406       | Two Cohort   | CH2      |
407       | Three Cohort | CH3      |
408     And the following "users" exist:
409       | username | firstname | lastname | email              |
410       | user1    | First     | User     | first@example.com  |
411       | user2    | Second    | User     | second@example.com |
412       | user3    | Third     | User     | third@example.com  |
413     And I log in as "admin"
414     And I navigate to "Badges > Add a new badge" in site administration
415     And I set the following fields to these values:
416       | Name | Site Badge 1 |
417       | Description | Site badge description |
418       | issuername | Tester of site badge |
419     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
420     And I press "Create badge"
421     And I set the field "type" to "Cohort membership"
422     And I expand all fieldsets
423     And I set the field "id_cohort_cohorts" to "One Cohort,Two Cohort"
424     And I set the field "id_agg_1" to "1"
425     And I press "Save"
426     And I press "Enable access"
427     When I press "Continue"
428     And I should see "Recipients (0)"
429     And I navigate to "Badges > Add a new badge" in site administration
430     And I set the following fields to these values:
431       | Name | Site Badge 2 |
432       | Description | Site badge description |
433       | issuername | Tester of site badge |
434     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
435     And I press "Create badge"
436     And I set the field "type" to "Cohort membership"
437     And I expand all fieldsets
438     And I set the field "id_cohort_cohorts" to "Three Cohort,Two Cohort"
439     And I set the field "id_agg_1" to "1"
440     And I press "Save"
441     And I press "Enable access"
442     And I press "Continue"
443     Then I navigate to "Users > Accounts >Cohorts" in site administration
444     And I add "First User (first@example.com)" user to "CH1" cohort members
445     And I add "First User (first@example.com)" user to "CH2" cohort members
446     And I add "Second User (second@example.com)" user to "CH2" cohort members
447     And I add "Second User (second@example.com)" user to "CH3" cohort members
448     And I log out
449     And I log in as "user1"
450     And I follow "Profile" in the user menu
451     And I should see "Site Badge 1"
452     And I should not see "Site Badge 2"
453     And I log out
454     And I log in as "user2"
455     And I follow "Profile" in the user menu
456     And I should not see "Site Badge 1"
457     And I should see "Site Badge 2"
458     And I log out
459     And I log in as "user3"
460     And I follow "Profile" in the user menu
461     And I should not see "Site Badge 1"
462     And I should not see "Site Badge 2"