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.
iTi-Flask/tests/test_modules.py

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"