131 lines
4.3 KiB
Python
131 lines
4.3 KiB
Python
# from utils import column_to_number
|
|
#
|
|
#
|
|
# def test_can_column_to_number():
|
|
# assert column_to_number("A") == 1
|
|
# assert column_to_number("AA") == 27
|
|
# assert column_to_number("ZZZ") == 475254
|
|
import pytest
|
|
from fasthtml.components import Div
|
|
|
|
from core.utils import make_html_id, update_elements, snake_case_to_capitalized_words, merge_classes
|
|
|
|
|
|
@pytest.mark.parametrize("string, expected", [
|
|
("My Example String!", "My-Example-String_"),
|
|
("123 Bad ID", "id_123-Bad-ID"),
|
|
(None, None)
|
|
])
|
|
def test_i_can_have_valid_html_id(string, expected):
|
|
assert make_html_id(string) == expected
|
|
|
|
|
|
def test_i_can_update_elements_when_null():
|
|
assert update_elements(None, []) is None
|
|
|
|
|
|
def test_i_can_update_elements_when_wrong_id():
|
|
div = Div(id="wrong", value="original value")
|
|
updates = [{"id": "correct_id", "value": "new value", "method": "value"}]
|
|
|
|
res = update_elements(div, updates)
|
|
assert res.id == "wrong"
|
|
assert res.value == "original value"
|
|
|
|
|
|
def test_i_can_update_elements_when_correct_id():
|
|
div = Div(id="correct_id", value="original value")
|
|
updates = [{"id": "correct_id", "value": "new value", "method": "value"}]
|
|
|
|
res = update_elements(div, updates)
|
|
assert res.id == "correct_id"
|
|
assert res.value == "new value"
|
|
|
|
|
|
def test_i_can_update_elements_when_list_of_elements():
|
|
div1 = Div(id="correct_id", value="original value")
|
|
div2 = Div(id="correct_id", value="original value")
|
|
updates = [{"id": "correct_id", "value": "new value", "method": "value"}]
|
|
|
|
res = update_elements([div1, div2], updates)
|
|
assert res[0].id == "correct_id"
|
|
assert res[0].value == "new value"
|
|
assert res[1].id == "correct_id"
|
|
assert res[1].value == "new value"
|
|
|
|
|
|
def test_i_can_update_elements_list_of_elements_with_different_updates():
|
|
div1 = Div(id="id1", value="original value")
|
|
div2 = Div(id="id2", value="original value")
|
|
updates = [{"id": "id1", "value": "value1", "method": "value"},
|
|
{"id": "id2", "value": "value2", "method": "value"}, ]
|
|
|
|
res = update_elements([div1, div2], updates)
|
|
assert res[0].id == "id1"
|
|
assert res[0].value == "value1"
|
|
assert res[1].id == "id2"
|
|
assert res[1].value == "value2"
|
|
|
|
|
|
def test_i_can_update_elements_when_children():
|
|
child1 = Div(id="id2", value="original value")
|
|
child2 = Div(id="wrong id", value="original value")
|
|
child3 = Div(id="id3", value="original value")
|
|
div1 = Div(child1, child2, child3, id="id1", value="original value")
|
|
|
|
updates = [{"id": "id1", "value": "value1", "method": "value"},
|
|
{"id": "id2", "value": "value2", "method": "value"},
|
|
{"id": "id3", "value": "value3", "method": "value"}, ]
|
|
|
|
res = update_elements(div1, updates)
|
|
assert res.id == "id1"
|
|
assert res.value == "value1"
|
|
assert res.children[0].id == "id2"
|
|
assert res.children[0].value == "value2"
|
|
assert res.children[1].id == "wrong id"
|
|
assert res.children[1].value == "original value"
|
|
assert res.children[2].id == "id3"
|
|
assert res.children[2].value == "value3"
|
|
|
|
|
|
@pytest.mark.parametrize("snake_case, expected", [
|
|
("column", "Column"),
|
|
("column_name", "Column Name"),
|
|
("this_is_a_column_name", "This Is A Column Name"),
|
|
("Column_Name", "Column Name"),
|
|
("column__name", "Column Name"),
|
|
("This Is A Column Name", "This is a column name"),
|
|
])
|
|
def test_can_snake_case_to_capitalized_words(snake_case, expected):
|
|
assert snake_case_to_capitalized_words(snake_case) == expected
|
|
|
|
|
|
def test_i_can_merge_cls():
|
|
# basic use cases
|
|
assert merge_classes() is None
|
|
assert merge_classes("class1") == "class1"
|
|
assert merge_classes("class1", "class2") == "class1 class2"
|
|
|
|
# using dict
|
|
kwargs = {}
|
|
assert merge_classes("class1", kwargs) == "class1"
|
|
assert kwargs == {}
|
|
|
|
kwargs = {"foo": "bar"}
|
|
assert merge_classes("class1", kwargs) == "class1"
|
|
assert kwargs == {"foo": "bar"}
|
|
|
|
kwargs = {"foo": "bar", "cls": "class2"}
|
|
assert merge_classes("class1", kwargs) == "class1 class2"
|
|
assert kwargs == {"foo": "bar"}
|
|
|
|
kwargs = {"foo": "bar", "class": "class2"}
|
|
assert merge_classes("class1", kwargs) == "class1 class2"
|
|
assert kwargs == {"foo": "bar"}
|
|
|
|
# using tuples
|
|
assert merge_classes("class1", ("class2", "class3")) == "class1 class2 class3"
|
|
|
|
# values are unique
|
|
assert merge_classes("class2", "class1", ("class1", ), {"cls": "class1"}) == "class2 class1"
|