import pytest from src.core.models import Schema from src.utils.examples import ExampleGenerator, generate_examples_from_schema class TestExampleGenerator: def test_generate_string(self): schema = Schema(type="string") generator = ExampleGenerator() result = generator.generate(schema) assert result == "string" def test_generate_string_with_format(self): schema = Schema(type="string", format="email") generator = ExampleGenerator() result = generator.generate(schema) assert result == "user@example.com" def test_generate_string_with_date_format(self): schema = Schema(type="string", format="date") generator = ExampleGenerator() result = generator.generate(schema) assert result == "2024-01-01" def test_generate_string_with_datetime_format(self): schema = Schema(type="string", format="date-time") generator = ExampleGenerator() result = generator.generate(schema) assert "T" in result def test_generate_integer(self): schema = Schema(type="integer") generator = ExampleGenerator() result = generator.generate(schema) assert result == 0 assert isinstance(result, int) def test_generate_integer_with_default(self): schema = Schema(type="integer", default=42) generator = ExampleGenerator() result = generator.generate(schema) assert result == 42 def test_generate_number(self): schema = Schema(type="number") generator = ExampleGenerator() result = generator.generate(schema) assert result == 0.0 assert isinstance(result, float) def test_generate_boolean(self): schema = Schema(type="boolean") generator = ExampleGenerator() result = generator.generate(schema) assert result is False assert isinstance(result, bool) def test_generate_boolean_with_example(self): schema = Schema(type="boolean", example=True) generator = ExampleGenerator() result = generator.generate(schema) assert result is True def test_generate_array(self): schema = Schema(type="array", items={"type": "string"}) generator = ExampleGenerator() result = generator.generate(schema) assert isinstance(result, list) assert len(result) == 1 assert result[0] == "string" def test_generate_object(self): schema = Schema( type="object", properties={ "name": Schema(type="string"), "age": Schema(type="integer") }, required=["name"] ) generator = ExampleGenerator() result = generator.generate(schema) assert isinstance(result, dict) assert "name" in result assert "age" in result def test_generate_object_with_enum(self): schema = Schema( type="object", properties={ "status": Schema(type="string", enum=["active", "inactive"]) } ) generator = ExampleGenerator() result = generator.generate(schema) assert isinstance(result, dict) assert result["status"] in ["active", "inactive"] def test_generate_with_example(self): schema = Schema(type="string", example="custom-value") generator = ExampleGenerator() result = generator.generate(schema) assert result == "custom-value" def test_generate_null_schema(self): generator = ExampleGenerator() result = generator.generate(None) assert result is None def test_generate_with_all_of(self): schema = Schema(all_of=[ {"type": "object", "properties": {"name": {"type": "string"}}}, {"type": "object", "properties": {"email": {"type": "string"}}} ]) generator = ExampleGenerator() result = generator.generate(schema) assert isinstance(result, dict) assert "name" in result assert "email" in result def test_generate_with_any_of(self): schema = Schema(any_of=[ {"type": "string"}, {"type": "integer"} ]) generator = ExampleGenerator() result = generator.generate(schema) assert result is not None def test_generate_with_one_of(self): schema = Schema(one_of=[ {"type": "string"}, {"type": "integer"} ]) generator = ExampleGenerator() result = generator.generate(schema) assert result is not None class TestGenerateExamplesFromSchema: def test_generate_from_dict_schema(self): schema = {"type": "string"} result = generate_examples_from_schema(schema) assert result == "string" def test_generate_with_components(self): schemas = {"User": Schema(type="object", properties={"name": Schema(type="string")})} generator = ExampleGenerator(schemas) result = generator.generate({"$ref": "#/components/schemas/User"}) assert isinstance(result, dict) assert "name" in result if __name__ == "__main__": pytest.main([__file__, "-v"])