import pytest from fasthtml.components import Div, Span from myfasthtml.test.matcher import find @pytest.mark.parametrize('ft, expected', [ ("hello", "hello"), (Div(id="id1"), Div(id="id1")), (Div(Span(id="span_id"), id="div_id1"), Div(Span(id="span_id"), id="div_id1")), (Div(id="id1", id2="id2"), Div(id="id1")), (Div(Div(id="id2"), id2="id1"), Div(id="id1")), ]) def test_i_can_find(ft, expected): assert find(expected, expected) == [expected] def test_find_element_by_id_in_a_list(): a = Div(id="id1") b = Div(id="id2") c = Div(id="id3") assert find([a, b, c], b) == [b] def test_i_can_find_sub_element(): a = Div(id="id1") b = Div(a, id="id2") c = Div(b, id="id3") assert find(c, a) == [a] @pytest.mark.parametrize('ft, expected', [ (None, Div(id="id1")), (Span(id="id1"), Div(id="id1")), (Div(id2="id1"), Div(id="id1")), (Div(id="id2"), Div(id="id1")), ]) def test_i_cannot_find(ft, expected): with pytest.raises(AssertionError): find(expected, ft)