Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator
This commit is contained in:
134
tests/test_parsers.py
Normal file
134
tests/test_parsers.py
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
import pytest
|
||||||
|
from confdoc.parsers.json_parser import JsonParser
|
||||||
|
from confdoc.parsers.yaml_parser import YamlParser
|
||||||
|
from confdoc.parsers.toml_parser import TomlParser
|
||||||
|
from confdoc.parsers.factory import ConfigParserFactory
|
||||||
|
|
||||||
|
|
||||||
|
class TestJsonParser:
|
||||||
|
def test_parse_valid_json(self):
|
||||||
|
parser = JsonParser()
|
||||||
|
content = '{"name": "test", "value": 123}'
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == {"name": "test", "value": 123}
|
||||||
|
|
||||||
|
def test_parse_nested_json(self):
|
||||||
|
parser = JsonParser()
|
||||||
|
content = '{"app": {"name": "test", "version": "1.0"}}'
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == {"app": {"name": "test", "version": "1.0"}}
|
||||||
|
|
||||||
|
def test_parse_array_json(self):
|
||||||
|
parser = JsonParser()
|
||||||
|
content = '[1, 2, 3, "test"]'
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == [1, 2, 3, "test"]
|
||||||
|
|
||||||
|
def test_dump_json(self):
|
||||||
|
parser = JsonParser()
|
||||||
|
data = {"name": "test", "value": 123}
|
||||||
|
result = parser.dump(data)
|
||||||
|
assert '"name": "test"' in result
|
||||||
|
assert '"value": 123' in result
|
||||||
|
|
||||||
|
def test_get_format(self):
|
||||||
|
parser = JsonParser()
|
||||||
|
assert parser.get_format() == "json"
|
||||||
|
|
||||||
|
|
||||||
|
class TestYamlParser:
|
||||||
|
def test_parse_valid_yaml(self):
|
||||||
|
parser = YamlParser()
|
||||||
|
content = "name: test\nvalue: 123"
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == {"name": "test", "value": 123}
|
||||||
|
|
||||||
|
def test_parse_nested_yaml(self):
|
||||||
|
parser = YamlParser()
|
||||||
|
content = "app:\n name: test\n version: '1.0'"
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == {"app": {"name": "test", "version": "1.0"}}
|
||||||
|
|
||||||
|
def test_parse_list_yaml(self):
|
||||||
|
parser = YamlParser()
|
||||||
|
content = "items:\n - item1\n - item2"
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result == {"items": ["item1", "item2"]}
|
||||||
|
|
||||||
|
def test_get_format(self):
|
||||||
|
parser = YamlParser()
|
||||||
|
assert parser.get_format() == "yaml"
|
||||||
|
|
||||||
|
|
||||||
|
class TestTomlParser:
|
||||||
|
def test_parse_valid_toml(self):
|
||||||
|
parser = TomlParser()
|
||||||
|
content = 'name = "test"\nvalue = 123'
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result["name"] == "test"
|
||||||
|
assert result["value"] == 123
|
||||||
|
|
||||||
|
def test_parse_table_toml(self):
|
||||||
|
parser = TomlParser()
|
||||||
|
content = '[app]\nname = "test"\nversion = "1.0"'
|
||||||
|
result = parser.parse(content)
|
||||||
|
assert result["app"]["name"] == "test"
|
||||||
|
assert result["app"]["version"] == "1.0"
|
||||||
|
|
||||||
|
def test_get_format(self):
|
||||||
|
parser = TomlParser()
|
||||||
|
assert parser.get_format() == "toml"
|
||||||
|
|
||||||
|
|
||||||
|
class TestConfigParserFactory:
|
||||||
|
def test_get_json_parser(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser("json")
|
||||||
|
assert isinstance(parser, JsonParser)
|
||||||
|
|
||||||
|
def test_get_yaml_parser(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser("yaml")
|
||||||
|
assert isinstance(parser, YamlParser)
|
||||||
|
|
||||||
|
def test_get_toml_parser(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser("toml")
|
||||||
|
assert isinstance(parser, TomlParser)
|
||||||
|
|
||||||
|
def test_get_parser_for_json_file(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser_for_file("config.json")
|
||||||
|
assert isinstance(parser, JsonParser)
|
||||||
|
|
||||||
|
def test_get_parser_for_yaml_file(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser_for_file("config.yaml")
|
||||||
|
assert isinstance(parser, YamlParser)
|
||||||
|
|
||||||
|
def test_get_parser_for_yml_file(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser_for_file("config.yml")
|
||||||
|
assert isinstance(parser, YamlParser)
|
||||||
|
|
||||||
|
def test_get_parser_for_toml_file(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
parser = factory.get_parser_for_file("config.toml")
|
||||||
|
assert isinstance(parser, TomlParser)
|
||||||
|
|
||||||
|
def test_invalid_format_raises_error(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
with pytest.raises(ValueError):
|
||||||
|
factory.get_parser("invalid")
|
||||||
|
|
||||||
|
def test_detect_json_format(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
assert factory.detect_format('{"key": "value"}') == "json"
|
||||||
|
|
||||||
|
def test_detect_yaml_format(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
assert factory.detect_format("key: value") == "yaml"
|
||||||
|
|
||||||
|
def test_detect_toml_format(self):
|
||||||
|
factory = ConfigParserFactory()
|
||||||
|
assert factory.detect_format('key = "value"') == "toml"
|
||||||
Reference in New Issue
Block a user