"""Tests for TOML converter.""" import pytest import tempfile import os import sys from config_convert.converters import TOMLConverter class TestTOMLConverter: @pytest.fixture def converter(self): return TOMLConverter() def test_loads_valid_toml(self, converter): data = 'name = "test"\nvalue = 123' result = converter.loads(data) assert result == {"name": "test", "value": 123} def test_loads_nested_toml(self, converter): data = """[database] host = "localhost" port = 5432 """ result = converter.loads(data) assert result == {"database": {"host": "localhost", "port": 5432}} def test_loads_array_toml(self, converter): data = 'tags = ["a", "b", "c"]' result = converter.loads(data) assert result == {"tags": ["a", "b", "c"]} def test_loads_boolean_toml(self, converter): data = 'enabled = true\ndisabled = false' result = converter.loads(data) assert result == {"enabled": True, "disabled": False} 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"}} result = converter.dumps(data) assert "[database]" in result def test_roundtrip(self, converter): original = {"name": "test", "version": "1.0.0", "enabled": True} dumped = converter.dumps(original) loaded = converter.loads(dumped) assert loaded == original def test_load_file(self, converter, temp_file, sample_toml): gen = temp_file(sample_toml, suffix=".toml") 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_toml): path = tempfile.mktemp(suffix=".toml") try: if sys.version_info >= (3, 11): import tomllib else: import tomli as tomllib data = tomllib.loads(sample_toml) converter.dump(data, path) result = converter.load(path) assert result == data finally: if os.path.exists(path): os.unlink(path) def test_invalid_toml_raises(self, converter): with pytest.raises(Exception): converter.loads('invalid = "toml" extra')