39 lines
1.5 KiB
Python
39 lines
1.5 KiB
Python
import pytest
|
|
|
|
from infrasynth.features.registry import FeatureDefinition, FeatureRegistry
|
|
|
|
|
|
class TestFeatureRegistry:
|
|
@pytest.fixture(autouse=True)
|
|
def clean_registry(self, clean_feature_registry):
|
|
yield
|
|
|
|
def test_register_adds_feature(self):
|
|
FeatureRegistry.register("test.flag", name="Test", default=True)
|
|
all_flags = FeatureRegistry.get_all()
|
|
assert "test.flag" in all_flags
|
|
assert isinstance(all_flags["test.flag"], FeatureDefinition)
|
|
|
|
def test_register_sets_default(self):
|
|
FeatureRegistry.register("flag.a", default=True)
|
|
FeatureRegistry.register("flag.b", default=False)
|
|
assert FeatureRegistry.get_all()["flag.a"].default is True
|
|
assert FeatureRegistry.get_all()["flag.b"].default is False
|
|
|
|
def test_register_overwrites_existing(self):
|
|
FeatureRegistry.register("dup", default=True)
|
|
FeatureRegistry.register("dup", default=False)
|
|
assert FeatureRegistry.get_all()["dup"].default is False
|
|
|
|
def test_get_all_returns_copy(self):
|
|
FeatureRegistry.register("f1")
|
|
result = FeatureRegistry.get_all()
|
|
result["new_key"] = FeatureDefinition(slug="new_key")
|
|
assert "new_key" not in FeatureRegistry.get_all()
|
|
|
|
def test_register_with_category(self):
|
|
FeatureRegistry.register("cat.flag", category="billing")
|
|
assert FeatureRegistry.get_all()["cat.flag"].category == "billing"
|
|
|
|
def test_empty_registry(self):
|
|
assert FeatureRegistry.get_all() == {}
|