Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator

This commit is contained in:
2026-01-31 07:10:17 +00:00
parent fb96220391
commit 7027eb9287

136
tests/test_cli.py Normal file
View File

@@ -0,0 +1,136 @@
import pytest
from unittest.mock import patch, MagicMock
from typer.testing import CliRunner
from confdoc.main import app
runner = CliRunner()
class TestCLIValidate:
def test_validate_valid_config(self):
with runner.isolated_filesystem():
config_content = '{"name": "test", "value": 123}'
schema_content = '''{
"type": "object",
"properties": {
"name": {"type": "string"},
"value": {"type": "integer"}
},
"required": ["name"]
}'''
with open("config.json", "w") as f:
f.write(config_content)
with open("schema.json", "w") as f:
f.write(schema_content)
result = runner.invoke(app, ["validate", "config.json", "--schema", "schema.json"])
assert result.exit_code == 0
assert "valid" in result.output.lower()
def test_validate_file_not_found(self):
result = runner.invoke(app, ["validate", "nonexistent.json"])
assert result.exit_code == 1
assert "Error" in result.output
def test_validate_invalid_config(self):
with runner.isolated_filesystem():
config_content = '{"name": 123}'
schema_content = '''{
"type": "object",
"properties": {
"name": {"type": "string"}
},
"required": ["name"]
}'''
with open("config.json", "w") as f:
f.write(config_content)
with open("schema.json", "w") as f:
f.write(schema_content)
result = runner.invoke(app, ["validate", "config.json", "--schema", "schema.json"])
assert result.exit_code == 1
assert "validation failed" in result.output.lower() or "error" in result.output.lower()
class TestCLIDoc:
def test_doc_generates_output(self):
with runner.isolated_filesystem():
schema_content = '''{
"title": "Test Schema",
"type": "object",
"properties": {"name": {"type": "string"}}
}'''
with open("schema.json", "w") as f:
f.write(schema_content)
result = runner.invoke(app, ["doc", "schema.json"])
assert result.exit_code == 0
assert "Test Schema" in result.output or "Configuration Documentation" in result.output
def test_doc_writes_to_file(self):
with runner.isolated_filesystem():
schema_content = '{"title": "Test", "type": "object", "properties": {}}'
with open("schema.json", "w") as f:
f.write(schema_content)
result = runner.invoke(app, ["doc", "schema.json", "--output", "docs.md"])
assert result.exit_code == 0
import os
assert os.path.exists("docs.md")
with open("docs.md") as f:
content = f.read()
assert "Test" in content or "Configuration" in content
class TestCLIInit:
def test_init_creates_schema(self):
with runner.isolated_filesystem():
result = runner.invoke(app, ["init", "new_schema.json"])
assert result.exit_code == 0
import os
assert os.path.exists("new_schema.json")
import json
with open("new_schema.json") as f:
schema = json.load(f)
assert "properties" in schema
def test_init_from_config(self):
with runner.isolated_filesystem():
config_content = '{"name": "test", "value": 123}'
with open("config.json", "w") as f:
f.write(config_content)
result = runner.invoke(app, ["init", "new_schema.json", "--config", "config.json"])
assert result.exit_code == 0
class TestCLIHelp:
def test_main_help(self):
result = runner.invoke(app, ["--help"])
assert result.exit_code == 0
assert "ConfDoc" in result.output
assert "validate" in result.output
assert "doc" in result.output
assert "init" in result.output
def test_validate_help(self):
result = runner.invoke(app, ["validate", "--help"])
assert result.exit_code == 0
assert "config" in result.output
assert "schema" in result.output
def test_doc_help(self):
result = runner.invoke(app, ["doc", "--help"])
assert result.exit_code == 0
assert "schema" in result.output
assert "output" in result.output