summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFlorian Schulze <florian.schulze@gmx.net>2017-10-09 16:46:48 +0200
committerFlorian Schulze <florian.schulze@gmx.net>2017-10-09 18:39:27 +0200
commit27c0689cd1a1beb78238ac7da314f91ace681c10 (patch)
tree209ad230566c4d5bc63f112573176ac3ec1050ec /tests
parentc8304c999b1edd215a5ce9019ebb207239651485 (diff)
downloadwebtest-27c0689cd1a1beb78238ac7da314f91ace681c10.tar.gz
Preserve submit order for radio inputs.
Diffstat (limited to 'tests')
-rw-r--r--tests/html/form_inputs.html9
-rw-r--r--tests/test_forms.py30
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('Блок'))])