63e00d42c8ce767a128d2ad26b43a559138cba5c
[moodle.git] / course / tests / behat / category_management.feature
1 @core @core_course
2 Feature: Test category management actions
3   As a moodle admin
4   Test we can create a category
5   Test we can create a sub category
6   Test we can edit a category
7   Test we can delete a category
8   Test we can move a category
9   Test we can assign roles within a category
10   Test we can set permissions on a category
11   Test we can manage cohorts within a category
12   Test we can manage filters for a category
14   Scenario: Test editing a category through the management interface.
15     Given the following "categories" exist:
16       | name | category | idnumber |
17       | Cat 1 | 0 | CAT1 |
18     And the following "courses" exist:
19       | category | fullname | shortname | idnumber |
20       | CAT1 | Course 1 | Course 1 | C1 |
22     And I log in as "admin"
23     And I go to the courses management page
24     And I should see the "Course categories" management page
25     And I click on "edit" action for "Cat 1" in management category listing
26     # Redirect
27     And I should see "Edit category settings"
28     And I should see "Cat 1"
29     And I press "Cancel"
30     # Redirect
31     And I should see the "Course categories and courses" management page
32     And I click on "edit" action for "Cat 1" in management category listing
33     # Redirect
34     And I should see "Edit category settings"
35     And I should see "Cat 1"
36     And I set the following fields to these values:
37       | Category name | Category 1 (edited) |
38       | Category ID number | CAT1e |
39     And I press "Save changes"
40     # Redirect
41     And I should see the "Course categories and courses" management page
42     And I should see "Category 1 (edited)" in the "#category-listing" "css_element"
43     And I should see "Category 1 (edited)" in the "#course-listing h3" "css_element"
45   Scenario: Test deleting a categories through the management interface.
46     Given the following "categories" exist:
47       | name | category | idnumber |
48       | Cat 1 | 0 | CAT1 |
49       | Cat 2 | 0 | CAT2 |
50       | Cat 3 | 0 | CAT3 |
52     And the following "courses" exist:
53       | category | fullname | shortname | idnumber |
54       | CAT3 | Course 1 | Course 1 | C1 |
56     And I log in as "admin"
57     And I go to the courses management page
58     And I should see the "Course categories" management page
59     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
60     And I should see "Cat 2" in the "#category-listing ul.ml" "css_element"
61     And I should see "Cat 3" in the "#category-listing ul.ml" "css_element"
62     And I click on "delete" action for "Cat 2" in management category listing
63     # Redirect
64     And I should see "Delete category: Cat 2"
65     And I should see "Contents of Cat 2"
66     And I should see "This category is empty"
67     And I press "Cancel"
68     # Redirect
69     And I should see the "Course categories and courses" management page
70     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
71     And I should see "Cat 2" in the "#category-listing ul.ml" "css_element"
72     And I should see "Cat 3" in the "#category-listing ul.ml" "css_element"
73     And I click on "delete" action for "Cat 2" in management category listing
74     # Redirect
75     And I should see "Delete category: Cat 2"
76     And I should see "Contents of Cat 2"
77     And I should see "This category is empty"
78     And I press "Delete"
79     # Redirect
80     And I should see "Delete category: Cat 2"
81     And I should see "Deleted course category Cat 2"
82     And I press "Continue"
83     # Redirect
84     And I should see the "Course categories" management page
85     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
86     And I should not see "Cat 2" in the "#category-listing ul.ml" "css_element"
87     And I should see "Cat 3" in the "#category-listing ul.ml" "css_element"
88     And I click on "delete" action for "Cat 3" in management category listing
89     # Redirect
90     And I should see "Delete category: Cat 3"
91     And I set the following fields to these values:
92       | What to do | Move contents to another category |
93       | Move into  | Cat 1                             |
94     And I press "Delete"
95     # Redirect
96     And I should see "Delete category: Cat 3"
97     And I should see "Deleted course category Cat 3"
98     And I press "Continue"
99     # Redirect
100     And I should see the "Course categories and courses" management page
101     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
102     And I should not see "Cat 2" in the "#category-listing ul.ml" "css_element"
103     And I should not see "Cat 3" in the "#category-listing ul.ml" "css_element"
104     And I should see "Course 1" in the "#course-listing ul.ml" "css_element"
106   Scenario: Test I can assign roles for a category through the management interface.
107     Given the following "categories" exist:
108       | name | category | idnumber |
109       | Cat 1 | 0 | CAT1 |
110     And the following "courses" exist:
111       | category | fullname | shortname | idnumber |
112       | CAT1 | Course 1 | Course 1 | C1 |
114     And I log in as "admin"
115     And I go to the courses management page
116     And I should see the "Course categories" management page
117     And I click on "assignroles" action for "Cat 1" in management category listing
118     # Redirect
119     And I should see "Assign roles in Category: Cat 1"
120     And I should see "Please choose a role to assign"
121     And I click on "Back to Category: Cat 1" "link"
122     # Redirect
123     And I should see the "Course categories and courses" management page
124     And I should see "Cat 1" in the "#course-listing h3" "css_element"
126   Scenario: Test I can set access permissions for a category through the management interface.
127     Given the following "categories" exist:
128       | name | category | idnumber |
129       | Cat 1 | 0 | CAT1 |
130     And the following "courses" exist:
131       | category | fullname | shortname | idnumber |
132       | CAT1 | Course 1 | Course 1 | C1 |
134     And I log in as "admin"
135     And I go to the courses management page
136     And I should see the "Course categories" management page
137     And I click on "permissions" action for "Cat 1" in management category listing
138     # Redirect
139     And I should see "Permissions in Category: Cat 1"
140     And I click on "Back to Category: Cat 1" "link"
141     # Redirect
142     And I should see the "Course categories and courses" management page
143     And I should see "Cat 1" in the "#course-listing h3" "css_element"
145   Scenario: Test clicking to manage cohorts for a category through the management interface.
146     Given the following "categories" exist:
147       | name | category | idnumber |
148       | Cat 1 | 0 | CAT1 |
149     And the following "courses" exist:
150       | category | fullname | shortname | idnumber |
151       | CAT1 | Course 1 | Course 1 | C1 |
153     And I log in as "admin"
154     And I go to the courses management page
155     And I should see the "Course categories" management page
156     And I click on "cohorts" action for "Cat 1" in management category listing
157     # Redirect
158     And I should see "Category: Cat 1: available cohorts"
160   Scenario: Test configuring filters for a category
161     Given the following "categories" exist:
162       | name | category | idnumber |
163       | Cat 1 | 0 | CAT1 |
164     And the following "courses" exist:
165       | category | fullname | shortname | idnumber |
166       | CAT1 | Course 1 | Course 1 | C1 |
168     And I log in as "admin"
169     And I go to the courses management page
170     And I should see the "Course categories" management page
171     And I click on "filters" action for "Cat 1" in management category listing
172     # Redirect
173     And I should see "Filter settings in Category: Cat 1"
174     And I click on "Back to Category: Cat 1" "link"
175     # Redirect
176     And I should see the "Course categories and courses" management page
177     And I should see "Cat 1" in the "#course-listing h3" "css_element"
179   @javascript
180   Scenario: Test that I can create a category and view it in the management interface
181     Given the following "categories" exist:
182       | name | category | idnumber |
183       | Cat 1 | 0 | CAT1 |
184     And I log in as "admin"
185     And I go to the courses management page
186     And I should see the "Course categories" management page
187     And I click on "Create new category" "link" in the ".category-listing-actions" "css_element"
188     # Redirect.
189     And I should see "Add new category"
190     And I set the following fields to these values:
191       | Category name | Test category 2 |
192       | Category ID number | TC2 |
193     And I press "Create category"
194     # Redirect
195     And I should see the "Course categories and courses" management page
196     And I should see "Test category 2" in the "#course-listing h3" "css_element"
197     And I should see category listing "Cat 1" before "Test category 2"
198     And I should see "No courses in this category"
199     And I click on "createnewsubcategory" action for "Test category 2" in management category listing
200     # Redirect
201     And I should see "Add new category"
202     And I set the following fields to these values:
203       | Category name | Test category 3 |
204       | Category ID number | TC3 |
205     And I press "Create category"
206     # Redirect
207     And I should see the "Course categories and courses" management page
208     And I should see "Test category 3" in the "#course-listing h3" "css_element"
209     And I should see category listing "Cat 1" before "Test category 2"
210     And I should see "No courses in this category"
212   @javascript
213   Scenario: Test moving a categories through the management interface.
214     Given the following "categories" exist:
215       | name | category | idnumber |
216       | Cat 1 | 0 | CAT1 |
217       | Cat 2 | 0 | CAT2 |
218       | Cat 3 | 0 | CAT3 |
220     And I log in as "admin"
221     And I go to the courses management page
222     And I should see the "Course categories" management page
223     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
224     And I should see "Cat 2" in the "#category-listing ul.ml" "css_element"
225     And I should see "Cat 3" in the "#category-listing ul.ml" "css_element"
226     And I select category "Cat 2" in the management interface
227     And I select category "Cat 3" in the management interface
228     And I set the field "menumovecategoriesto" to "Cat 1"
229     When I press "bulkmovecategories"
230     # Redirect
231     And I click on category "Cat 1" in the management interface
232     # Redirect
233     Then I should see category "CAT3" as subcategory of "CAT1" in the management interface
234     And I move category "Cat 3" to top level in the management interface
235     # Redirect
236     And I should not see category "CAT3" as subcategory of "CAT1" in the management interface
237     Then I should see category "CAT2" as subcategory of "CAT1" in the management interface
239   @javascript
240   Scenario: Test bulk action is shown only when some category/course is selected
241     Given the following "categories" exist:
242       | name | category | idnumber |
243       | Cat 1 | 0 | CAT1 |
244       | Cat 2 | 0 | CAT2 |
245       | Cat 3 | 0 | CAT3 |
246     And the following "courses" exist:
247       | category | fullname | shortname | idnumber |
248       | CAT3 | Course 1 | Course 1 | C1 |
249       | CAT3 | Course 2 | Course 2 | C2 |
251     And I log in as "admin"
252     And I go to the courses management page
253     And I should see the "Course categories" management page
254     And I should see "Cat 1" in the "#category-listing ul.ml" "css_element"
255     And I should see "Cat 2" in the "#category-listing ul.ml" "css_element"
256     And I should see "Cat 3" in the "#category-listing ul.ml" "css_element"
257     And the "movecategoriesto" "select" should be disabled
258     And the "resortcategoriesby" "select" should be disabled
259     And the "resortcoursesby" "select" should be disabled
260     When I set the field "selectsortby" to "allcategories"
261     Then the "resortcategoriesby" "select" should be enabled
262     And the "resortcoursesby" "select" should be enabled
263     And the "movecategoriesto" "select" should be disabled
264     And I select category "Cat 2" in the management interface
265     And the "movecategoriesto" "select" should be enabled
266     And the "resortcategoriesby" "select" should be enabled
267     And the "resortcoursesby" "select" should be enabled
268     And I set the field "selectsortby" to "selectedcategories"
269     And the "movecategoriesto" "select" should be enabled
270     And the "resortcategoriesby" "select" should be enabled
271     And the "resortcoursesby" "select" should be enabled
272     And I unselect category "Cat 2" in the management interface
273     And the "movecategoriesto" "select" should be disabled
274     And the "resortcategoriesby" "select" should be disabled
275     And the "resortcoursesby" "select" should be disabled
276     And I select category "Cat 3" in the management interface
277     And the "movecategoriesto" "select" should be enabled
278     And the "resortcategoriesby" "select" should be enabled
279     And the "resortcoursesby" "select" should be enabled
280     And I select category "Cat 2" in the management interface
281     And the "movecategoriesto" "select" should be enabled
282     And the "resortcategoriesby" "select" should be enabled
283     And the "resortcoursesby" "select" should be enabled
284     And I unselect category "Cat 2" in the management interface
285     And I unselect category "Cat 3" in the management interface
286     And the "movecategoriesto" "select" should be disabled
287     And the "resortcategoriesby" "select" should be disabled
288     And the "resortcoursesby" "select" should be disabled
289     And I click on category "Cat 1" in the management interface
290     # Redirect.
291     And I should see the "Course categories and courses" management page
292     And the "movecategoriesto" "select" should be disabled
293     And the "resortcategoriesby" "select" should be disabled
294     And the "resortcoursesby" "select" should be disabled
295     And the "movecoursesto" "select" should be disabled
296     And I click on category "Cat 3" in the management interface
297     #Redirect
298     And I should see the "Course categories and courses" management page
299     And I should see "Course 1" in the "#course-listing ul.ml" "css_element"
300     And I should see "Course 2" in the "#course-listing ul.ml" "css_element"
301     And the "movecategoriesto" "select" should be disabled
302     And the "resortcategoriesby" "select" should be disabled
303     And the "resortcoursesby" "select" should be disabled
304     And the "movecoursesto" "select" should be disabled
305     And I select course "Course 1" in the management interface
306     And the "movecoursesto" "select" should be enabled
307     And the "movecategoriesto" "select" should be disabled
308     And the "resortcategoriesby" "select" should be disabled
309     And the "resortcoursesby" "select" should be disabled
310     And I select course "Course 2" in the management interface
311     And the "movecoursesto" "select" should be enabled
312     And the "movecategoriesto" "select" should be disabled
313     And the "resortcategoriesby" "select" should be disabled
314     And the "resortcoursesby" "select" should be disabled
315     And I select category "Cat 3" in the management interface
316     And the "movecoursesto" "select" should be enabled
317     And the "movecategoriesto" "select" should be enabled
318     And the "resortcategoriesby" "select" should be enabled
319     And the "resortcoursesby" "select" should be enabled
320     And I unselect course "Course 2" in the management interface
321     And the "movecoursesto" "select" should be enabled
322     And the "movecategoriesto" "select" should be enabled
323     And the "resortcategoriesby" "select" should be enabled
324     And the "resortcoursesby" "select" should be enabled
325     And I unselect course "Course 1" in the management interface
326     And the "movecoursesto" "select" should be disabled
327     And the "movecategoriesto" "select" should be enabled
328     And the "resortcategoriesby" "select" should be enabled
329     And the "resortcoursesby" "select" should be enabled
330     And I unselect category "Cat 3" in the management interface
331     And the "movecoursesto" "select" should be disabled
332     And the "movecategoriesto" "select" should be disabled
333     And the "resortcategoriesby" "select" should be disabled
334     And the "resortcoursesby" "select" should be disabled
336   Scenario: Test that is not possible to create a course category with a duplicate idnumber
337     Given the following "categories" exist:
338       | name | category | idnumber |
339       | Cat 1 | 0 | CAT1 |
340     And I log in as "admin"
341     And I expand "Site administration" node
342     And I expand "Courses" node
343     And I follow "Add a category"
344     And I set the following fields to these values:
345       | Category name | Test duplicate |
346       | Category ID number | CAT1 |
347     When I press "Create category"
348     Then I should see "ID number is already used for another category"