Merge branch 'MDL-68286-master' of git://
[moodle.git] / badges / tests / behat / criteria_competency.feature
1 @core @core_badges @_file_upload
2 Feature: Award badges based on competency completion
3   In order to award badges to users based on competency completion
4   As an admin
5   I need to add competency completion criteria to badges in the system
7   Background: Setup the competency framework and the course
8     Given the following "users" exist:
9       | username | firstname | lastname | email           |
10       | user1    | First     | User     |  |
11     And the following "courses" exist:
12       | fullname | shortname | category |
13       | Course 1 | C1 | 0 |
14     And the following "course enrolments" exist:
15       | user | course | role |
16       | user1 | C1 | student |
17     And the following lp "frameworks" exist:
18       | shortname | idnumber |
19       | Framework 1 | sc-y-2 |
20     And the following lp "competencies" exist:
21       | shortname | framework |
22       | comp1 | sc-y-2 |
23       | comp2 | sc-y-2 |
24     And I log in as "admin"
26   @javascript
27   Scenario: Award badge for completing a competency in a course
28     # Add a competency to the course
29     When I am on "Course 1" course homepage
30     And I follow "Competencies"
31     And I press "Add competencies to course"
32     And "Competency picker" "dialogue" should be visible
33     And I select "comp1" of the competency tree
34     And I click on "Add" "button" in the "Competency picker" "dialogue"
35     And I wait until the page is ready
36     And I click on "Edit" "link" in the "[data-region='configurecoursecompetencies']" "css_element"
37     And I wait until the page is ready
38     And I click on "Rating a competency only updates the competency in this course" "text"
39     And I click on "Save changes" "button" in the "Configure course competencies" "dialogue"
40     # Add a badge to the course
41     And I am on "Course 1" course homepage
42     And I navigate to "Badges > Add a new badge" in current page administration
43     And I follow "Add a new badge"
44     And I set the following fields to these values:
45       | Name | Course Badge |
46       | Description | Course badge description |
47       | issuername | Tester of course badge |
48     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
49     And I press "Create badge"
50     # Set the competency as a criteria for the badge
51     And I set the field "type" to "Competencies"
52     When I open the autocomplete suggestions list
53     And I click on "ul[class='form-autocomplete-suggestions'] li" "css_element"
54     And I wait until the page is ready
55     And I press "Save"
56     And I wait until the page is ready
57     # Enable the badge
58     And I press "Enable access"
59     And I press "Continue"
60     # Rate the competency in the course
61     And I am on "Course 1" course homepage
62     And I follow "Competencies"
63     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
64     And I press "Rate"
65     And I set the following fields to these values:
66       | Rating | C |
67     And I click on "Rate" "button" in the "Rate" "dialogue"
68     And I log out
69     # See if we got the badge
70     Then I log in as "user1"
71     And I follow "Profile" in the user menu
72     And I should see "Course Badge"
74   @javascript
75   Scenario: Award badge for completing a competency in the site
76     # Add a competency to the course
77     When I am on "Course 1" course homepage
78     And I follow "Competencies"
79     And I press "Add competencies to course"
80     And "Competency picker" "dialogue" should be visible
81     And I select "comp1" of the competency tree
82     And I click on "Add" "button" in the "Competency picker" "dialogue"
83     And I press "Add competencies to course"
84     And "Competency picker" "dialogue" should be visible
85     And I select "comp2" of the competency tree
86     And I click on "Add" "button" in the "Competency picker" "dialogue"
87     # Add a badge to the site
88     And I navigate to "Badges > Add a new badge" in site administration
89     And I set the following fields to these values:
90       | Name | Site Badge |
91       | Description | Site badge description |
92       | issuername | Tester of site badge |
93     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
94     And I press "Create badge"
95     # Set the competency as a criteria for the badge
96     And I set the field "type" to "Competencies"
97     And I press "Add competency"
98     And "Competency picker" "dialogue" should be visible
99     And I select "comp1" of the competency tree
100     And I click on "Add" "button" in the "Competency picker" "dialogue"
101     And I wait until the page is ready
102     And I press "Add competency"
103     And "Competency picker" "dialogue" should be visible
104     And I select "comp2" of the competency tree
105     And I click on "Add" "button" in the "Competency picker" "dialogue"
106     And I wait until the page is ready
107     And I press "Save"
108     # Enable the badge
109     And I wait until the page is ready
110     And I press "Enable access"
111     And I press "Continue"
112     # Rate the competency in the course
113     And I am on "Course 1" course homepage
114     And I follow "Competencies"
115     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
116     And I press "Rate"
117     And I set the following fields to these values:
118       | Rating | C |
119     And I wait until the page is ready
120     And I click on "Rate" "button" in the "Rate" "dialogue"
121     And I log out
122     # See if we got the badge
123     Then I log in as "user1"
124     And I follow "Profile" in the user menu
125     And I should see "Site Badge"
127   @javascript
128   Scenario: Award badge for completing all competencies in the site
129     # Add a competency to the course
130     When I am on "Course 1" course homepage
131     And I follow "Competencies"
132     And I press "Add competencies to course"
133     And "Competency picker" "dialogue" should be visible
134     And I select "comp1" of the competency tree
135     And I click on "Add" "button" in the "Competency picker" "dialogue"
136     And I press "Add competencies to course"
137     And "Competency picker" "dialogue" should be visible
138     And I select "comp2" of the competency tree
139     And I click on "Add" "button" in the "Competency picker" "dialogue"
140     # Add a badge to the site
141     And I navigate to "Badges > Add a new badge" in site administration
142     And I set the following fields to these values:
143       | Name | Site Badge |
144       | Description | Site badge description |
145       | issuername | Tester of site badge |
146     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
147     And I press "Create badge"
148     # Set the competency as a criteria for the badge
149     And I set the field "type" to "Competencies"
150     And I press "Add competency"
151     And "Competency picker" "dialogue" should be visible
152     And I select "comp1" of the competency tree
153     And I click on "Add" "button" in the "Competency picker" "dialogue"
154     And I wait until the page is ready
155     And I press "Add competency"
156     And "Competency picker" "dialogue" should be visible
157     And I select "comp2" of the competency tree
158     And I click on "Add" "button" in the "Competency picker" "dialogue"
159     And I wait until the page is ready
160     And I click on "This criterion is complete when" "link"
161     And I click on "All of the selected competencies have been completed" "radio"
162     And I press "Save"
163     # Enable the badge
164     And I wait until the page is ready
165     And I press "Enable access"
166     And I press "Continue"
167     # Rate the competency in the course
168     And I am on "Course 1" course homepage
169     And I follow "Competencies"
170     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
171     And I press "Rate"
172     And I set the following fields to these values:
173       | Rating | C |
174     And I wait until the page is ready
175     And I click on "Rate" "button" in the "Rate" "dialogue"
176     And I log out
177     # We should not get the badge yet.
178     Then I log in as "user1"
179     And I follow "Profile" in the user menu
180     And I should not see "Site Badge"
181     And I log out
182     # Rate the other competency.
183     And I log in as "admin"
184     And I am on "Course 1" course homepage
185     And I follow "Competencies"
186     And I click on "comp2" "link" in the "[data-region='coursecompetencies']" "css_element"
187     And I press "Rate"
188     And I set the following fields to these values:
189       | Rating | C |
190     And I wait until the page is ready
191     And I click on "Rate" "button" in the "Rate" "dialogue"
192     And I log out
193     # See if we got the badge now.
194     Then I log in as "user1"
195     And I follow "Profile" in the user menu
196     And I should see "Site Badge"