43 lines
1.0 KiB
Python
43 lines
1.0 KiB
Python
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)
|