You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
1.0 KiB
Python
37 lines
1.0 KiB
Python
import pytest
|
|
|
|
from iti.config import BaseConfig
|
|
from iti.modules import ModuleMenuSeed, ModulePermission, ModuleRegistry
|
|
from iti import create_app
|
|
|
|
|
|
class DemoModule:
|
|
name = "demo"
|
|
|
|
def register_permissions(self, app):
|
|
app.state.iti_modules.register_permission(ModulePermission("demo.read", "Demo Read"))
|
|
|
|
def register_menu_seed(self, app):
|
|
app.state.iti_modules.register_menu_seed(
|
|
ModuleMenuSeed(id="demo", name="Demo", type="menu", sort=10)
|
|
)
|
|
|
|
|
|
def test_module_registry_rejects_duplicate_names():
|
|
registry = ModuleRegistry()
|
|
registry.register(DemoModule())
|
|
|
|
with pytest.raises(ValueError, match="already registered"):
|
|
registry.register(DemoModule())
|
|
|
|
|
|
def test_create_app_runs_module_registration():
|
|
app = create_app(
|
|
modules=[DemoModule()],
|
|
config_mapping=BaseConfig(database_url="sqlite+pysqlite:///:memory:"),
|
|
)
|
|
|
|
registry = app.state.iti_modules
|
|
assert registry.permissions["demo.read"].name == "Demo Read"
|
|
assert registry.list_menu_seeds()[0].id == "demo"
|