Added TestableCheckbox

This commit is contained in:
2025-10-31 21:49:12 +01:00
parent 3721bb7ad7
commit 991a6f07ff
12 changed files with 306 additions and 18 deletions

View File

@@ -345,10 +345,6 @@ class TestableElement:
elif options:
self.fields[name] = options[0]['value']
def _get_my_ft(self, element: Tag):
_inner = element.find(self.tag) if self.tag and self.tag != element.name else element
return MyFT(_inner.name, _inner.attrs)
@staticmethod
def _get_input_identifier(input_field, counter):
"""
@@ -432,14 +428,6 @@ class TestableElement:
# Default to string
return value
@staticmethod
def _get_element(html_fragment: str):
html_fragment = html_fragment.strip()
if (not html_fragment.startswith('<div') and
not html_fragment.startswith('<form')):
html_fragment = "<div>" + html_fragment + "</div>"
return BeautifulSoup(html_fragment, 'html.parser').find()
@staticmethod
def _parse(tag, html_fragment: str):
elt = BeautifulSoup(html_fragment, 'html.parser')
@@ -801,8 +789,8 @@ class TestableForm(TestableElement):
# return value
class TestableInput(TestableElement):
def __init__(self, client, source):
class TestableControl(TestableElement):
def __init__(self, client, source, tag):
super().__init__(client, source, "input")
assert len(self.fields) <= 1
self._input_name = next(iter(self.fields))
@@ -815,12 +803,40 @@ class TestableInput(TestableElement):
def value(self):
return self.fields[self._input_name]
def _send_value(self):
if self._input_name and self._support_htmx():
return self._send_htmx_request(data={self._input_name: self.value})
return None
class TestableInput(TestableControl):
def __init__(self, client, source):
super().__init__(client, source, "input")
def send(self, value):
self.fields[self.name] = value
if self.name and self._support_htmx():
return self._send_htmx_request(data={self.name: self.value})
return None
return self._send_value()
class TestableCheckbox(TestableControl):
def __init__(self, client, source):
super().__init__(client, source, "input")
@property
def is_checked(self):
return self.fields[self._input_name] == True
def check(self):
self.fields[self._input_name] = True
return self._send_value()
def uncheck(self):
self.fields[self._input_name] = False
return self._send_value()
def toggle(self):
self.fields[self._input_name] = not self.fields[self._input_name]
return self._send_value()
# def get_value(tag):