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