MDL-59299 assignsubmission_file: Use filetype element in behat tests
[moodle.git] / mod / assign / submission / file / tests / behat / file_type_restriction.feature
1 @mod @mod_assign @assignsubmission_file
2 Feature: In an assignment, limit submittable file types
3   In order to constrain student submissions for marking
4   As a teacher
5   I need to limit the submittable file types
7   Background:
8     Given the following "courses" exist:
9       | fullname | shortname | category | groupmode |
10       | Course 1 | C1 | 0 | 1 |
11     And the following "users" exist:
12       | username | firstname | lastname | email |
13       | teacher1 | Teacher | 1 | teacher1@example.com |
14       | student1 | Student | 1 | student1@example.com |
15     And the following "course enrolments" exist:
16       | user | course | role |
17       | teacher1 | C1 | editingteacher |
18       | student1 | C1 | student |
19     And the following config values are set as admin:
20       | filetypes | image/png;spreadsheet | assignsubmission_file |
22   @javascript
23   Scenario: File types validation for an assignment
24     Given the following "activities" exist:
25       | activity | course | idnumber | name                 | intro                       | duedate    | assignsubmission_onlinetext_enabled | assignsubmission_file_enabled | assignsubmission_file_maxfiles | assignsubmission_file_maxsizebytes |
26       | assign   | C1     | assign1  | Test assignment name | Test assignment description | 1388534400 | 0                                   | 1                             | 1                              | 0                                  |
27     And I log in as "teacher1"
28     And I am on "Course 1" course homepage
29     And I follow "Test assignment name"
30     And I navigate to "Edit settings" in current page administration
31     When I set the field with xpath "//input[@id='id_assignsubmission_file_filetypes']" to "image/png;doesntexist;.anything;unreal/mimetype;nodot"
32     And I press "Save and display"
33     And I should see "The following file types were not recognised: doesntexist .anything unreal/mimetype nodot"
34     And I set the field with xpath "//input[@id='id_assignsubmission_file_filetypes']" to "image/png;spreadsheet"
35     And I press "Save and display"
36     And I navigate to "Edit settings" in current page administration
37     And the field with xpath "//input[@id='id_assignsubmission_file_filetypes']" matches value "image/png,spreadsheet"
38     And I set the field with xpath "//input[@id='id_assignsubmission_file_filetypes']" to ""
39     And I press "Choose"
40     And I set the field "Image files" to "1"
41     And I press "Save changes"
42     And I press "Save and display"
43     And I navigate to "Edit settings" in current page administration
44     Then the field with xpath "//input[@id='id_assignsubmission_file_filetypes']" matches value "image"
46   @javascript @_file_upload
47   Scenario: Uploading permitted file types for an assignment
48     Given the following "activities" exist:
49       | activity | course | idnumber | name                 | intro                       | duedate    | assignsubmission_onlinetext_enabled | assignsubmission_file_enabled | assignsubmission_file_maxfiles | assignsubmission_file_maxsizebytes | assignsubmission_file_filetypes |
50       | assign   | C1     | assign1  | Test assignment name | Test assignment description | 1388534400 | 0                                   | 1                             | 3                              | 0                                  | image/png,spreadsheet,.xml,.txt  |
51     And I log in as "student1"
52     And I am on "Course 1" course homepage
53     And I follow "Test assignment name"
54     When I press "Add submission"
55     And I should see "Files of these types may be added to the submission"
56     And I should see "Image (PNG) — .png"
57     And I should see "Spreadsheet files — .csv .gsheet .ods .ots .xls .xlsx .xlsm"
58     And I should see ".txt"
59     And I upload "lib/tests/fixtures/gd-logo.png" file to "File submissions" filemanager
60     And I upload "lib/tests/fixtures/tabfile.csv" file to "File submissions" filemanager
61     And I upload "lib/tests/fixtures/empty.txt" file to "File submissions" filemanager
62     And I press "Save changes"
63     Then "gd-logo.png" "link" should exist
64     And "tabfile.csv" "link" should exist
65     And "empty.txt" "link" should exist
67   @javascript @_file_upload
68   Scenario: No filetypes allows all
69     Given the following "activities" exist:
70       | activity | course | idnumber | name                 | intro                       | duedate    | assignsubmission_onlinetext_enabled | assignsubmission_file_enabled | assignsubmission_file_maxfiles | assignsubmission_file_maxsizebytes | assignsubmission_file_filetypes |
71       | assign   | C1     | assign1  | Test assignment name | Test assignment description | 1388534400 | 0                                   | 1                             | 2                              | 0                                  |                                 |
72     And I log in as "student1"
73     And I am on "Course 1" course homepage
74     And I follow "Test assignment name"
75     When I press "Add submission"
76     And I should not see "Files of these types may be added to the submission"
77     And I upload "lib/tests/fixtures/gd-logo.png" file to "File submissions" filemanager
78     And I upload "lib/tests/fixtures/tabfile.csv" file to "File submissions" filemanager
79     And I press "Save changes"
80     Then "gd-logo.png" "link" should exist
81     And "tabfile.csv" "link" should exist