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.
79 lines
2.0 KiB
Python
79 lines
2.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"
|
|
|
|
|
|
def test_create_app_runs_register_mq_between_tasks_and_routes():
|
|
phases = []
|
|
|
|
class MQModule:
|
|
name = "mq-demo"
|
|
|
|
def init_app(self, app):
|
|
phases.append("init_app")
|
|
|
|
def register_tasks(self, app):
|
|
phases.append("register_tasks")
|
|
|
|
def register_mq(self, app):
|
|
phases.append("register_mq")
|
|
|
|
def register_routes(self, app):
|
|
phases.append("register_routes")
|
|
|
|
def register_permissions(self, app):
|
|
phases.append("register_permissions")
|
|
|
|
def register_menu_seed(self, app):
|
|
phases.append("register_menu_seed")
|
|
|
|
create_app(
|
|
modules=[MQModule()],
|
|
config_mapping=BaseConfig(
|
|
database_url="sqlite+pysqlite:///:memory:",
|
|
exchange_enabled=False,
|
|
),
|
|
)
|
|
|
|
assert phases == [
|
|
"init_app",
|
|
"register_tasks",
|
|
"register_mq",
|
|
"register_routes",
|
|
"register_permissions",
|
|
"register_menu_seed",
|
|
]
|