Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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'
            })
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
 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'
     }
Exemplo n.º 8
0
    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()
Exemplo n.º 9
0
    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
Exemplo n.º 10
0
    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()
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    def test_validator_recursion(self):
        """
            referencing .value from that field's validator causes a recursion
        """
        f = Form('f')

        def validator(form):
            try:
                f.elements.myfield.value
            except ElementInvalid as e:
                raise ValueInvalid(e)

        el = f.add_text('myfield', 'My Field', maxlength=1)
        el.add_processor(validator)
        f.set_submitted({'f-submit-flag': 'submitted', 'myfield': '12'})
        try:
            assert not f.is_valid()
        except RuntimeError as e:
            assert 'maximum recursion depth exceeded' in str(e), str(e)
Exemplo n.º 13
0
    def test_all_errors(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)

        f1 = Form('login1')
        f1.add_text('field', 'Field', required=True)
        f1.add_text('myfield', 'My Field', required=True)
        f1.add_validator(validator)

        post = {'login1-submit-flag': 'submitted', 'myfield': 'bar'}
        f1.set_submitted(post)
        assert not f1.is_valid()

        form_errors, field_errors = f1.all_errors()
        self.assertEqual(field_errors, {'Field': ['field is required']})
        self.assertEqual(form_errors, ['My Field: must be "foo", not "bar"'])

        # now make sure we can set the id as the field errors dict key if needed
        form_errors, field_errors = f1.all_errors(id_as_key=True)
        self.assertEqual(field_errors, {'field': ['field is required']})
Exemplo n.º 14
0
    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()
Exemplo n.º 15
0
    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')