Initial upload: ConfDoc v0.1.0 - Config validation and documentation generator
This commit is contained in:
124
tests/test_profiles.py
Normal file
124
tests/test_profiles.py
Normal file
@@ -0,0 +1,124 @@
|
||||
import pytest
|
||||
from unittest.mock import patch, MagicMock
|
||||
import sys
|
||||
|
||||
from confdoc.profiles.manager import ProfileManager
|
||||
|
||||
|
||||
class TestProfileManager:
|
||||
def test_list_profiles(self):
|
||||
manager = ProfileManager()
|
||||
profiles = manager.list_profiles()
|
||||
assert "development" in profiles
|
||||
assert "staging" in profiles
|
||||
assert "production" in profiles
|
||||
|
||||
def test_get_profile_info(self):
|
||||
manager = ProfileManager()
|
||||
info = manager.get_profile_info("development")
|
||||
assert info is not None
|
||||
assert info["name"] == "Development"
|
||||
assert "validation" in info
|
||||
|
||||
def test_load_profile(self):
|
||||
manager = ProfileManager()
|
||||
profile = manager.load_profile("production")
|
||||
assert profile is not None
|
||||
assert profile["name"] == "Production"
|
||||
|
||||
def test_load_nonexistent_profile(self):
|
||||
manager = ProfileManager()
|
||||
profile = manager.load_profile("nonexistent")
|
||||
assert profile is None
|
||||
|
||||
def test_save_and_load_custom_profile(self):
|
||||
manager = ProfileManager()
|
||||
custom_profile = {
|
||||
"name": "Custom",
|
||||
"description": "A custom profile",
|
||||
"validation": {"strict": True},
|
||||
"overrides": {"custom_key": "custom_value"}
|
||||
}
|
||||
manager.save_profile("custom_test", custom_profile)
|
||||
|
||||
loaded = manager.load_profile("custom_test")
|
||||
assert loaded is not None
|
||||
assert loaded["name"] == "Custom"
|
||||
|
||||
def test_apply_profile_modifies_schema(self):
|
||||
manager = ProfileManager()
|
||||
profile = manager.load_profile("development")
|
||||
schema = {
|
||||
"type": "object",
|
||||
"properties": {}
|
||||
}
|
||||
|
||||
result = manager.apply_profile(schema, profile)
|
||||
assert result is not None
|
||||
|
||||
def test_create_profile_from_config(self):
|
||||
manager = ProfileManager()
|
||||
config = {
|
||||
"debug": True,
|
||||
"log_level": "DEBUG",
|
||||
"nested": {"key": "value"}
|
||||
}
|
||||
|
||||
profile = manager.create_profile_from_config(config, "test_profile", "Test description")
|
||||
assert profile["name"] == "test_profile"
|
||||
assert profile["description"] == "Test description"
|
||||
assert "debug" in profile["overrides"]
|
||||
assert "log_level" in profile["overrides"]
|
||||
|
||||
def test_merge_profiles(self):
|
||||
manager = ProfileManager()
|
||||
base = {
|
||||
"name": "Base",
|
||||
"validation": {"strict": False},
|
||||
"overrides": {"key1": "value1"}
|
||||
}
|
||||
override = {
|
||||
"name": "Override",
|
||||
"validation": {"strict": True},
|
||||
"overrides": {"key2": "value2"}
|
||||
}
|
||||
|
||||
merged = manager.merge_profiles(base, override)
|
||||
assert merged["name"] == "Override"
|
||||
assert merged["validation"]["strict"] is True
|
||||
assert "key1" in merged["overrides"]
|
||||
assert "key2" in merged["overrides"]
|
||||
|
||||
def test_get_environment_overrides(self):
|
||||
manager = ProfileManager()
|
||||
env_vars = {
|
||||
"CONFDOC_DEBUG": "true",
|
||||
"CONFDOC_LOG_LEVEL": "INFO",
|
||||
"OTHER_VAR": "ignored"
|
||||
}
|
||||
|
||||
overrides = manager.get_environment_overrides(env_vars)
|
||||
assert "debug" in overrides
|
||||
assert overrides["debug"] is True
|
||||
assert "log_level" in overrides
|
||||
assert overrides["log_level"] == "INFO"
|
||||
assert "OTHER_VAR" not in overrides
|
||||
|
||||
def test_parse_env_value_boolean(self):
|
||||
manager = ProfileManager()
|
||||
assert manager._parse_env_value("true") is True
|
||||
assert manager._parse_env_value("True") is True
|
||||
assert manager._parse_env_value("false") is False
|
||||
|
||||
def test_parse_env_value_integer(self):
|
||||
manager = ProfileManager()
|
||||
assert manager._parse_env_value("123") == 123
|
||||
assert manager._parse_env_value("0") == 0
|
||||
|
||||
def test_parse_env_value_float(self):
|
||||
manager = ProfileManager()
|
||||
assert manager._parse_env_value("3.14") == 3.14
|
||||
|
||||
def test_parse_env_value_string(self):
|
||||
manager = ProfileManager()
|
||||
assert manager._parse_env_value("hello") == "hello"
|
||||
Reference in New Issue
Block a user