Files
confdoc/tests/test_cli.py
7000pctAUTO 3791b4a10f
All checks were successful
CI / test (push) Successful in 9m30s
CI / lint (push) Successful in 9m25s
CI / build (push) Successful in 14s
fix: resolve CI/CD workflow issues
2026-01-31 07:35:54 +00:00

137 lines
4.7 KiB
Python

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