コード例 #1
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_submit_by_name(self):
        f = Form('login')
        f.add_text('username', 'User Name')
        f.add_submit('submit')
        post = {
            'login-submit-flag': 'submitted',
            'username': '******',
            'submit': 'Submit'
        }
        f.set_submitted(post)
        assert f.get_values() == {
            'username': '******',
            'login-submit-flag': 'submitted',
            'submit': 'Submit'
        }

        f = Form('login')
        f.add_text('username', 'User Name', name="unfield")
        f.add_submit('submit', name="submitbtn")
        post = {
            'login-submit-flag': 'submitted',
            'unfield': 'test2',
            'submitbtn': 'Submit'
        }
        f.set_submitted(post)
        self.assertEqual(
            f.get_values(), {
                'unfield': 'test2',
                'login-submit-flag': 'submitted',
                'submitbtn': 'Submit'
            })
コード例 #2
0
def test_el_button():
    el = Form('f', static=True).add_button('field', 'Field')
    assert el.render() == '', el.render()

    el = Form('f', static=True).add_button('field',
                                           'Field',
                                           defaultval='the button')
    assert el.render() == '', el.render()
コード例 #3
0
def test_el_textarea():
    html = '<span class="foo textarea" id="f-f">&nbsp;</span>'
    el = Form('f', static=True).add_textarea('f')
    assert el(class_='foo') == html, el()

    html = '<span class="textarea" id="f-f">foo</span>'
    el = Form('f', static=True).add_textarea('f', defaultval='foo')
    assert el() == html, el()
コード例 #4
0
def test_el_url():
    html = '<span class="text static" id="f-f">&nbsp;</span>'
    el = Form('f', static=True).add_url('f')
    assert el() == html, el()

    html = '<span class="text static" id="f-f">example.org</span>'
    el = Form('f', static=True).add_url('f', defaultval="example.org")
    assert el() == html, el()

    html = '<span class="text static" id="f-f"><a href="http://example.org">' \
        'http://example.org</a></span>'
    el = Form('f', static=True).add_url('f', defaultval="http://example.org")
    assert el() == html, el()
コード例 #5
0
def test_el_select_list_tuples():
    o = [(1, 'a'), (2, 'b')]
    html = '<span class="select" id="f-f">&nbsp;</span>'
    el = Form('f', static=True).add_select('f', o)
    assert el() == html, el()

    html = '<span class="select" id="f-f">a</span>'
    el = Form('f', static=True).add_select('f', o, defaultval=1)
    assert el() == html, el()
    el = Form('f', static=True).add_select('f', o, defaultval='1')
    assert el() == html, el()
    el = Form('f', static=True).add_select('f', o, defaultval=u'1')
    assert el() == html, el()
コード例 #6
0
def test_el_text():
    html = '<span class="text static" id="f-field">&nbsp;</span>'
    form = Form('f', static=True)
    el = form.add_text('field', 'Field')
    assert el() == html, el()

    form = Form('f', static=True)
    el = form.add_text('field', 'Field', maxlength=1)
    assert el() == html, el()

    html = '<span class="text static" id="f-field">one</span>'
    form = Form('f', static=True)
    el = form.add_text('field', 'Field', defaultval='one')
    assert el() == html, el()
コード例 #7
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_submitted_only_when_appropriate(self):
        f1 = Form('login1')
        f1.add_text('field')
        f2 = Form('login2')
        f2.add_text('field')

        post = {'login1-submit-flag': 'submitted', 'field': 'foo'}
        f1.set_submitted(post)
        assert f1.is_submitted()
        assert f1.elements.field.value == 'foo'

        f2.set_submitted(post)
        assert not f2.is_submitted()
        assert f2.elements.field.value is NotGiven
