reflex/tests/utils/test_imports.py
2024-06-12 09:26:45 -07:00

114 lines
2.9 KiB
Python

import pytest
from reflex.utils.imports import (
ImportDict,
ImportVar,
ParsedImportDict,
merge_imports,
parse_imports,
)
@pytest.mark.parametrize(
"import_var, expected_name",
[
(
ImportVar(tag="BaseTag"),
"BaseTag",
),
(
ImportVar(tag="BaseTag", alias="AliasTag"),
"BaseTag as AliasTag",
),
(
ImportVar(tag="BaseTag", is_default=True),
"BaseTag",
),
(
ImportVar(tag="BaseTag", is_default=True, alias="AliasTag"),
"AliasTag",
),
(
ImportVar(tag="BaseTag", is_default=False),
"BaseTag",
),
(
ImportVar(tag="BaseTag", is_default=False, alias="AliasTag"),
"BaseTag as AliasTag",
),
],
)
def test_import_var(import_var, expected_name):
"""Test that the import var name is computed correctly.
Args:
import_var: The import var.
expected_name: The expected name.
"""
assert import_var.name == expected_name
@pytest.mark.parametrize(
"input_1, input_2, output",
[
(
{"react": {"Component"}},
{"react": {"Component"}, "react-dom": {"render"}},
{"react": {"Component"}, "react-dom": {"render"}},
),
(
{"react": {"Component"}, "next/image": {"Image"}},
{"react": {"Component"}, "react-dom": {"render"}},
{"react": {"Component"}, "react-dom": {"render"}, "next/image": {"Image"}},
),
(
{"react": {"Component"}},
{"": {"some/custom.css"}},
{"react": {"Component"}, "": {"some/custom.css"}},
),
],
)
def test_merge_imports(input_1, input_2, output):
"""Test that imports are merged correctly.
Args:
input_1: The first dict to merge.
input_2: The second dict to merge.
output: The expected output dict after merging.
"""
res = merge_imports(input_1, input_2)
assert res.keys() == output.keys()
for key in output:
assert set(res[key]) == set(output[key])
@pytest.mark.parametrize(
"input, output",
[
({}, {}),
(
{"react": "Component"},
{"react": [ImportVar(tag="Component")]},
),
(
{"react": ["Component"]},
{"react": [ImportVar(tag="Component")]},
),
(
{"react": ["Component", ImportVar(tag="useState")]},
{"react": [ImportVar(tag="Component"), ImportVar(tag="useState")]},
),
(
{"react": ["Component"], "foo": "anotherFunction"},
{
"react": [ImportVar(tag="Component")],
"foo": [ImportVar(tag="anotherFunction")],
},
),
],
)
def test_parse_imports(input: ImportDict, output: ParsedImportDict):
assert parse_imports(input) == output