128 lines
3.8 KiB
Python
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
|