Skip to content

Commit

Permalink
Clicking on a selected radio button should not unselect it
Browse files Browse the repository at this point in the history
Fixes #68.
  • Loading branch information
mgedmin committed Jun 25, 2019
1 parent 7d30a09 commit 3016719
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/zope/testbrowser/browser.py
Expand Up @@ -1151,6 +1151,12 @@ def __repr__(self):
"<ItemControl name='%s' type='radio' optionValue=%r selected=%r>"
) % (self._parent.name, self.optionValue, self.selected)

def click(self):
# Radio buttons cannot be unselected by clicking on them, see
# https://github.com/zopefoundation/zope.testbrowser/issues/68
if not self.selected:
super(RadioItemControl, self).click()

def mechRepr(self):
toStr = self.browser.toStr
id = toStr(self._elem.attrs.get('id'))
Expand Down
31 changes: 31 additions & 0 deletions src/zope/testbrowser/tests/test_browser.py
Expand Up @@ -1014,6 +1014,37 @@ def test_subcontrols_can_be_selected_by_label_substring():
"""


def test_radio_buttons_cannot_be_unselected():
"""
>>> app = TestApp()
>>> browser = Browser(wsgi_app=app)
>>> app.set_next_response(b'''
... <html><body>
... <form method='get' action='action'>
... <input type="radio" name="foo" id="foo1" value="v1" checked>
... <label for="foo1">label 1</label>
... <input type="radio" name="foo" id="foo2" value="v2">
... <label for="foo2">label 2</label>
... </form>
... </body></html>
... ''')
>>> browser.open('http://localhost/foo') # doctest: +ELLIPSIS
GET /foo HTTP/1.1
...
>>> browser.getControl(name='foo').value
['v1']
>>> browser.getControl('label 1').click()
>>> browser.getControl(name='foo').value
['v1']
>>> browser.getControl('label 2').click()
>>> browser.getControl(name='foo').value
['v2']
"""


UNICODE_TEST = u'\u4e2d\u6587\u7dad' # unicode in doctests is hard!


Expand Down

0 comments on commit 3016719

Please sign in to comment.