
* Add comments to html metadata component (#3731) * fix: add verification for path /404 (#3723) Co-authored-by: coolstorm <manas.gupta@fampay.in> * Use the new state name when setting `is_hydrated` to false (#3738) * Use `._is_mutable()` to account for parent state proxy (#3739) When a parent state proxy is set, also allow child StateProxy._self_mutable to override the parent's `_is_mutable()`. * bump to 0.5.9 (#3746) * add message when installing requirements.txt is needed for chosen template during init (#3750) * #3752 bugfix add domain for XAxis (#3764) * fix appharness app_source typing (#3777) * fix import clash between connectionToaster and hooks.useState (#3749) * use different registry when in china, fixes #3700 (#3702) * do not reload compilation if using local app in AppHarness (#3790) * do not reload if using local app * Update reflex/testing.py Co-authored-by: Masen Furer <m_github@0x26.net> --------- Co-authored-by: Masen Furer <m_github@0x26.net> * Bump memory on relevant actions (#3781) Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local> * [REF-3334] Validate Toast Props (#3793) * [REF-3536][REF-3537][REF-3541] Move chakra components into its repo(reflex-chakra) (#3798) * fix get_uuid_string_var (#3795) * minor State cleanup (#3768) * Fix code wrap in markdown (#3755) --------- Co-authored-by: Alek Petuskey <alek@pynecone.io> Co-authored-by: Manas Gupta <53006261+Manas1820@users.noreply.github.com> Co-authored-by: coolstorm <manas.gupta@fampay.in> Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com> Co-authored-by: Shubhankar Dimri <dimrishubhi@gmail.com> Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com> Co-authored-by: Khaleel Al-Adhami <khaleel.aladhami@gmail.com> Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local> Co-authored-by: Elijah Ahianyo <elijahahianyo@gmail.com>
178 lines
4.6 KiB
Python
178 lines
4.6 KiB
Python
import sys
|
|
from typing import List, Tuple
|
|
|
|
import pytest
|
|
from reflex_chakra.components.datadisplay.table import Tbody, Tfoot, Thead
|
|
|
|
from reflex.state import BaseState
|
|
|
|
PYTHON_GT_V38 = sys.version_info.major >= 3 and sys.version_info.minor > 8
|
|
|
|
|
|
class TableState(BaseState):
|
|
"""Test State class."""
|
|
|
|
rows_List_List_str: List[List[str]] = [["random", "row"]]
|
|
rows_List_List: List[List] = [["random", "row"]]
|
|
rows_List_str: List[str] = ["random", "row"]
|
|
rows_Tuple_List_str: Tuple[List[str]] = (["random", "row"],)
|
|
rows_Tuple_List: Tuple[List] = ["random", "row"] # type: ignore
|
|
rows_Tuple_str_str: Tuple[str, str] = (
|
|
"random",
|
|
"row",
|
|
)
|
|
rows_Tuple_Tuple_str_str: Tuple[Tuple[str, str]] = (
|
|
(
|
|
"random",
|
|
"row",
|
|
),
|
|
)
|
|
rows_Tuple_Tuple: Tuple[Tuple] = (
|
|
(
|
|
"random",
|
|
"row",
|
|
),
|
|
)
|
|
rows_str: str = "random, row"
|
|
headers_List_str: List[str] = ["header1", "header2"]
|
|
headers_Tuple_str_str: Tuple[str, str] = (
|
|
"header1",
|
|
"header2",
|
|
)
|
|
headers_str: str = "headers1, headers2"
|
|
footers_List_str: List[str] = ["footer1", "footer2"]
|
|
footers_Tuple_str_str: Tuple[str, str] = (
|
|
"footer1",
|
|
"footer2",
|
|
)
|
|
footers_str: str = "footer1, footer2"
|
|
|
|
if sys.version_info.major >= 3 and sys.version_info.minor > 8:
|
|
rows_list_list_str: list[list[str]] = [["random", "row"]]
|
|
rows_list_list: list[list] = [["random", "row"]]
|
|
rows_list_str: list[str] = ["random", "row"]
|
|
rows_tuple_list_str: tuple[list[str]] = (["random", "row"],)
|
|
rows_tuple_list: tuple[list] = ["random", "row"] # type: ignore
|
|
rows_tuple_str_str: tuple[str, str] = (
|
|
"random",
|
|
"row",
|
|
)
|
|
rows_tuple_tuple_str_str: tuple[tuple[str, str]] = (
|
|
(
|
|
"random",
|
|
"row",
|
|
),
|
|
)
|
|
rows_tuple_tuple: tuple[tuple] = (
|
|
(
|
|
"random",
|
|
"row",
|
|
),
|
|
)
|
|
|
|
|
|
valid_extras = (
|
|
[
|
|
TableState.rows_list_list_str,
|
|
TableState.rows_list_list,
|
|
TableState.rows_tuple_list_str,
|
|
TableState.rows_tuple_list,
|
|
TableState.rows_tuple_tuple_str_str,
|
|
TableState.rows_tuple_tuple,
|
|
]
|
|
if PYTHON_GT_V38
|
|
else []
|
|
)
|
|
invalid_extras = (
|
|
[TableState.rows_list_str, TableState.rows_tuple_str_str] if PYTHON_GT_V38 else []
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"rows",
|
|
[
|
|
[["random", "row"]],
|
|
TableState.rows_List_List_str,
|
|
TableState.rows_List_List,
|
|
TableState.rows_Tuple_List_str,
|
|
TableState.rows_Tuple_List,
|
|
TableState.rows_Tuple_Tuple_str_str,
|
|
TableState.rows_Tuple_Tuple,
|
|
*valid_extras,
|
|
],
|
|
)
|
|
def test_create_table_body_with_valid_rows_prop(rows):
|
|
render_dict = Tbody.create(rows=rows).render()
|
|
assert render_dict["name"] == "Tbody"
|
|
assert len(render_dict["children"]) == 1
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"rows",
|
|
[
|
|
["random", "row"],
|
|
"random, rows",
|
|
TableState.rows_List_str,
|
|
TableState.rows_Tuple_str_str,
|
|
TableState.rows_str,
|
|
*invalid_extras,
|
|
],
|
|
)
|
|
def test_create_table_body_with_invalid_rows_prop(rows):
|
|
with pytest.raises(TypeError):
|
|
Tbody.create(rows=rows)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"headers",
|
|
[
|
|
["random", "header"],
|
|
TableState.headers_List_str,
|
|
TableState.headers_Tuple_str_str,
|
|
],
|
|
)
|
|
def test_create_table_head_with_valid_headers_prop(headers):
|
|
render_dict = Thead.create(headers=headers).render()
|
|
assert render_dict["name"] == "Thead"
|
|
assert len(render_dict["children"]) == 1
|
|
assert render_dict["children"][0]["name"] == "Tr"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"headers",
|
|
[
|
|
"random, header",
|
|
TableState.headers_str,
|
|
],
|
|
)
|
|
def test_create_table_head_with_invalid_headers_prop(headers):
|
|
with pytest.raises(TypeError):
|
|
Thead.create(headers=headers)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"footers",
|
|
[
|
|
["random", "footers"],
|
|
TableState.footers_List_str,
|
|
TableState.footers_Tuple_str_str,
|
|
],
|
|
)
|
|
def test_create_table_footer_with_valid_footers_prop(footers):
|
|
render_dict = Tfoot.create(footers=footers).render()
|
|
assert render_dict["name"] == "Tfoot"
|
|
assert len(render_dict["children"]) == 1
|
|
assert render_dict["children"][0]["name"] == "Tr"
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"footers",
|
|
[
|
|
"random, footers",
|
|
TableState.footers_str,
|
|
],
|
|
)
|
|
def test_create_table_footer_with_invalid_footers_prop(footers):
|
|
with pytest.raises(TypeError):
|
|
Tfoot.create(footers=footers)
|