3
0
Fork 0

feat: add CopyableTextWidget and <wutta-copyable-text> component

This commit is contained in:
Lance Edgar 2025-12-23 22:57:16 -06:00
parent 49c001c9ad
commit 70950ae9b8
3 changed files with 117 additions and 0 deletions

View file

@ -95,6 +95,38 @@ class TestObjectRefWidget(WebTestCase):
self.assertNotIn("url", values)
class TestCopyableTextWidget(WebTestCase):
def make_field(self, node, **kwargs):
# TODO: not sure why default renderer is in use even though
# pyramid_deform was included in setup? but this works..
kwargs.setdefault("renderer", deform.Form.default_renderer)
return deform.Field(node, **kwargs)
def make_widget(self, **kwargs):
return mod.CopyableTextWidget(**kwargs)
def test_serialize(self):
node = colander.SchemaNode(colander.String())
field = self.make_field(node)
widget = self.make_widget()
self.assertIs(widget.serialize(field, colander.null), colander.null)
self.assertIs(widget.serialize(field, None), colander.null)
self.assertIs(widget.serialize(field, ""), colander.null)
result = widget.serialize(field, "hello world")
self.assertEqual(
result, '<wutta-copyable-text text="hello world"></wutta-copyable-text>'
)
def test_deserialize(self):
node = colander.SchemaNode(colander.String())
field = self.make_field(node)
widget = self.make_widget()
self.assertRaises(NotImplementedError, widget.deserialize, field, "hello world")
class TestWuttaDateWidget(WebTestCase):
def make_field(self, node, **kwargs):