Files
confdoc/tests/test_docs.py

110 lines
3.8 KiB
Python

import pytest
from confdoc.docs.generator import DocGenerator
class TestDocGenerator:
def test_generate_simple_schema(self):
generator = DocGenerator()
schema = {
"title": "Test Config",
"description": "A test configuration schema",
"type": "object",
"properties": {
"name": {"type": "string", "description": "The name"},
"value": {"type": "integer", "description": "The value"}
},
"required": ["name"]
}
result = generator.generate(schema, "Test Documentation")
assert "# Test Documentation" in result
assert "Test Config" in result
assert "A test configuration schema" in result
def test_generate_with_properties_table(self):
generator = DocGenerator()
schema = {
"type": "object",
"properties": {
"name": {"type": "string", "description": "The name"},
"enabled": {"type": "boolean", "description": "Enable feature", "default": True}
},
"required": ["name"]
}
result = generator.generate(schema)
assert "Configuration Options" in result
assert "`name`" in result
assert "`enabled`" in result
assert "Yes" in result
assert "No" in result
def test_format_type(self):
generator = DocGenerator()
assert generator._format_type("string") == "string"
assert generator._format_type("integer") == "integer"
assert generator._format_type("boolean") == "boolean"
assert generator._format_type(["string", "integer"]) == "string, integer"
def test_format_default(self):
generator = DocGenerator()
assert generator._format_default(None) == "-"
assert generator._format_default(True) == "true"
assert generator._format_default("test") == "`test`"
assert generator._format_default(123) == "123"
def test_generate_with_definitions(self):
generator = DocGenerator()
schema = {
"definitions": {
"Address": {
"type": "object",
"description": "A mailing address",
"properties": {
"street": {"type": "string"},
"city": {"type": "string"}
}
}
},
"type": "object",
"properties": {
"address": {"$ref": "#/definitions/Address"}
}
}
result = generator.generate(schema)
assert "Definitions" in result
assert "Address" in result
def test_generate_with_enum(self):
generator = DocGenerator()
schema = {
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The status",
"enum": ["active", "inactive"]
}
}
}
result = generator.generate(schema)
assert "Allowed values" in result
assert "active" in result
assert "inactive" in result
def test_generate_empty_schema(self):
generator = DocGenerator()
schema = {"type": "object"}
result = generator.generate(schema)
assert "# Configuration Documentation" in result
def test_generate_table_section(self):
generator = DocGenerator()
items = [
{"name": "item1", "type": "string"},
{"name": "item2", "type": "integer"}
]
columns = ["Name", "Type"]
result = generator.generate_table_section("Test Items", items, columns)
assert "## Test Items" in result
assert "item1" in result
assert "item2" in result