reflex/tests/compiler/test_compiler.py
2023-05-09 23:01:25 -07:00

128 lines
3.8 KiB
Python

from typing import List, Set
import pytest
from pynecone.compiler import utils
from pynecone.utils import imports
from pynecone.vars import ImportVar
@pytest.mark.parametrize(
"fields,test_default,test_rest",
[
(
{ImportVar(tag="axios", is_default=True)},
"axios",
set(),
),
(
{ImportVar(tag="foo"), ImportVar(tag="bar")},
"",
{"foo", "bar"},
),
(
{
ImportVar(tag="axios", is_default=True),
ImportVar(tag="foo"),
ImportVar(tag="bar"),
},
"axios",
{"foo", "bar"},
),
],
)
def test_compile_import_statement(
fields: Set[ImportVar], test_default: str, test_rest: str
):
"""Test the compile_import_statement function.
Args:
fields: The fields to import.
test_default: The expected output of default library.
test_rest: The expected output rest libraries.
"""
default, rest = utils.compile_import_statement(fields)
assert default == test_default
assert rest == test_rest
@pytest.mark.parametrize(
"import_dict,test_dicts",
[
({}, []),
(
{"axios": {ImportVar(tag="axios", is_default=True)}},
[{"lib": "axios", "default": "axios", "rest": set()}],
),
(
{"axios": {ImportVar(tag="foo"), ImportVar(tag="bar")}},
[{"lib": "axios", "default": "", "rest": {"foo", "bar"}}],
),
(
{
"axios": {
ImportVar(tag="axios", is_default=True),
ImportVar(tag="foo"),
ImportVar(tag="bar"),
},
"react": {ImportVar(tag="react", is_default=True)},
},
[
{"lib": "axios", "default": "axios", "rest": {"foo", "bar"}},
{"lib": "react", "default": "react", "rest": set()},
],
),
(
{"": {ImportVar(tag="lib1.js"), ImportVar(tag="lib2.js")}},
[
{"lib": "lib1.js", "default": "", "rest": set()},
{"lib": "lib2.js", "default": "", "rest": set()},
],
),
(
{
"": {ImportVar(tag="lib1.js"), ImportVar(tag="lib2.js")},
"axios": {ImportVar(tag="axios", is_default=True)},
},
[
{"lib": "lib1.js", "default": "", "rest": set()},
{"lib": "lib2.js", "default": "", "rest": set()},
{"lib": "axios", "default": "axios", "rest": set()},
],
),
],
)
def test_compile_imports(import_dict: imports.ImportDict, test_dicts: List[dict]):
"""Test the compile_imports function.
Args:
import_dict: The import dictionary.
test_dicts: The expected output.
"""
imports = utils.compile_imports(import_dict)
for import_dict, test_dict in zip(imports, test_dicts):
assert import_dict["lib"] == test_dict["lib"]
assert import_dict["default"] == test_dict["default"]
assert import_dict["rest"] == test_dict["rest"]
# @pytest.mark.parametrize(
# "name,value,output",
# [
# ("foo", "bar", 'const foo = "bar"'),
# ("num", 1, "const num = 1"),
# ("check", False, "const check = false"),
# ("arr", [1, 2, 3], "const arr = [1, 2, 3]"),
# ("obj", {"foo": "bar"}, 'const obj = {"foo": "bar"}'),
# ],
# )
# def test_compile_constant_declaration(name: str, value: str, output: str):
# """Test the compile_constant_declaration function.
# Args:
# name: The name of the constant.
# value: The value of the constant.
# output: The expected output.
# """
# assert utils.compile_constant_declaration(name, value) == output