コード例 #8
0
def test_el_select_list():
    o = ['foo', 'bar']
    html = '<span class="select" id="f-f">&nbsp;</span>'
    el = Form('f', static=True).add_select('f', o)
    assert el() == html, el()

    html = '<span class="select" id="f-f">foo</span>'
    el = Form('f', static=True).add_select('f', o, defaultval='foo')
    assert el() == html, el()
    el = Form('f', static=True).add_select('f', o, defaultval=u'foo')
    assert el() == html, el()

    html = '<span class="select" id="f-f">bar</span>'
    el = Form('f', static=True).add_select('f', o, defaultval='bar')
    assert el() == html, el()
コード例 #9
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_formencoding(self):
        """ensure form has correct encoding for file uploads"""

        f1 = Form('login')
        f1.add_text('username', 'User Name')
        assert "multipart/form-data" not in f1.render()

        f2 = Form('pictures')
        f2.add_file('picture', 'Picture')
        assert "multipart/form-data" in f2.render()

        # make sure this works with grouped elements
        f = Form('f')
        fg = f.add_elgroup('file-group')
        fg.add_file('picture', 'Picture')
        assert "multipart/form-data" in f.render()
コード例 #10
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_is_submit(self):
        f1 = Form('login')
        assert not f1.is_submitted()

        post = {'login-submit-flag': 'submitted'}
        f1.set_submitted(post)
        assert f1.is_submitted()
コード例 #11
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_is_valid(self):
        f = Form('f')
        f.add_text('f')
        # wasn't submitted, so not valid
        assert not f.is_valid()
        f.set_submitted({'f-submit-flag': 'submitted'})
        assert f.is_valid()

        f = Form('f')
        f.add_text('f', required=True)
        # wasn't submitted, so not valid
        assert not f.is_valid()
        f.set_submitted({'f-submit-flag': 'submitted'})
        assert not f.is_valid()
        f.set_submitted({'f-submit-flag': 'submitted', 'f': 'foo'})
        assert f.is_valid()
コード例 #12
0
def test_el_checkbox():
    not_checked = '<span class="checkbox static" id="f-f">no</span>'
    checked = '<span class="checkbox static" id="f-f">yes</span>'

    # no default
    f = Form('f', static=True)
    el = f.add_checkbox('f', 'f')
    assert el.render() == not_checked, el.render()
    el.defaultval = True
    assert el.render() == checked, el.render()

    # checked attribute
    f = Form('f', static=True)
    el = f.add_checkbox('f', 'f', checked='checked')
    assert el.render(checked='checked') == checked, el.render(
        checked='checked')
コード例 #13
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def test_dup_fields(self):
     f = Form('f')
     f.add_text('f')
     try:
         f.add_text('f')
         self.fail('should not be able to add elements with the same id')
     except ValueError:
         pass
コード例 #14
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def testForm1(self):
     """
     most basic usage of a form
     """
     form = Form('login')
     form.add_text('username', 'User Name')
     self.assertEqual(self.render_html,
                      str(form.elements.username.render()))
コード例 #15
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def test_exception_on_static_submit(self):
     f1 = Form('login1', static=True)
     f1.add_text('field')
     post = {'login1-submit-flag': 'submitted', 'field': 'foo'}
     try:
         f1.set_submitted(post)
         assert False, 'expected exception for submitting to static form'
     except ProgrammingError:
         pass
コード例 #16
0
def test_el_date():
    html = '<span class="text static" id="f-field">&nbsp;</span>'
    el = Form('f', static=True).add_date('field', 'Field')
    assert el() == html, el()

    # our date-time object should get converted to the appropriate format
    html = '<span class="text static" id="f-field">12/03/2009</span>'
    el = Form('f', static=True).add_date('field',
                                         'Field',
                                         defaultval=datetime.date(2009, 12, 3))
    assert el() == html, el()

    # european style dates
    html = '<span class="text static" id="f-field">03/12/2009</span>'
    el = Form('f', static=True).add_date('field',
                                         'Field',
                                         defaultval=datetime.date(2009, 12, 3),
                                         month_style='dd/mm/yyyy')
    assert el() == html, el()
