diff options
| author | Florian Schulze <florian.schulze@gmx.net> | 2017-10-09 16:46:48 +0200 |
|---|---|---|
| committer | Florian Schulze <florian.schulze@gmx.net> | 2017-10-09 18:39:27 +0200 |
| commit | 27c0689cd1a1beb78238ac7da314f91ace681c10 (patch) | |
| tree | 209ad230566c4d5bc63f112573176ac3ec1050ec /tests | |
| parent | c8304c999b1edd215a5ce9019ebb207239651485 (diff) | |
| download | webtest-27c0689cd1a1beb78238ac7da314f91ace681c10.tar.gz | |
Preserve submit order for radio inputs.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/html/form_inputs.html | 9 | ||||
| -rw-r--r-- | tests/test_forms.py | 30 |
2 files changed, 39 insertions, 0 deletions
diff --git a/tests/html/form_inputs.html b/tests/html/form_inputs.html index 4633981..e7ab368 100644 --- a/tests/html/form_inputs.html +++ b/tests/html/form_inputs.html @@ -21,6 +21,15 @@ <input name="foo" type="radio" value="baz" checked> <input name="button" type="submit" value="radio"> </form> + <form method="POST" id="complex_radio_input_form"> + <input name="__start__" value="item:mapping"> + <input name="foo" type="radio" value="true"> + <input name="__end__" value="item:mapping"> + <input name="__start__" value="item:mapping"> + <input name="foo" type="radio" value="true" checked> + <input name="__end__" value="item:mapping"> + <input name="button" type="submit" value="radio"> + </form> <form method="POST" id="checkbox_input_form"> <input name="foo" type="checkbox" value="bar" checked> <input name="button" type="submit" value="text"> diff --git a/tests/test_forms.py b/tests/test_forms.py index a9de93d..f97071f 100644 --- a/tests/test_forms.py +++ b/tests/test_forms.py @@ -166,6 +166,7 @@ class TestInput(unittest.TestCase): self.assertEqual(form.submit_fields(), [('foo', 'bar')]) form = res.forms['radio_input_form'] + self.assertEqual(form['foo'].selectedIndex, 1) self.assertEqual(form['foo'].value, 'baz') self.assertEqual(form.submit_fields(), [('foo', 'baz')]) @@ -187,6 +188,34 @@ class TestInput(unittest.TestCase): self.assertEqual(form['foo'].value, 'fido') self.assertEqual(form.submit_fields(), [('foo', 'fido')]) + def test_radio_input_order(self): + app = self.callFUT() + res = app.get('/form.html') + self.assertEqual(res.status_int, 200) + self.assertTrue(res.content_type.startswith('text/html')) + + form = res.forms['complex_radio_input_form'] + form['foo'].value = 'true' + self.assertEqual(form['foo'].value, 'true') + self.assertEqual(form['foo'].selectedIndex, 0) + self.assertEqual(form.submit_fields(), [ + (u'__start__', u'item:mapping'), + ('foo', 'true'), + (u'__end__', u'item:mapping'), + (u'__start__', u'item:mapping'), + (u'__end__', u'item:mapping')]) + + res = app.get('/form.html') + form = res.forms['complex_radio_input_form'] + self.assertEqual(form['foo'].value, 'true') + self.assertEqual(form['foo'].selectedIndex, 1) + self.assertEqual(form.submit_fields(), [ + (u'__start__', u'item:mapping'), + (u'__end__', u'item:mapping'), + (u'__start__', u'item:mapping'), + ('foo', 'true'), + (u'__end__', u'item:mapping')]) + def test_input_unicode(self): app = self.callFUT('form_unicode_inputs.html') res = app.get('/form.html') @@ -199,6 +228,7 @@ class TestInput(unittest.TestCase): self.assertEqual(form.submit_fields(), [('foo', u('Хармс'))]) form = res.forms['radio_input_form'] + self.assertEqual(form['foo'].selectedIndex, 1) self.assertEqual(form['foo'].value, u('Блок')) self.assertEqual(form.submit_fields(), [('foo', u('Блок'))]) |
