Add test suite for confgen
This commit is contained in:
98
app/tests/conftest.py
Normal file
98
app/tests/conftest.py
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
"""Pytest configuration and fixtures for confgen tests."""
|
||||||
|
|
||||||
|
import tempfile
|
||||||
|
from pathlib import Path
|
||||||
|
from typing import Generator
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def temp_project_dir() -> Generator[Path, None, None]:
|
||||||
|
"""Create a temporary directory for testing."""
|
||||||
|
with tempfile.TemporaryDirectory() as tmp_dir:
|
||||||
|
yield Path(tmp_dir)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_template(temp_project_dir: Path) -> Path:
|
||||||
|
"""Create a sample template file."""
|
||||||
|
template_content = """
|
||||||
|
app_name: {{APP_NAME}}
|
||||||
|
version: {{VERSION}}
|
||||||
|
database:
|
||||||
|
host: {{DB_HOST}}
|
||||||
|
port: {{DB_PORT}}
|
||||||
|
"""
|
||||||
|
template_path = temp_project_dir / "template.yaml.j2"
|
||||||
|
template_path.write_text(template_content)
|
||||||
|
return template_path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_config(temp_project_dir: Path) -> Path:
|
||||||
|
"""Create a sample configuration file."""
|
||||||
|
config_content = """
|
||||||
|
app_name: myapp
|
||||||
|
version: 1.0.0
|
||||||
|
database:
|
||||||
|
host: localhost
|
||||||
|
port: 5432
|
||||||
|
"""
|
||||||
|
config_path = temp_project_dir / "config.yaml"
|
||||||
|
config_path.write_text(config_content)
|
||||||
|
return config_path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def sample_schema(temp_project_dir: Path) -> Path:
|
||||||
|
"""Create a sample JSON schema."""
|
||||||
|
import json
|
||||||
|
|
||||||
|
schema_content = {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"app_name": {"type": "string"},
|
||||||
|
"version": {"type": "string"},
|
||||||
|
"database": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"host": {"type": "string"},
|
||||||
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
||||||
|
},
|
||||||
|
"required": ["host", "port"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"required": ["app_name", "database"],
|
||||||
|
}
|
||||||
|
schema_path = temp_project_dir / "schema.json"
|
||||||
|
schema_path.write_text(json.dumps(schema_content))
|
||||||
|
return schema_path
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def confgen_config(temp_project_dir: Path) -> Path:
|
||||||
|
"""Create a sample confgen.yaml configuration."""
|
||||||
|
config_content = """
|
||||||
|
templates:
|
||||||
|
sample:
|
||||||
|
path: template.yaml.j2
|
||||||
|
format: yaml
|
||||||
|
|
||||||
|
environments:
|
||||||
|
dev:
|
||||||
|
variables:
|
||||||
|
APP_NAME: myapp-dev
|
||||||
|
VERSION: 1.0.0-dev
|
||||||
|
DB_HOST: localhost
|
||||||
|
DB_PORT: 5432
|
||||||
|
prod:
|
||||||
|
variables:
|
||||||
|
APP_NAME: myapp
|
||||||
|
VERSION: 1.0.0
|
||||||
|
DB_HOST: db.example.com
|
||||||
|
DB_PORT: 5432
|
||||||
|
"""
|
||||||
|
config_path = temp_project_dir / "confgen.yaml"
|
||||||
|
config_path.write_text(config_content)
|
||||||
|
return config_path
|
||||||
Reference in New Issue
Block a user