From 6c5f6d0c9711250288cfcc9e0681591b2779f739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 2 Feb 2016 12:38:59 +0100 Subject: [PATCH 2/2] tests: check the json export has no value for fields from hidden pages --- tests/test_form_pages.py | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 896014e..00a38f7 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -458,6 +458,92 @@ def test_form_multi_page_condition_checkbox(pub): resp = resp.forms[0].submit('submit') # should go to second page assert 'f3' in resp.forms[0].fields +def test_form_multi_page_condition_json_check(pub): + # make sure the json export has no value for fields from hidden pages + formdef = create_formdef() + formdef.fields = [fields.PageField(id='0', label='1st page', type='page'), + fields.BoolField(id='1', label='checkbox', varname='checkbox'), + fields.PageField(id='2', label='2nd page', type='page', + condition='var_checkbox == "False"'), + fields.StringField(id='3', label='string 2', varname='st2'), + fields.PageField(id='4', label='3rd page', type='page', + condition='var_checkbox == "True"'), + fields.StringField(id='5', label='string 3', varname='st3'), + ] + formdef.store() + resp = get_app(pub).get('/test/') + formdef.data_class().wipe() + resp.form['f1'].checked = True + resp = resp.form.submit('submit') # should go straight to 3rd page + assert 'f5' in resp.form.fields + resp.form['f5'] = 'VALUE F5' + resp = resp.form.submit('submit') + assert 'Check values then click submit.' in resp.body + assert resp.form['previous'] + resp = resp.form.submit('previous') + resp = resp.form.submit('previous') + + # back to first page + assert 'f1' in resp.form.fields + resp.form['f1'].checked = False + resp = resp.form.submit('submit') # should go to second page + assert 'f3' in resp.form.fields + resp.form['f3'] = 'VALUE F3' + resp = resp.form.submit('submit') + assert 'Check values then click submit.' in resp.body + + resp = resp.form.submit() + + assert len(formdef.data_class().select()) == 1 + json_dict = formdef.data_class().select()[0].get_json_export_dict() + assert json_dict['fields']['st2'] == 'VALUE F3' + assert json_dict['fields']['st3'] is None + +def test_form_multi_page_condition_no_confirmation_json_check(pub): + # same as above but without the confirmation page. + formdef = create_formdef() + formdef.confirmation = False + formdef.fields = [fields.PageField(id='0', label='1st page', type='page'), + fields.BoolField(id='1', label='checkbox', varname='checkbox'), + fields.PageField(id='2', label='2nd page', type='page', + condition='var_checkbox == "False"'), + fields.StringField(id='3', label='string 2', varname='st2'), + fields.PageField(id='4', label='3rd page', type='page', + condition='var_checkbox == "True"'), + fields.StringField(id='5', label='string 3', varname='st3'), + fields.PageField(id='6', label='4th page', type='page'), + fields.CommentField(id='7', label='Check values then click submit.', + type='comment'), + ] + formdef.store() + resp = get_app(pub).get('/test/') + formdef.data_class().wipe() + resp.form['f1'].checked = True + resp = resp.form.submit('submit') # should go straight to 3rd page + assert 'f5' in resp.form.fields + resp.form['f5'] = 'VALUE F5' + resp = resp.form.submit('submit') + assert 'Check values then click submit.' in resp.body + assert resp.form['previous'] + resp = resp.form.submit('previous') + resp = resp.form.submit('previous') + + # back to first page + assert 'f1' in resp.form.fields + resp.form['f1'].checked = False + resp = resp.form.submit('submit') # should go to second page + assert 'f3' in resp.form.fields + resp.form['f3'] = 'VALUE F3' + resp = resp.form.submit('submit') + assert 'Check values then click submit.' in resp.body + + resp = resp.form.submit('submit') + + assert len(formdef.data_class().select()) == 1 + json_dict = formdef.data_class().select()[0].get_json_export_dict() + assert json_dict['fields']['st2'] == 'VALUE F3' + assert json_dict['fields']['st3'] is None + def test_form_multi_page_condition_data_source(pub): formdef = create_formdef() formdef.fields = [fields.PageField(id='0', label='1st page', type='page'), -- 2.7.0