diff --git a/tests/test_formatters.py b/tests/test_formatters.py new file mode 100644 index 0000000..b365f1b --- /dev/null +++ b/tests/test_formatters.py @@ -0,0 +1,80 @@ +"""Tests for the formatter module.""" + +import json +import pytest + +from configconverter.formatters import Formatter +from configconverter.exceptions import IndentationError + + +class TestFormatter: + """Tests for the Formatter class.""" + + @pytest.fixture + def formatter(self): + return Formatter() + + def test_format_json_with_indent_2(self, formatter): + content = '{"name":"test","value":123}' + result = formatter.format(content, indent=2, format="json") + assert "\n " in result + + def test_format_json_with_indent_4(self, formatter): + content = '{"name":"test","value":123}' + result = formatter.format(content, indent=4, format="json") + assert "\n " in result + + def test_format_json_compact(self, formatter): + content = '{"name":"test","value":123}' + result = formatter.format(content, indent=2, compact=True, format="json") + assert result.strip() == '{"name":"test","value":123}' + + def test_format_invalid_indent(self, formatter): + content = '{"name":"test"}' + with pytest.raises(IndentationError): + formatter.format(content, indent=3, format="json") + + def test_format_json_to_yaml(self, formatter): + content = '{"name": "test", "value": 123}' + result = formatter.format(content, format="yaml") + assert "name: test" in result + + def test_format_yaml_to_json(self, formatter): + content = 'name: test\nvalue: 123\n' + result = formatter.format(content, format="json") + data = json.loads(result) + assert data["name"] == "test" + assert data["value"] == 123 + + def test_format_toml_to_json(self, formatter): + content = 'name = "test"\nvalue = 123\n' + result = formatter.format(content, format="json") + data = json.loads(result) + assert data["name"] == "test" + assert data["value"] == 123 + + def test_to_json_method(self, formatter): + content = 'name: test\n' + result = formatter.to_json(content, indent=4) + data = json.loads(result) + assert data["name"] == "test" + + def test_to_yaml_method(self, formatter): + content = '{"name": "test"}' + result = formatter.to_yaml(content) + assert "name: test" in result + + def test_to_toml_method(self, formatter): + content = '{"name": "test"}' + result = formatter.to_toml(content) + assert 'name = "test"' in result + + def test_nested_structure_formatting(self, formatter): + content = '{"a":{"b":{"c":"d"}}}' + result = formatter.format(content, indent=2, format="json") + assert '"c": "d"' in result + + def test_array_formatting(self, formatter): + content = '[1,2,3,4,5]' + result = formatter.format(content, indent=2, format="json") + assert "[\n 1," in result