Merge branch 'MDL-66357-master' of git://github.com/sarjona/moodle
[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     | first@example.com  |
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     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
48     And I press "Create badge"
49     # Set the competency as a criteria for the badge
50     And I set the field "type" to "Competencies"
51     When I open the autocomplete suggestions list
52     And I click on "ul[class='form-autocomplete-suggestions'] li" "css_element"
53     And I wait until the page is ready
54     And I press "Save"
55     And I wait until the page is ready
56     # Enable the badge
57     And I press "Enable access"
58     And I press "Continue"
59     # Rate the competency in the course
60     And I am on "Course 1" course homepage
61     And I follow "Competencies"
62     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
63     And I press "Rate"
64     And I set the following fields to these values:
65       | Rating | C |
66     And I click on "Rate" "button" in the "Rate" "dialogue"
67     And I log out
68     # See if we got the badge
69     Then I log in as "user1"
70     And I follow "Profile" in the user menu
71     And I should see "Course Badge"
73   @javascript
74   Scenario: Award badge for completing a competency in the site
75     # Add a competency to the course
76     When I am on "Course 1" course homepage
77     And I follow "Competencies"
78     And I press "Add competencies to course"
79     And "Competency picker" "dialogue" should be visible
80     And I select "comp1" of the competency tree
81     And I click on "Add" "button" in the "Competency picker" "dialogue"
82     And I press "Add competencies to course"
83     And "Competency picker" "dialogue" should be visible
84     And I select "comp2" of the competency tree
85     And I click on "Add" "button" in the "Competency picker" "dialogue"
86     # Add a badge to the site
87     And I navigate to "Badges > Add a new badge" in site administration
88     And I set the following fields to these values:
89       | Name | Site Badge |
90       | Description | Site badge description |
91     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
92     And I press "Create badge"
93     # Set the competency as a criteria for the badge
94     And I set the field "type" to "Competencies"
95     And I press "Add competency"
96     And "Competency picker" "dialogue" should be visible
97     And I select "comp1" of the competency tree
98     And I click on "Add" "button" in the "Competency picker" "dialogue"
99     And I wait until the page is ready
100     And I press "Add competency"
101     And "Competency picker" "dialogue" should be visible
102     And I select "comp2" of the competency tree
103     And I click on "Add" "button" in the "Competency picker" "dialogue"
104     And I wait until the page is ready
105     And I press "Save"
106     # Enable the badge
107     And I wait until the page is ready
108     And I press "Enable access"
109     And I press "Continue"
110     # Rate the competency in the course
111     And I am on "Course 1" course homepage
112     And I follow "Competencies"
113     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
114     And I press "Rate"
115     And I set the following fields to these values:
116       | Rating | C |
117     And I wait until the page is ready
118     And I click on "Rate" "button" in the "Rate" "dialogue"
119     And I log out
120     # See if we got the badge
121     Then I log in as "user1"
122     And I follow "Profile" in the user menu
123     And I should see "Site Badge"
125   @javascript
126   Scenario: Award badge for completing all competencies in the site
127     # Add a competency to the course
128     When I am on "Course 1" course homepage
129     And I follow "Competencies"
130     And I press "Add competencies to course"
131     And "Competency picker" "dialogue" should be visible
132     And I select "comp1" of the competency tree
133     And I click on "Add" "button" in the "Competency picker" "dialogue"
134     And I press "Add competencies to course"
135     And "Competency picker" "dialogue" should be visible
136     And I select "comp2" of the competency tree
137     And I click on "Add" "button" in the "Competency picker" "dialogue"
138     # Add a badge to the site
139     And I navigate to "Badges > Add a new badge" in site administration
140     And I set the following fields to these values:
141       | Name | Site Badge |
142       | Description | Site badge description |
143     And I upload "badges/tests/behat/badge.png" file to "Image" filemanager
144     And I press "Create badge"
145     # Set the competency as a criteria for the badge
146     And I set the field "type" to "Competencies"
147     And I press "Add competency"
148     And "Competency picker" "dialogue" should be visible
149     And I select "comp1" of the competency tree
150     And I click on "Add" "button" in the "Competency picker" "dialogue"
151     And I wait until the page is ready
152     And I press "Add competency"
153     And "Competency picker" "dialogue" should be visible
154     And I select "comp2" of the competency tree
155     And I click on "Add" "button" in the "Competency picker" "dialogue"
156     And I wait until the page is ready
157     And I click on "This criterion is complete when" "link"
158     And I click on "All of the selected competencies have been completed" "radio"
159     And I press "Save"
160     # Enable the badge
161     And I wait until the page is ready
162     And I press "Enable access"
163     And I press "Continue"
164     # Rate the competency in the course
165     And I am on "Course 1" course homepage
166     And I follow "Competencies"
167     And I click on "comp1" "link" in the "[data-region='coursecompetencies']" "css_element"
168     And I press "Rate"
169     And I set the following fields to these values:
170       | Rating | C |
171     And I wait until the page is ready
172     And I click on "Rate" "button" in the "Rate" "dialogue"
173     And I log out
174     # We should not get the badge yet.
175     Then I log in as "user1"
176     And I follow "Profile" in the user menu
177     And I should not see "Site Badge"
178     And I log out
179     # Rate the other competency.
180     And I log in as "admin"
181     And I am on "Course 1" course homepage
182     And I follow "Competencies"
183     And I click on "comp2" "link" in the "[data-region='coursecompetencies']" "css_element"
184     And I press "Rate"
185     And I set the following fields to these values:
186       | Rating | C |
187     And I wait until the page is ready
188     And I click on "Rate" "button" in the "Rate" "dialogue"
189     And I log out
190     # See if we got the badge now.
191     Then I log in as "user1"
192     And I follow "Profile" in the user menu
193     And I should see "Site Badge"