From d77586178f5c6d5629ad1cf74a99b31e7c260ec2 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Sat, 31 Jan 2026 07:10:16 +0000 Subject: [PATCH] Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator --- tests/test_docs.py | 109 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 tests/test_docs.py diff --git a/tests/test_docs.py b/tests/test_docs.py new file mode 100644 index 0000000..c970e29 --- /dev/null +++ b/tests/test_docs.py @@ -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