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