Skip to content

Commit

Permalink
Plausible implementations of clear() and getControl()
Browse files Browse the repository at this point in the history
  • Loading branch information
kedder committed Mar 16, 2013
1 parent 75849e8 commit 3ebb335
Showing 1 changed file with 23 additions and 19 deletions.
42 changes: 23 additions & 19 deletions src/zope/testbrowser/browser.py
Expand Up @@ -642,10 +642,9 @@ def add_file(self, file, content_type, filename):
self._form[self.name] = webtest.forms.Upload(filename, contents)

def clear(self):
# TODO
if self._browser_counter != self.browser._counter:
raise zope.testbrowser.interfaces.ExpiredError
self.mech_control.clear()
self.value = None

def __repr__(self):
return "<%s name='%s' type='%s'>" % (
Expand Down Expand Up @@ -774,19 +773,7 @@ def getControl(self, label=None, value=None, index=None):
if self._browser_counter != self.browser._counter:
raise interfaces.ExpiredError

onlyOne([label, value], '"label" and "value"')

if label is not None:
options = [c for c in self.controls
if label in c.getLabels()]
msg = 'label %r' % label
elif value is not None:
options = [c for c in self.controls
if isMatching(c.value, value)]
msg = 'value %r' % value

res = disambiguate(options, msg, index, controlFormTupleRepr)
return res
return getControl(self.controls, label, value, index)

@property
def controls(self):
Expand Down Expand Up @@ -892,17 +879,20 @@ def type(self):
return 'checkbox'

def getControl(self, label=None, value=None, index=None):
#TODO
pass
if self._browser_counter != self.browser._counter:
raise interfaces.ExpiredError

return getControl(self.controls, label, value, index)

@property
def controls(self):
return [CheckboxItemControl(self, c, e, c.form, self.browser)
for c, e in self._ctrlelems]

def clear(self):
# TODO
pass
if self._browser_counter != self.browser._counter:
raise zope.testbrowser.interfaces.ExpiredError
self.value = []

def mechRepr(self):
return "<SelectControl(%s=[*, ambiguous])>" % self.name
Expand Down Expand Up @@ -1181,6 +1171,20 @@ def zeroOrOne(items, description):
raise ValueError(
"Supply no more than one of %s as arguments" % description)

def getControl(controls, label=None, value=None, index=None):
onlyOne([label, value], '"label" and "value"')

if label is not None:
options = [c for c in controls if label in c.getLabels()]
msg = 'label %r' % label
elif value is not None:
options = [c for c in controls if isMatching(c.value, value)]
msg = 'value %r' % value

res = disambiguate(options, msg, index, controlFormTupleRepr)
return res


def getControlLabels(celem, html):
labels = []

Expand Down

0 comments on commit 3ebb335

Please sign in to comment.