123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- from typing import Dict, List
- import pytest
- from reflex.components.tags import CondTag, Tag, tagless
- from reflex.vars import BaseVar, Var
- @pytest.mark.parametrize(
- "props,test_props",
- [
- ({}, []),
- ({"key-hypen": 1}, ["key-hypen={1}"]),
- ({"key": 1}, ["key={1}"]),
- ({"key": "value"}, ["key={`value`}"]),
- ({"key": True, "key2": "value2"}, ["key={true}", "key2={`value2`}"]),
- ],
- )
- def test_format_props(props: Dict[str, Var], test_props: List):
- """Test that the formatted props are correct.
- Args:
- props: The props to test.
- test_props: The expected props.
- """
- tag_props = Tag(props=props).format_props()
- for i, tag_prop in enumerate(tag_props):
- assert tag_prop == test_props[i]
- @pytest.mark.parametrize(
- "prop,valid",
- [
- (1, True),
- (3.14, True),
- ("string", True),
- (False, True),
- ([], True),
- ({}, False),
- (None, False),
- ],
- )
- def test_is_valid_prop(prop: Var, valid: bool):
- """Test that the prop is valid.
- Args:
- prop: The prop to test.
- valid: The expected validity of the prop.
- """
- assert Tag.is_valid_prop(prop) == valid
- def test_add_props():
- """Test that the props are added."""
- tag = Tag().add_props(key="value", key2=42, invalid=None, invalid2={})
- assert tag.props["key"].equals(Var.create("value"))
- assert tag.props["key2"].equals(Var.create(42))
- assert "invalid" not in tag.props
- assert "invalid2" not in tag.props
- @pytest.mark.parametrize(
- "tag,expected",
- [
- (Tag(), {"name": "", "contents": "", "props": {}}),
- (Tag(name="br"), {"name": "br", "contents": "", "props": {}}),
- (Tag(contents="hello"), {"name": "", "contents": "hello", "props": {}}),
- (
- Tag(name="h1", contents="hello"),
- {"name": "h1", "contents": "hello", "props": {}},
- ),
- (
- Tag(name="box", props={"color": "red", "textAlign": "center"}),
- {
- "name": "box",
- "contents": "",
- "props": {"color": "red", "textAlign": "center"},
- },
- ),
- (
- Tag(
- name="box",
- props={"color": "red", "textAlign": "center"},
- contents="text",
- ),
- {
- "name": "box",
- "contents": "text",
- "props": {"color": "red", "textAlign": "center"},
- },
- ),
- ],
- )
- def test_format_tag(tag: Tag, expected: Dict):
- """Test that the tag dict is correct.
- Args:
- tag: The tag to test.
- expected: The expected tag dictionary.
- """
- tag_dict = dict(tag)
- assert tag_dict["name"] == expected["name"]
- assert tag_dict["contents"] == expected["contents"]
- for prop, prop_value in tag_dict["props"].items():
- assert prop_value.equals(Var.create_safe(expected["props"][prop]))
- def test_format_cond_tag():
- """Test that the cond tag dict is correct."""
- tag = CondTag(
- true_value=dict(Tag(name="h1", contents="True content")),
- false_value=dict(Tag(name="h2", contents="False content")),
- cond=BaseVar(_var_name="logged_in", _var_type=bool),
- )
- tag_dict = dict(tag)
- cond, true_value, false_value = (
- tag_dict["cond"],
- tag_dict["true_value"],
- tag_dict["false_value"],
- )
- assert cond._var_name == "logged_in"
- assert cond._var_type == bool
- assert true_value["name"] == "h1"
- assert true_value["contents"] == "True content"
- assert false_value["name"] == "h2"
- assert false_value["contents"] == "False content"
- def test_tagless_string_representation():
- """Test that the string representation of a tagless is correct."""
- tag = tagless.Tagless(contents="Hello world")
- expected_output = "Hello world"
- assert str(tag) == expected_output
|