import flask import main def test_form_field_access(): f = main.form.Form() f.fields['foo'] = main.form.Integer() assert isinstance(f['foo'], main.form.Integer) assert isinstance(f.fields['foo'], main.form.Integer) f = main.form.Form() f['foo'] = main.form.Integer() assert isinstance(f['foo'], main.form.Integer) assert isinstance(f.fields['foo'], main.form.Integer) def test_form_button_access(): f = main.form.Form() f.buttons['foo'] = main.form.Button() assert isinstance(f.buttons['foo'], main.form.Button) def test_form_class_fields(): class TestForm(main.form.Form): foo = main.form.Text() bar = main.form.Integer() f = TestForm() assert 'foo' in f and isinstance(f['foo'], main.form.Text) assert 'bar' in f and isinstance(f['bar'], main.form.Integer) def test_form_submit(app, client, echo): class TestForm(main.form.Form): foo = main.form.Text(required=True) bar = main.form.Integer(required=True) send = main.form.Button() @app.route('/test/form/submit/', methods=['GET', 'POST']) @main.rendering.page() def endpoint_test_form_submit(): f = TestForm() if flask.request.method == 'POST': f.handle() echo(flask.request.form) assert f['foo'].value == 'bongo' assert f['bar'].value == 23 return f response = client.post('/test/form/submit/', data={ 'testform.foo': 'bongo', 'testform.bar': '23', 'submit': 'testform.send', })