Files
config-converter-cli/tests/test_typescript.py
7000pctAUTO cefe8b2ab7
Some checks failed
CI / test (push) Failing after 12s
fix: resolve CI linting and type checking issues
2026-02-04 22:08:00 +00:00

83 lines
3.4 KiB
Python

"""Tests for TypeScript generator."""
from config_converter.generators import TypeScriptGenerator
from config_converter.validators.schema import SchemaType
class TestTypeScriptGenerator:
"""Tests for TypeScript interface generation."""
def test_generate_simple_interface(self) -> None:
"""Test generating simple interface."""
generator = TypeScriptGenerator(interface_name="TestConfig")
data = {"name": "test", "value": 42}
result = generator.generate(data)
assert "export interface TestConfig" in result
assert "name: string" in result
assert "value: number" in result
def test_generate_with_boolean(self) -> None:
"""Test generating interface with boolean property."""
generator = TypeScriptGenerator()
data = {"active": True, "disabled": False}
result = generator.generate(data)
assert "active: boolean" in result
assert "disabled: boolean" in result
def test_generate_with_nested_object(self) -> None:
"""Test generating interface with nested object."""
generator = TypeScriptGenerator()
data = {"config": {"setting": "value"}}
result = generator.generate(data)
assert "export interface Config" in result
assert "setting: string" in result
def test_generate_with_array(self) -> None:
"""Test generating interface with array."""
generator = TypeScriptGenerator()
data = {"items": [1, 2, 3]}
result = generator.generate(data)
assert "items: Array<number>" in result
def test_generate_with_array_of_objects(self) -> None:
"""Test generating interface with array of objects."""
generator = TypeScriptGenerator()
data = {"users": [{"name": "Alice"}, {"name": "Bob"}]}
result = generator.generate(data)
assert "users: UsersItem[]" in result or "Array<" in result
def test_generate_from_schema(self) -> None:
"""Test generating from inferred schema."""
from config_converter.validators import SchemaInferrer
generator = TypeScriptGenerator()
data = {"name": "test", "count": 5}
inferrer = SchemaInferrer()
schema = inferrer.infer(data)
result = generator.generate_from_schema(schema, "GeneratedConfig")
assert "export interface GeneratedConfig" in result
def test_python_to_ts_mapping(self) -> None:
"""Test Python to TypeScript type mapping."""
generator = TypeScriptGenerator()
mapping = generator.PYTHON_TO_TS
assert mapping[SchemaType.STRING] == "string"
assert mapping[SchemaType.NUMBER] == "number"
assert mapping[SchemaType.INTEGER] == "number"
assert mapping[SchemaType.BOOLEAN] == "boolean"
assert mapping[SchemaType.NULL] == "null"
def test_generate_custom_interface_name(self) -> None:
"""Test generating with custom interface name."""
generator = TypeScriptGenerator(interface_name="CustomName")
result = generator.generate({"key": "value"})
assert "export interface CustomName" in result
def test_generate_from_json_string(self) -> None:
"""Test generating TypeScript from JSON string."""
generator = TypeScriptGenerator()
json_str = '{"name": "test", "value": 42}'
result = generator.generate_from_json(json_str)
assert "export interface Config" in result
assert "name: string" in result