Files
webmail-client/backend/tests/plugins/test_builtin.py
T

39 lines
1.2 KiB
Python
Raw Normal View History

"""Builtin (non-removable core) plugin handling (SPEC §11 / §12)."""
from __future__ import annotations
import pytest
from app.plugins import loader
from app.plugins.sdk import Plugin
def test_builtin_defaults_false() -> None:
assert Plugin(name="filters", version="1").builtin is False
assert Plugin(name="calendar", version="1", builtin=True).builtin is True
def test_assert_removable_blocks_builtin() -> None:
loader.set_plugins_for_test(
[
Plugin(name="filters", version="1"), # removable
Plugin(name="calendar", version="1", builtin=True), # core, non-removable
]
)
assert loader.assert_removable("filters").name == "filters"
with pytest.raises(loader.PluginRemovalError, match="builtin"):
loader.assert_removable("calendar")
with pytest.raises(loader.PluginRemovalError, match="unknown"):
loader.assert_removable("nope")
def test_builtin_surfaces_in_ui_manifest() -> None:
from app.plugins.sdk import UiManifest
loader.set_plugins_for_test(
[Plugin(name="calendar", version="1", builtin=True, ui_manifest=UiManifest())]
)
entry = loader.build_ui_manifest()["plugins"][0]
assert entry["name"] == "calendar" and entry["builtin"] is True