MDL-62836 badges: Add behat test for the new group selector
[moodle.git] / badges / tests / behat / award_badge_groups.feature
1 @core @core_badges @_file_upload
2 Feature: Award badges with separate groups
3   In order to award badges to users for their achievements
4   As a teacher
5   I need to award badges only to users in the groups I have access
7   Background:
8     Given the following "users" exist:
9       | username | firstname | lastname | email |
10       | teacher1 | Teacher | 1 | teacher1@example.com |
11       | teacher2 | Teacher | 2 | teacher2@example.com |
12       | student1 | Student | 1 | student1@example.com |
13       | student2 | Student | 2 | student2@example.com |
14     And the following "courses" exist:
15       | fullname | shortname | category | groupmode |
16       | Course 1 | C1 | 0 | 1 |
17     And the following "course enrolments" exist:
18       | user | course | role |
19       | teacher1 | C1 | editingteacher |
20       | teacher2 | C1 | teacher |
21       | student1 | C1 | student |
22       | student2 | C1 | student |
23     And the following "groups" exist:
24       | name | course | idnumber |
25       | Class A | C1 | CA |
26       | Class B | C1 | CB |
27     And the following "group members" exist:
28       | user | group |
29       | student1 | CB |
30       | teacher1 | CB |
31       | student2 | CA |
32       | teacher2 | CA |
33     And I log in as "teacher1"
34     And I am on "Course 1" course homepage
35     And I navigate to "Edit settings" in current page administration
36     And I expand all fieldsets
37     And I set the field "Group mode" to "Separate groups"
38     And I press "Save and display"
39     And I navigate to "Badges > Add a new badge" in current page administration
40     And I follow "Add a new badge"
41     And I set the following fields to these values:
42       | Name | Course Badge |
43       | Description | Course badge description |
44       | issuername | Tester of course badge |
45     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
46     And I press "Create badge"
47     And I set the field "type" to "Manual issue by role"
48     And I expand all fieldsets
49     And I set the field "Teacher" to "1"
50     And I set the field "Non-editing teacher" to "1"
51     # Set to ANY of the roles awards badge.
52     And I set the field "Any of the selected roles awards the badge" to "1"
53     And I press "Save"
54     And I press "Enable access"
55     And I press "Continue"
56     And I log out
58   @javascript
59   Scenario: Award course badge as non-editing teacher with only one group
60     When I log in as "teacher2"
61     And I am on "Course 1" course homepage
62     And I navigate to "Badges > Manage badges" in current page administration
63     And I follow "Manage badges"
64     And I follow "Course Badge"
65     And I press "Award badge"
66     And I set the field "role" to "Non-editing teacher"
67     # Teacher 2 should see a "Separate groups" label with the group he is in
68     Then I should see "Separate groups: Class A"
69     # Teacher 2 should only see the users who belong to the same group as he does
70     And I should see "Student 2"
71     And I should not see "Student 1"
72     # Non-editing teacher can award the badge
73     And I set the field "potentialrecipients[]" to "Student 2 (student2@example.com)"
74     And I press "Award badge"
75     And I follow "Course Badge"
76     And I should see "Recipients (1)"
77     And I log out
78     And I log in as "student2"
79     And I follow "Profile" in the user menu
80     And I click on "Course 1" "link" in the "region-main" "region"
81     And I should see "Course Badge"
82     And I log out
84   @javascript
85   Scenario: Award course badge as non-editing teacher with more than one group
86     Given I log in as "teacher1"
87     And I am on "Course 1" course homepage
88     And I navigate to "Users > Groups" in current page administration
89     And I follow "Groups"
90     And I set the field "groups" to "Class B (2)"
91     And I press "Add/remove users"
92     And I set the field "addselect" to "Teacher 2 (teacher2@example.com)"
93     And I press "Add"
94     And I log out
95     When I log in as "teacher2"
96     And I am on "Course 1" course homepage
97     And I navigate to "Badges > Manage badges" in current page administration
98     And I follow "Manage badges"
99     And I follow "Course Badge"
100     And I press "Award badge"
101     And I set the field "role" to "Non-editing teacher"
102     # Teacher 2 should see a "Separate groups" label and a dropdown menu with the groups he belongs to
103     And I set the field "Separate groups" to "Class A"
104     Then I should see "Student 2"
105     And I should not see "Student 1"
106     And I set the field "Separate groups" to "Class B"
107     And I should see "Student 1"
108     And I should not see "Student 2"
109     And I log out
111   @javascript
112   Scenario: Award course badge as non-editing teacher without any group
113     Given I log in as "teacher1"
114     And I am on "Course 1" course homepage
115     And I navigate to "Users > Groups" in current page administration
116     And I follow "Groups"
117     And I set the field "groups" to "Class A (2)"
118     And I press "Add/remove users"
119     And I set the field "removeselect" to "Teacher 2 (teacher2@example.com)"
120     And I press "Remove"
121     And I press "Back to groups"
122     And I log out
123     When I log in as "teacher2"
124     And I am on "Course 1" course homepage
125     And I navigate to "Badges > Manage badges" in current page administration
126     And I follow "Manage badges"
127     And I follow "Course Badge"
128     And I press "Award badge"
129     # Teacher 2 shouldn't be able to go further
130     Then I should see "Sorry, but you need to be part of a group to see this page."