0ddad876b0550e1498adb4fc6d97ec0e4b2c209f
[moodle.git] / mod / data / tests / behat / required_entries.feature
1 @mod @mod_data
2 Feature: Users can be required to specify certain fields when adding entries to database activities
3   In order to constrain user input
4   As a teacher
5   I need to specify certain fields as required when I add entries to databases
7   Background:
8     Given the following "users" exist:
9       | username | firstname | lastname | email |
10       | student1 | Student | 1 | student1@example.com |
11       | teacher1 | Teacher | 1 | teacher1@example.com |
12     And the following "courses" exist:
13       | fullname | shortname | category |
14       | Course 1 | C1 | 0 |
15     And the following "course enrolments" exist:
16       | user | course | role |
17       | teacher1 | C1 | editingteacher |
18       | student1 | C1 | student |
19     And the following "activities" exist:
20       | activity | name               | intro | course | idnumber |
21       | data     | Test database name | n     | C1     | data1    |
22     And I log in as "teacher1"
23     And I follow "Course 1"
24     And I add a "Text input" field to "Test database name" database and I fill the form with:
25       | Field name | Base Text input |
26       | Required | yes |
27       | Field description | Base Text input |
28     And I add a "Checkbox" field to "Test database name" database and I fill the form with:
29       | Field name | Required Checkbox |
30       | Field description | Required Checkbox |
31       | Required | yes |
32       | Options | Required Checkbox Option 1 |
33     And I follow "Fields"
34     And I set the field "newtype" to "Checkbox"
35     And I click on "Go" "button" in the ".fieldadd" "css_element"
36     And I set the following fields to these values:
37       | Field name | Required Two-Option Checkbox |
38       | Field description | Required Two-Option Checkbox |
39       | Required | yes |
40     And I set the field "Options" to multiline
41     """
42     RTOC Option 1
43     RTOC Option 2
44     """
45     And I press "Add"
46     And I add a "Latlong" field to "Test database name" database and I fill the form with:
47       | Field name | Required Latlong |
48       | Field description | Required Latlong |
49       | Required | yes |
50     And I add a "Menu" field to "Test database name" database and I fill the form with:
51       | Field name | Required Menu |
52       | Field description | Required Menu |
53       | Required | yes |
54       | Options | Option 1 |
55     And I add a "Number" field to "Test database name" database and I fill the form with:
56       | Field name | Required Number |
57       | Field description | Required Number |
58       | Required | yes |
59     And I add a "Radio button" field to "Test database name" database and I fill the form with:
60       | Field name | Required Radio |
61       | Field description | Required Radio |
62       | Required | yes |
63       | Options | Required Radio Option 1 |
64     And I add a "Text input" field to "Test database name" database and I fill the form with:
65       | Field name | Required Text input |
66       | Field description | Required Text input |
67       | Required | yes |
68     And I add a "Text area" field to "Test database name" database and I fill the form with:
69       | Field name | Required Text area |
70       | Field description | Required Text area |
71       | Required | yes |
72     And I add a "URL" field to "Test database name" database and I fill the form with:
73       | Field name | Required URL |
74       | Field description | Required URL |
75       | Required | yes |
76     And I add a "Multimenu" field to "Test database name" database and I fill the form with:
77       | Field name | Required Multimenu |
78       | Field description | Required Multimenu |
79       | Required | yes |
80       | Options | Option 1 |
81     And I follow "Fields"
82     And I set the field "newtype" to "Multimenu"
83     And I click on "Go" "button" in the ".fieldadd" "css_element"
84     And I set the following fields to these values:
85       | Field name | Required Two-Option Multimenu |
86       | Field description | Required Two-Option Multimenu |
87       | Required | yes |
88     And I set the field "Options" to multiline
89     """
90     Option 1
91     Option 2
92     """
93     And I press "Add"
94     And I add a "Checkbox" field to "Test database name" database and I fill the form with:
95       | Field name | Not required Checkbox |
96       | Field description | Not required Checkbox |
97       | Options | Not required Checkbox Option 1 |
98     And I add a "Latlong" field to "Test database name" database and I fill the form with:
99       | Field name | Not required Latlong |
100       | Field description | Not required Latlong |
101     And I add a "Menu" field to "Test database name" database and I fill the form with:
102       | Field name | Not required Menu |
103       | Field description | Not required Menu |
104       | Options | Option 1 |
105     And I add a "Number" field to "Test database name" database and I fill the form with:
106       | Field name | Not required Number |
107       | Field description | Not required Number |
108     And I add a "Radio button" field to "Test database name" database and I fill the form with:
109       | Field name | Not required Radio |
110       | Field description | Not required Radio |
111       | Options | Not required Radio Option 1 |
112     And I add a "Text input" field to "Test database name" database and I fill the form with:
113       | Field name | Not required Text input |
114       | Field description | Not required Text input |
115     And I add a "Text area" field to "Test database name" database and I fill the form with:
116       | Field name | Not required Text area |
117       | Field description | Not required Text area |
118     And I add a "URL" field to "Test database name" database and I fill the form with:
119       | Field name | Not required URL |
120       | Field description | Not required URL |
121     And I add a "Multimenu" field to "Test database name" database and I fill the form with:
122       | Field name | Not required Multimenu |
123       | Field description | Not required Multimenu |
124       | Options | Option 1 |
125     And I follow "Templates"
126     And I log out
128   Scenario: Students receive errors for empty required fields but not for optional fields
129     When I log in as "student1"
130     And I follow "Course 1"
131     And I add an entry to "Test database name" database with:
132        | Base Text input | Some input to allow us to submit the otherwise empty form |
133     And I press "Save and view"
134     Then ".alert.alert-error" "css_element" should exist in the "Required Checkbox" "table_row"
135     And ".alert.alert-error" "css_element" should exist in the "Required Two-Option Checkbox" "table_row"
136     And ".alert.alert-error" "css_element" should exist in the "Required Latlong" "table_row"
137     And ".alert.alert-error" "css_element" should exist in the "Required Menu" "table_row"
138     And ".alert.alert-error" "css_element" should exist in the "Required Number" "table_row"
139     And ".alert.alert-error" "css_element" should exist in the "Required Radio" "table_row"
140     And ".alert.alert-error" "css_element" should exist in the "Required Text input" "table_row"
141     And ".alert.alert-error" "css_element" should exist in the "Required Text area" "table_row"
142     And ".alert.alert-error" "css_element" should exist in the "Required URL" "table_row"
143     And ".alert.alert-error" "css_element" should exist in the "Required Multimenu" "table_row"
144     And ".alert.alert-error" "css_element" should exist in the "Required Two-Option Multimenu" "table_row"
145     And ".alert.alert-error" "css_element" should not exist in the "Not required Checkbox" "table_row"
146     And ".alert.alert-error" "css_element" should not exist in the "Not required Latlong" "table_row"
147     And ".alert.alert-error" "css_element" should not exist in the "Not required Menu" "table_row"
148     And ".alert.alert-error" "css_element" should not exist in the "Not required Number" "table_row"
149     And ".alert.alert-error" "css_element" should not exist in the "Not required Radio" "table_row"
150     And ".alert.alert-error" "css_element" should not exist in the "Not required Text input" "table_row"
151     And ".alert.alert-error" "css_element" should not exist in the "Not required Text area" "table_row"
152     And ".alert.alert-error" "css_element" should not exist in the "Not required URL" "table_row"
153     And ".alert.alert-error" "css_element" should not exist in the "Not required Multimenu" "table_row"
154     And I follow "View list"
155     And I should see "No entries in database"
157   Scenario: Students recieve no error for filled in required fields
158     When I log in as "student1"
159     And I follow "Course 1"
160     And I add an entry to "Test database name" database with:
161        | Base Text input               | Some input to allow us to submit the otherwise empty form |
162        | Required Checkbox Option 1    | 1                                                         |
163        | RTOC Option 1                 | 1                                                         |
164        | Latitude                      | 0                                                         |
165        | Longitude                     | 0                                                         |
166        | Required Menu                 | 1                                                         |
167        | Required Number               | 1                                                         |
168        | Required Radio Option 1       | 1                                                         |
169        | Required Text input           | New entry text                                            |
170        | Required Text area            | More text                                                 |
171        | Required URL                  | http://example.com/                                       |
172        | Required Multimenu            | 1                                                         |
173        | Required Two-Option Multimenu | 1                                                         |
174     And I press "Save and view"
175     And I follow "View list"
176     Then I should not see "No entries in database"
177     And I should see "New entry text"
179   Scenario: Fields refill with data after having an error
180     When I log in as "student1"
181     And I follow "Course 1"
182     And I add an entry to "Test database name" database with:
183        | RTOC Option 1                 | 1                   |
184        | Latitude                      | 0                   |
185        | Longitude                     | 0                   |
186        | Required Menu                 | 1                   |
187        | Required Number               | 1                   |
188        | Required Radio Option 1       | 1                   |
189        | Required Text input           | New entry text      |
190        | Required Text area            | More text           |
191        | Required URL                  | http://example.com/ |
192        | Required Multimenu            | 1                   |
193        | Required Two-Option Multimenu | 1                   |
194     And I press "Save and view"
195     Then the following fields match these values:
196        | Base Text input               |                     |
197        | Latitude                      | 0                   |
198        | Longitude                     | 0                   |
199        | Required Menu                 | Option 1            |
200        | Required Number               | 1                   |
201        | Required Radio Option 1       | 1                   |
202        | Required Text input           | New entry text      |
203        | Required Text area            | More text           |
204        | Required URL                  | http://example.com/ |
205        | Required Multimenu            | Option 1            |
206        | Required Two-Option Multimenu | Option 1            |