From a78a6c76f5ed307d8a4f805bb17c16f464a79d95 Mon Sep 17 00:00:00 2001 From: dw-0 Date: Sat, 11 Jul 2026 00:30:00 +0200 Subject: [PATCH] test(extensions): add unit tests for base extension --- kiauh/extensions/tests/__init__.py | 0 kiauh/extensions/tests/test_base_extension.py | 31 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 kiauh/extensions/tests/__init__.py create mode 100644 kiauh/extensions/tests/test_base_extension.py 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"})