Set classes (#2160)

* Setting classes

* changelog

* docstrings

* test bad identifiers

* Update CHANGELOG.md

Co-authored-by: Dave Pearson <davep@davep.org>

* Add return of self

---------

Co-authored-by: Dave Pearson <davep@davep.org>
This commit is contained in:
Will McGugan
2023-03-28 15:45:40 +01:00
committed by GitHub
parent 85a6f8343e
commit eaca92bd37
5 changed files with 138 additions and 14 deletions

View File

@@ -45,6 +45,39 @@ def test_validate():
node.toggle_class("1")
def test_classes_setter():
node = DOMNode(classes="foo bar")
assert node.classes == frozenset({"foo", "bar"})
node.classes = "baz egg"
assert node.classes == frozenset({"baz", "egg"})
node.classes = ""
assert node.classes == frozenset({})
def test_classes_setter_iterable():
node = DOMNode(classes="foo bar")
assert node.classes == frozenset({"foo", "bar"})
node.classes = "baz", "egg"
assert node.classes == frozenset({"baz", "egg"})
node.classes = []
assert node.classes == frozenset({})
def test_classes_set_classes():
node = DOMNode(classes="foo bar")
assert node.classes == frozenset({"foo", "bar"})
node.set_classes("baz egg")
assert node.classes == frozenset({"baz", "egg"})
node.set_classes([])
assert node.classes == frozenset({})
node.set_classes(["paul"])
assert node.classes == frozenset({"paul"})
with pytest.raises(BadIdentifier):
node.classes = "foo 25"
with pytest.raises(BadIdentifier):
node.classes = ["foo", "25"]
def test_inherited_bindings():
"""Test if binding merging is done correctly when (not) inheriting bindings."""

View File

@@ -152,6 +152,25 @@ def test_query_classes():
# Now, let's check there are *no* children with the test class.
assert len(app.query(".test")) == 0
# Add classes via set_classes
app.query(ClassTest).set_classes("foo bar")
assert (len(app.query(".foo"))) == CHILD_COUNT
assert (len(app.query(".bar"))) == CHILD_COUNT
# Reset classes
app.query(ClassTest).set_classes("")
assert (len(app.query(".foo"))) == 0
assert (len(app.query(".bar"))) == 0
# Repeat, to check setting empty iterable
app.query(ClassTest).set_classes("foo bar")
assert (len(app.query(".foo"))) == CHILD_COUNT
assert (len(app.query(".bar"))) == CHILD_COUNT
app.query(ClassTest).set_classes([])
assert (len(app.query(".foo"))) == 0
assert (len(app.query(".bar"))) == 0
# Add the test class to everything and then check again.
app.query(ClassTest).add_class("test")
assert len(app.query(".test")) == CHILD_COUNT