MediaRouter / tests /test_project_models_imports.py
basyx's picture
Upload 437 files
7cc81cb verified
Raw
History Blame Contribute Delete
3.27 kB
from __future__ import annotations
from importlib.machinery import PathFinder
import pytest
def _load_project_collaboration_symbols():
pytest.importorskip("sqlalchemy")
import app.projects.models
import app.projects.models.collaboration
from app.projects.models import (
Project,
ProjectGenerationJob,
ProjectEditorState,
ProjectRenderJob,
)
from app.projects.models.collaboration import (
ApprovalRequest,
ApprovalWorkflow,
CollaborationActivity,
Invitation,
ProjectCollaborator,
ReviewComment,
Team,
TeamMember,
)
return {
"project_models": app.projects.models,
"project": Project,
"project_generation_job": ProjectGenerationJob,
"project_editor_state": ProjectEditorState,
"project_render_job": ProjectRenderJob,
"team": Team,
"team_member": TeamMember,
"invitation": Invitation,
"approval_workflow": ApprovalWorkflow,
"approval_request": ApprovalRequest,
"review_comment": ReviewComment,
"project_collaborator": ProjectCollaborator,
"collaboration_activity": CollaborationActivity,
}
_SYMBOLS = _load_project_collaboration_symbols()
def test_project_model_package_imports_are_resilient() -> None:
assert _SYMBOLS["project"].__name__ == "Project"
assert _SYMBOLS["project_generation_job"].__name__ == "ProjectGenerationJob"
assert _SYMBOLS["project_editor_state"].__name__ == "ProjectEditorState"
assert _SYMBOLS["project_render_job"].__name__ == "ProjectRenderJob"
def test_collaboration_submodule_exports_expected_models() -> None:
assert _SYMBOLS["team"].__name__ == "Team"
assert _SYMBOLS["team_member"].__name__ == "TeamMember"
assert _SYMBOLS["invitation"].__name__ == "Invitation"
assert _SYMBOLS["approval_workflow"].__name__ == "ApprovalWorkflow"
assert _SYMBOLS["approval_request"].__name__ == "ApprovalRequest"
assert _SYMBOLS["review_comment"].__name__ == "ReviewComment"
assert _SYMBOLS["project_collaborator"].__name__ == "ProjectCollaborator"
assert _SYMBOLS["collaboration_activity"].__name__ == "CollaborationActivity"
def test_production_style_startup_imports_are_resolvable() -> None:
assert _SYMBOLS["project_models"].Project is not None
assert _SYMBOLS["project_models"].collaboration.Team is not None
assert _SYMBOLS["project_models"].Project is not None
def test_models_module_resolution_avoids_collision() -> None:
parent_paths = [str(path) for path in __import__("app.projects", fromlist=[""]).__path__]
package_spec = PathFinder.find_spec("app.projects.models", parent_paths)
assert package_spec is not None
assert package_spec.origin.endswith("__init__.py")
assert package_spec.submodule_search_locations
collaboration_spec = PathFinder.find_spec(
"app.projects.models.collaboration",
list(package_spec.submodule_search_locations),
)
assert collaboration_spec is not None
assert collaboration_spec.origin.endswith("collaboration.py")
def test_main_app_symbol_is_registered() -> None:
pytest.importorskip("sqlalchemy")
import main
assert main.app is not None