162 |
162 |
assert 'Check values then click submit.' in resp.text
|
163 |
163 |
|
164 |
164 |
|
|
165 |
def test_block_required_previous_page(pub, blocks_feature):
|
|
166 |
FormDef.wipe()
|
|
167 |
BlockDef.wipe()
|
|
168 |
|
|
169 |
block = BlockDef()
|
|
170 |
block.name = 'foobar'
|
|
171 |
block.fields = [
|
|
172 |
fields.StringField(id='123', required=True, label='Test', type='string'),
|
|
173 |
fields.StringField(id='234', required=True, label='Test2', type='string'),
|
|
174 |
]
|
|
175 |
block.store()
|
|
176 |
|
|
177 |
for multipage in (False, True):
|
|
178 |
# single block, go to validation page, come back
|
|
179 |
formdef = FormDef()
|
|
180 |
formdef.name = 'form title'
|
|
181 |
if multipage:
|
|
182 |
formdef.fields = [
|
|
183 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
184 |
fields.BlockField(id='1', label='test', type='block:foobar', required=True),
|
|
185 |
fields.PageField(id='2', label='2nd page', type='page'),
|
|
186 |
]
|
|
187 |
else:
|
|
188 |
formdef.fields = [
|
|
189 |
fields.BlockField(id='1', label='test', type='block:foobar', required=True),
|
|
190 |
]
|
|
191 |
formdef.store()
|
|
192 |
formdef.data_class().wipe()
|
|
193 |
|
|
194 |
app = get_app(pub)
|
|
195 |
resp = app.get(formdef.get_url())
|
|
196 |
resp = resp.form.submit('submit') # -> error page
|
|
197 |
assert 'There were errors processing the form' in resp
|
|
198 |
assert resp.text.count('required field') == 1
|
|
199 |
resp.form['f1$element0$f123'] = 'foo'
|
|
200 |
resp.form['f1$element0$f234'] = 'bar'
|
|
201 |
if multipage:
|
|
202 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
203 |
resp = resp.form.submit('submit') # -> validation page
|
|
204 |
assert 'Check values then click submit.' in resp.text
|
|
205 |
|
|
206 |
if multipage:
|
|
207 |
resp = resp.form.submit('previous') # -> 2nd page
|
|
208 |
resp = resp.form.submit('previous') # -> 1st page
|
|
209 |
assert resp.text.count('required field') == 0
|
|
210 |
assert resp.form['f1$element0$f123'].value == 'foo'
|
|
211 |
assert resp.form['f1$element0$f234'].value == 'bar'
|
|
212 |
|
|
213 |
if multipage:
|
|
214 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
215 |
resp = resp.form.submit('submit') # -> validation page
|
|
216 |
assert 'Check values then click submit.' in resp.text
|
|
217 |
resp = resp.form.submit('submit') # -> submitted
|
|
218 |
|
|
219 |
assert formdef.data_class().count() == 1
|
|
220 |
formdata = formdef.data_class().select()[0]
|
|
221 |
assert formdata.data['1']['data'] == [{'123': 'foo', '234': 'bar'}]
|
|
222 |
|
|
223 |
# add two blocks, go to validation page, come back
|
|
224 |
if multipage:
|
|
225 |
formdef.fields[1].max_items = 3
|
|
226 |
else:
|
|
227 |
formdef.fields[0].max_items = 3
|
|
228 |
formdef.store()
|
|
229 |
formdef.data_class().wipe()
|
|
230 |
|
|
231 |
app = get_app(pub)
|
|
232 |
resp = app.get(formdef.get_url())
|
|
233 |
resp.form['f1$element0$f123'] = 'foo'
|
|
234 |
resp.form['f1$element0$f234'] = 'bar'
|
|
235 |
resp = resp.form.submit('f1$add_element') # -> 1st page
|
|
236 |
resp.form['f1$element1$f123'] = 'foo2'
|
|
237 |
resp.form['f1$element1$f234'] = 'bar2'
|
|
238 |
if multipage:
|
|
239 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
240 |
resp = resp.form.submit('submit') # -> validation page
|
|
241 |
assert 'Check values then click submit.' in resp.text
|
|
242 |
|
|
243 |
if multipage:
|
|
244 |
resp = resp.form.submit('previous') # -> 2nd page
|
|
245 |
resp = resp.form.submit('previous') # -> 1st page
|
|
246 |
assert resp.text.count('required field') == 0
|
|
247 |
assert resp.form['f1$element0$f123'].value == 'foo'
|
|
248 |
assert resp.form['f1$element0$f234'].value == 'bar'
|
|
249 |
assert resp.form['f1$element1$f123'].value == 'foo2'
|
|
250 |
assert resp.form['f1$element1$f234'].value == 'bar2'
|
|
251 |
|
|
252 |
if multipage:
|
|
253 |
resp = resp.form.submit('submit') # -> 2nd page
|
|
254 |
resp = resp.form.submit('submit') # -> validation page
|
|
255 |
assert 'Check values then click submit.' in resp.text
|
|
256 |
resp = resp.form.submit('submit') # -> submitted
|
|
257 |
|
|
258 |
assert formdef.data_class().count() == 1
|
|
259 |
formdata = formdef.data_class().select()[0]
|
|
260 |
assert formdata.data['1']['data'] == [{'123': 'foo', '234': 'bar'}, {'123': 'foo2', '234': 'bar2'}]
|
|
261 |
|
|
262 |
|
165 |
263 |
def test_block_date(pub, blocks_feature):
|
166 |
264 |
FormDef.wipe()
|
167 |
265 |
BlockDef.wipe()
|