import pytest def get_all_router_modules(): """Dynamically discover all router modules, including submodules.""" import importlib import pkgutil import src.backend.routers def walk_modules(package): modules = [] for module_info in pkgutil.iter_modules(package.__path__): full_name = f"{package.__name__}.{module_info.name}" if module_info.ispkg: subpkg = importlib.import_module(full_name) modules.extend(walk_modules(subpkg)) else: modules.append(full_name) return modules found = walk_modules(src.backend.routers) assert found, "No router modules found!" return found @pytest.mark.parametrize("router_module", get_all_router_modules()) def test_router_module_has_route_defined(router_module): """Ensure route module has a ROUTE defined.""" module = __import__(router_module, fromlist=[""]) assert hasattr(module, "ROUTE"), f"Module {router_module} does not define ROUTE" assert isinstance(module.ROUTE, str), f"ROUTE in {router_module} is not a string" assert module.ROUTE.startswith( "/" ), f"ROUTE in {router_module} does not start with '/'"