Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator
This commit is contained in:
109
tests/test_docs.py
Normal file
109
tests/test_docs.py
Normal file
@@ -0,0 +1,109 @@
|
||||
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
|
||||
Reference in New Issue
Block a user