2 Feature: Users can be required to specify certain fields when adding entries to database activities
3 In order to constrain user input
5 I need to specify certain fields as required when I add entries to databases
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 |
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 |
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 |
32 | Options | Required Checkbox Option 1 |
34 And I select "Checkbox" from the "newtype" singleselect
35 And I set the following fields to these values:
36 | Field name | Required Two-Option Checkbox |
37 | Field description | Required Two-Option Checkbox |
39 And I set the field "Options" to multiline
45 And I add a "Latlong" field to "Test database name" database and I fill the form with:
46 | Field name | Required Latlong |
47 | Field description | Required Latlong |
49 And I add a "Menu" field to "Test database name" database and I fill the form with:
50 | Field name | Required Menu |
51 | Field description | Required Menu |
53 | Options | Option 1 |
54 And I add a "Number" field to "Test database name" database and I fill the form with:
55 | Field name | Required Number |
56 | Field description | Required Number |
58 And I add a "Radio button" field to "Test database name" database and I fill the form with:
59 | Field name | Required Radio |
60 | Field description | Required Radio |
62 | Options | Required Radio Option 1 |
63 And I add a "Text input" field to "Test database name" database and I fill the form with:
64 | Field name | Required Text input |
65 | Field description | Required Text input |
67 And I add a "Text area" field to "Test database name" database and I fill the form with:
68 | Field name | Required Text area |
69 | Field description | Required Text area |
71 And I add a "URL" field to "Test database name" database and I fill the form with:
72 | Field name | Required URL |
73 | Field description | Required URL |
75 And I add a "Multimenu" field to "Test database name" database and I fill the form with:
76 | Field name | Required Multimenu |
77 | Field description | Required Multimenu |
79 | Options | Option 1 |
81 And I select "Multimenu" from the "newtype" singleselect
82 And I set the following fields to these values:
83 | Field name | Required Two-Option Multimenu |
84 | Field description | Required Two-Option Multimenu |
86 And I set the field "Options" to multiline
92 And I add a "Checkbox" field to "Test database name" database and I fill the form with:
93 | Field name | Not required Checkbox |
94 | Field description | Not required Checkbox |
95 | Options | Not required Checkbox Option 1 |
96 And I add a "Latlong" field to "Test database name" database and I fill the form with:
97 | Field name | Not required Latlong |
98 | Field description | Not required Latlong |
99 And I add a "Menu" field to "Test database name" database and I fill the form with:
100 | Field name | Not required Menu |
101 | Field description | Not required Menu |
102 | Options | Option 1 |
103 And I add a "Number" field to "Test database name" database and I fill the form with:
104 | Field name | Not required Number |
105 | Field description | Not required Number |
106 And I add a "Radio button" field to "Test database name" database and I fill the form with:
107 | Field name | Not required Radio |
108 | Field description | Not required Radio |
109 | Options | Not required Radio Option 1 |
110 And I add a "Text input" field to "Test database name" database and I fill the form with:
111 | Field name | Not required Text input |
112 | Field description | Not required Text input |
113 And I add a "Text area" field to "Test database name" database and I fill the form with:
114 | Field name | Not required Text area |
115 | Field description | Not required Text area |
116 And I add a "URL" field to "Test database name" database and I fill the form with:
117 | Field name | Not required URL |
118 | Field description | Not required URL |
119 And I add a "Multimenu" field to "Test database name" database and I fill the form with:
120 | Field name | Not required Multimenu |
121 | Field description | Not required Multimenu |
122 | Options | Option 1 |
123 And I follow "Templates"
126 Scenario: Students receive errors for empty required fields but not for optional fields
127 When I log in as "student1"
128 And I follow "Course 1"
129 And I add an entry to "Test database name" database with:
130 | Base Text input | Some input to allow us to submit the otherwise empty form |
131 And I press "Save and view"
132 Then ".alert.alert-error" "css_element" should exist in the "Required Checkbox" "table_row"
133 And ".alert.alert-error" "css_element" should exist in the "Required Two-Option Checkbox" "table_row"
134 And ".alert.alert-error" "css_element" should exist in the "Required Latlong" "table_row"
135 And ".alert.alert-error" "css_element" should exist in the "Required Menu" "table_row"
136 And ".alert.alert-error" "css_element" should exist in the "Required Number" "table_row"
137 And ".alert.alert-error" "css_element" should exist in the "Required Radio" "table_row"
138 And ".alert.alert-error" "css_element" should exist in the "Required Text input" "table_row"
139 And ".alert.alert-error" "css_element" should exist in the "Required Text area" "table_row"
140 And ".alert.alert-error" "css_element" should exist in the "Required URL" "table_row"
141 And ".alert.alert-error" "css_element" should exist in the "Required Multimenu" "table_row"
142 And ".alert.alert-error" "css_element" should exist in the "Required Two-Option Multimenu" "table_row"
143 And ".alert.alert-error" "css_element" should not exist in the "Not required Checkbox" "table_row"
144 And ".alert.alert-error" "css_element" should not exist in the "Not required Latlong" "table_row"
145 And ".alert.alert-error" "css_element" should not exist in the "Not required Menu" "table_row"
146 And ".alert.alert-error" "css_element" should not exist in the "Not required Number" "table_row"
147 And ".alert.alert-error" "css_element" should not exist in the "Not required Radio" "table_row"
148 And ".alert.alert-error" "css_element" should not exist in the "Not required Text input" "table_row"
149 And ".alert.alert-error" "css_element" should not exist in the "Not required Text area" "table_row"
150 And ".alert.alert-error" "css_element" should not exist in the "Not required URL" "table_row"
151 And ".alert.alert-error" "css_element" should not exist in the "Not required Multimenu" "table_row"
152 And I follow "View list"
153 And I should see "No entries in database"
155 Scenario: Students recieve no error for filled in required fields
156 When I log in as "student1"
157 And I follow "Course 1"
158 And I add an entry to "Test database name" database with:
159 | Base Text input | Some input to allow us to submit the otherwise empty form |
160 | Required Checkbox Option 1 | 1 |
161 | RTOC Option 1 | 1 |
164 | Required Menu | 1 |
165 | Required Number | 1 |
166 | Required Radio Option 1 | 1 |
167 | Required Text input | New entry text |
168 | Required Text area | More text |
169 | Required URL | http://example.com/ |
170 | Required Multimenu | 1 |
171 | Required Two-Option Multimenu | 1 |
172 And I press "Save and view"
173 And I follow "View list"
174 Then I should not see "No entries in database"
175 And I should see "New entry text"
177 Scenario: Fields refill with data after having an error
178 When I log in as "student1"
179 And I follow "Course 1"
180 And I add an entry to "Test database name" database with:
181 | RTOC Option 1 | 1 |
184 | Required Menu | 1 |
185 | Required Number | 1 |
186 | Required Radio Option 1 | 1 |
187 | Required Text input | New entry text |
188 | Required Text area | More text |
189 | Required URL | http://example.com/ |
190 | Required Multimenu | 1 |
191 | Required Two-Option Multimenu | 1 |
192 And I press "Save and view"
193 Then the following fields match these values:
194 | Base Text input | |
197 | Required Menu | Option 1 |
198 | Required Number | 1 |
199 | Required Radio Option 1 | 1 |
200 | Required Text input | New entry text |
201 | Required Text area | More text |
202 | Required URL | http://example.com/ |
203 | Required Multimenu | Option 1 |
204 | Required Two-Option Multimenu | Option 1 |
206 Scenario: A student fills in Latitude but not Longitude will see an error
207 Given I log in as "student1"
208 And I follow "Course 1"
209 When I add an entry to "Test database name" database with:
210 | Base Text input | Some input to allow us to submit the otherwise empty form |
211 | Required Checkbox Option 1 | 1 |
212 | RTOC Option 1 | 1 |
214 | Required Menu | 1 |
215 | Required Number | 1 |
216 | Required Radio Option 1 | 1 |
217 | Required Text input | New entry text |
218 | Required Text area | More text |
219 | Required URL | http://example.com/ |
220 | Required Multimenu | 1 |
221 | Required Two-Option Multimenu | 1 |
222 And I set the field with xpath "//div[@title='Not required Latlong']//tr[td/label[normalize-space(.)='Latitude']]/td/input" to "20"
223 And I press "Save and view"
224 Then ".alert.alert-error" "css_element" should exist in the "Required Latlong" "table_row"
225 And ".alert.alert-error" "css_element" should exist in the "Not required Latlong" "table_row"