Files
config-convert-cli/tests/test_converters/test_yaml.py
7000pctAUTO 1085fbe3ee
Some checks failed
CI / lint (push) Has been cancelled
CI / test (push) Has been cancelled
fix: resolve CI/CD test failures and linting issues
2026-02-04 07:32:23 +00:00

81 lines
2.4 KiB
Python

"""Tests for YAML converter."""
import pytest
import tempfile
import os
import yaml
from config_convert.converters import YAMLConverter
class TestYAMLConverter:
@pytest.fixture
def converter(self):
return YAMLConverter()
def test_loads_valid_yaml(self, converter):
data = "name: test\nvalue: 123"
result = converter.loads(data)
assert result == {"name": "test", "value": 123}
def test_loads_nested_yaml(self, converter):
data = """database:
host: localhost
port: 5432
"""
result = converter.loads(data)
assert result == {"database": {"host": "localhost", "port": 5432}}
def test_loads_array_yaml(self, converter):
data = "tags:\n - a\n - b\n - c"
result = converter.loads(data)
assert result == {"tags": ["a", "b", "c"]}
def test_loads_multiline_string(self, converter):
data = """description: |
This is a
multiline string
"""
result = converter.loads(data)
assert result["description"] == "This is a\nmultiline string\n"
def test_dumps_basic_dict(self, converter):
data = {"name": "test", "value": 123}
result = converter.dumps(data)
assert "name: test" in result
def test_dumps_nested_dict(self, converter):
data = {"database": {"host": "localhost", "port": 5432}}
result = converter.dumps(data)
assert "host: localhost" in result
def test_roundtrip(self, converter):
original = {"name": "test", "version": "1.0.0", "enabled": True, "count": 42}
dumped = converter.dumps(original)
loaded = converter.loads(dumped)
assert loaded == original
def test_load_file(self, converter, temp_file, sample_yaml):
gen = temp_file(sample_yaml, suffix=".yaml")
path = next(gen)
try:
result = converter.load(path)
assert result["name"] == "test-project"
finally:
os.unlink(path)
def test_dump_file(self, converter, temp_dir, sample_yaml):
path = tempfile.mktemp(suffix=".yaml")
try:
data = yaml.safe_load(sample_yaml)
converter.dump(data, path)
result = converter.load(path)
assert result == data
finally:
if os.path.exists(path):
os.unlink(path)
def test_invalid_yaml_raises(self, converter):
with pytest.raises(Exception):
converter.loads("[invalid yaml")