Spaces:
Running
Running
File size: 3,269 Bytes
7cc81cb | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | 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
|