コード例 #17
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def test_default(self):
     f = Form('login')
     f.add_text('username', 'User Name')
     f.add_file('file')
     filesub = DumbObject(filename='text.txt',
                          content_type='text/plain',
                          content_length=10)
     f.set_defaults({'username': '******', 'file': filesub})
     self.assertEqual(
         '<input class="text" id="login-username" name="username" type="text" value="test1" />',
         str(f.elements.username.render()))
コード例 #18
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_blank_multiselect(self):
        f = Form('login')
        options = [(1, 'one'), (2, 'two')]
        el = f.add_mselect('numlist', options, 'Disabled', defaultval=2)
        assert 'selected="selected"' in el()
        post = {'login-submit-flag': 'submitted'}
        f.set_submitted(post)
        assert not f.get_values()['numlist']

        # should unset on re-post after a blank submit
        assert 'selected="selected"' not in el()
コード例 #19
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_add_field_errors_string(self):
        form = Form('f')
        form.add_text('text1', 'Value')
        form.add_text('text2', 'Value')

        result = form.add_field_errors({
            'text1': 'Generic Error',
            'text2': 'Error'
        })
        assert result
        self.assertEqual(form.elements.text1.errors, ['Generic Error'])
        self.assertEqual(form.elements.text2.errors, ['Error'])
コード例 #20
0
def test_el_select_multiple():
    o = [(1, 'foo'), (2, 'bar')]
    html = '<span class="select" id="f-f">&nbsp;</span>'
    el = Form('f', static=True).add_select('f', o, multiple=True)
    assert el() == html, el()

    html = '<span class="select" id="f-f">foo</span>'
    el = Form('f', static=True).add_select('f', o, multiple=True, defaultval=1)
    assert el() == html, el()
    el = Form('f', static=True).add_select('f',
                                           o,
                                           multiple=True,
                                           defaultval='1')
    assert el() == html, el()
    el = Form('f', static=True).add_select('f',
                                           o,
                                           multiple=True,
                                           defaultval=u'1')
    assert el() == html, el()
    el = Form('f', static=True).add_select('f',
                                           o,
                                           multiple=True,
                                           defaultval=[1, 3])
    assert el() == html, el()

    html = '<span class="select" id="f-f">foo, bar</span>'
    el = Form('f', static=True).add_select('f',
                                           o,
                                           multiple=True,
                                           defaultval=[1, 2])
    assert el() == html, el()
コード例 #21
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_add_field_errors_extras(self):
        # the result of calling add_field_errors() when all errors are not
        # processed should be False
        form = Form('f')
        form.add_text('text1', 'Value')
        form.add_text('text2', 'Value')

        result = form.add_field_errors({
            'text1': 'Generic Error',
            'text2': 'Error',
            'not there': 'Error'
        })
        assert result is False
コード例 #22
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def test_submit(self):
     f = Form('login')
     f.add_text('username', 'User Name')
     f.set_defaults({'username': '******'})
     post = {'login-submit-flag': 'submitted', 'username': '******'}
     f.set_submitted(post)
     self.assertEqual(
         '<input class="text" id="login-username" name="username" type="text" value="test2" />',
         str(f.elements.username.render()))
     assert f.get_values() == {
         'username': '******',
         'login-submit-flag': 'submitted'
     }
コード例 #23
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_blank_multicheckbox(self):
        f = Form('login')
        el1 = f.add_mcheckbox('mcheck1', 'Check 1', 1, 'cgroup1', checked=True)
        el2 = f.add_mcheckbox('mcheck2', 'Check 2', 2, 'cgroup1')
        assert 'checked="checked"' in el1()
        assert 'checked="checked"' not in el2()
        post = {'login-submit-flag': 'submitted'}
        f.set_submitted(post)
        assert not f.get_values()['cgroup1']

        # should unset on re-post after a blank submit
        assert 'checked="checked"' not in el1()
        assert 'checked="checked"' not in el2()
