767 |
767 |
logged_error = pub.loggederror_class.select(order_by='id')[1]
|
768 |
768 |
assert logged_error.summary == 'Invalid value "True" for field "computed"'
|
769 |
769 |
assert logged_error.formdef_id == formdef.id
|
|
770 |
|
|
771 |
|
|
772 |
def test_computed_field_field_position(pub):
|
|
773 |
FormDef.wipe()
|
|
774 |
|
|
775 |
formdef = FormDef()
|
|
776 |
formdef.name = 'test'
|
|
777 |
formdef.fields = [
|
|
778 |
fields.PageField(id='0', label='1st page', type='page'),
|
|
779 |
fields.StringField(
|
|
780 |
id='1',
|
|
781 |
label='string1',
|
|
782 |
varname='string1',
|
|
783 |
condition={'type': 'django', 'value': 'not form_var_bool'},
|
|
784 |
required=False,
|
|
785 |
),
|
|
786 |
fields.StringField(
|
|
787 |
id='2',
|
|
788 |
label='string2',
|
|
789 |
varname='string2',
|
|
790 |
condition={'type': 'django', 'value': 'form_var_bool'},
|
|
791 |
required=False,
|
|
792 |
),
|
|
793 |
# bool field after string fields
|
|
794 |
fields.BoolField(id='3', label='bool', varname='bool'),
|
|
795 |
fields.ComputedField(
|
|
796 |
id='4',
|
|
797 |
label='computed',
|
|
798 |
varname='computed',
|
|
799 |
value_template='{% if form_var_bool %}X{{ form_var_string2 }}{% else %}Y{{ form_var_string1 }}{% endif%}',
|
|
800 |
),
|
|
801 |
fields.PageField(id='5', label='2nd page', type='page'),
|
|
802 |
fields.CommentField(id='6', label='{{ form_var_computed }}', type='comment'),
|
|
803 |
]
|
|
804 |
formdef.store()
|
|
805 |
formdef.data_class().wipe()
|
|
806 |
|
|
807 |
app = get_app(pub)
|
|
808 |
|
|
809 |
resp = app.get('/test/')
|
|
810 |
resp = resp.forms[0].submit('submit') # -> 2nd page
|
|
811 |
assert 'YNone' in resp.text
|
|
812 |
|
|
813 |
resp = app.get('/test/')
|
|
814 |
resp.form['f1'] = 'foo1'
|
|
815 |
resp = resp.forms[0].submit('submit') # -> 2nd page
|
|
816 |
assert 'Yfoo1' in resp.text
|
|
817 |
|
|
818 |
resp = app.get('/test/')
|
|
819 |
resp.form['f3'] = True
|
|
820 |
resp = resp.forms[0].submit('submit') # -> 2nd page
|
|
821 |
assert 'XNone' in resp.text
|
|
822 |
|
|
823 |
resp = app.get('/test/')
|
|
824 |
resp.form['f2'] = 'foo2'
|
|
825 |
resp.form['f3'] = True
|
|
826 |
resp = resp.forms[0].submit('submit') # -> 2nd page
|
|
827 |
assert 'Xfoo2' in resp.text
|
770 |
|
-
|