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() == {}