コード例 #24
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_blank_radio(self):
        f = Form('login')
        el1 = f.add_radio('radio1', 'Radio 1', 1, 'rgroup1', selected=True)
        el2 = f.add_radio('radio2', 'Radio 2', 2, 'rgroup1')
        assert 'checked="checked"' in el1()
        assert 'checked="checked"' not in el2()
        post = {'login-submit-flag': 'submitted'}
        f.set_submitted(post)
        assert not f.get_values()['rgroup1']

        # should unset on re-post after a blank submit
        assert 'selected="selected"' not in el1()
        assert 'selected="selected"' not in el2()
コード例 #25
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
 def test_first_class_elements(self):
     """
     first element in form and under header should have a 'first' class
     """
     form_first_html = '<div id="user-username-row" class="text row odd first">'
     header_first_html = '<div id="user-groupname-row" class="text row even first">'
     form = Form('user')
     form.add_text('username', 'User Name')
     form.add_header('group_membership_header', 'Group Membership')
     form.add_text('groupname', 'Group')
     form_html = form.render()
     assert form_html.find(form_first_html) > -1
     assert form_html.find(header_first_html) > -1
コード例 #26
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_is_cancel(self):
        f1 = Form('login')
        f1.add_cancel('cancel', 'Cancel')
        assert not f1.is_cancel()

        # cancel button, but form is not submitted
        post = {'cancel': 'submitted'}
        f1.set_submitted(post)
        assert not f1.is_cancel()

        # now submit form
        post['login-submit-flag'] = 'submitted'
        f1.set_submitted(post)
        assert f1.is_cancel()
コード例 #27
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_add_field_errors_list(self):
        form = Form('f')
        form.add_text('text1', 'Value')
        form.add_text('text2', 'Value')

        result = form.add_field_errors({
            'text1': ['Generic Error 1', 'Generic Error 2'],
            'text2': ['Error 1', 'Error 2']
        })
        assert result
        assert len(form.elements.text1.errors) == 2
        self.assertEqual(form.elements.text1.errors,
                         ['Generic Error 1', 'Generic Error 2'])
        self.assertEqual(form.elements.text2.errors, ['Error 1', 'Error 2'])
コード例 #28
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_form_validators(self):
        def validator(form):
            if form.elements.myfield.is_valid():
                if form.elements.myfield.value != 'foo':
                    raise ValueInvalid('My Field: must be "foo", not "%s"' %
                                       form.elements.myfield.value)

        f = Form('f')
        f.add_text('myfield', 'My Field')
        f.add_validator(validator)
        f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'bar'})
        assert not f.is_valid()
        self.assertEqual(f._errors[0], 'My Field: must be "foo", not "bar"')
        f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'foo'})
        assert f.is_valid()
        assert len(f._errors) == 0

        # custom message
        f = Form('f')
        f.add_text('myfield', 'My Field')
        f.add_validator(validator, 'value incorrect')
        f.set_submitted({'f-submit-flag': 'submitted', 'myfield': 'bar'})
        assert not f.is_valid()
        self.assertEqual(f._errors[0], 'value incorrect')
コード例 #29
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_validator_element_invalid(self):
        """
            If a validator references an invalid element, then we don't let
            that exception propogate
        """
        f = Form('f')

        def validator(form):
            f.elements.f1.value

        f.add_text('f1', 'f1', maxlength=1)
        f.add_text('f2', 'f2')
        f.add_validator(validator)
        f.set_submitted({'f-submit-flag': 'submitted', 'f1': '12'})
        assert not f.is_valid()
コード例 #30
0
ファイル: test_form.py プロジェクト: blazelibs/blazeform
    def test_blank_checkbox(self):
        html = L(
            '<input checked="checked" class="checkbox" id="login-disabled" name="disabled" '
            'type="checkbox" />')
        f = Form('login')
        el = f.add_checkbox('disabled', 'Disabled', defaultval=True)
        self.assertEqual(el(), html)
        post = {'login-submit-flag': 'submitted'}
        f.set_submitted(post)
        dvalue = f.get_values()['disabled']
        assert dvalue is False

        # should unset on re-post after a blank submit
        html = L(
            '<input class="checkbox" id="login-disabled" name="disabled" type="checkbox" />'
        )
        self.assertEqual(el(), html)