diff --git a/kiauh/extensions/tests/__init__.py b/kiauh/extensions/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/kiauh/extensions/tests/test_base_extension.py b/kiauh/extensions/tests/test_base_extension.py new file mode 100644 index 00000000..d1ef72e9 --- /dev/null +++ b/kiauh/extensions/tests/test_base_extension.py @@ -0,0 +1,31 @@ +from __future__ import annotations + +import pytest +from extensions.base_extension import BaseExtension + + +class ConcreteExtension(BaseExtension): + def install_extension(self, **kwargs) -> None: + pass + + def remove_extension(self, **kwargs) -> None: + pass + + +class TestBaseExtension: + def test_concrete_subclass_can_be_instantiated(self) -> None: + ext = ConcreteExtension({"name": "test"}) + assert ext.metadata["name"] == "test" + + def test_update_extension_not_implemented(self) -> None: + ext = ConcreteExtension({"name": "test"}) + with pytest.raises(NotImplementedError): + ext.update_extension() + + def test_abstract_methods_enforced(self) -> None: + class PartialExtension(BaseExtension): + def install_extension(self, **kwargs) -> None: + pass + + with pytest.raises(TypeError): + PartialExtension({"name": "test"})