spiffworkflow-backend/conftest.py

55 lines
1.6 KiB
Python
Raw Normal View History

2022-05-17 16:47:55 -04:00
"""Conftest."""
2022-05-19 14:38:47 -04:00
import os
2022-06-21 15:13:02 -04:00
import shutil
2022-06-30 11:21:02 -04:00
from flask_bpmn.models.db import db
from flask_bpmn.models.db import SpiffworkflowBaseDBModel
2022-06-21 15:13:02 -04:00
from typing import Iterator
2022-05-19 14:38:47 -04:00
import pytest
from flask.app import Flask
2022-06-21 15:17:42 -04:00
2022-06-21 15:13:02 -04:00
from spiffworkflow_backend.services.process_model_service import ProcessModelService
2022-05-17 16:47:55 -04:00
2022-05-20 11:46:44 -04:00
# We need to call this before importing spiffworkflow_backend
2022-05-20 11:46:44 -04:00
# otherwise typeguard cannot work. hence the noqa: E402
if os.environ.get("RUN_TYPEGUARD") == "true":
2022-05-20 11:55:09 -04:00
from typeguard.importhook import install_import_hook
install_import_hook(packages="spiffworkflow_backend")
2022-05-20 11:46:44 -04:00
from spiffworkflow_backend import create_app # noqa: E402
2022-05-17 16:47:55 -04:00
@pytest.fixture(scope="session")
def app() -> Flask:
2022-05-17 16:47:55 -04:00
"""App."""
2022-05-19 14:38:47 -04:00
os.environ["FLASK_ENV"] = "testing"
# os.environ["FLASK_SESSION_SECRET_KEY"] = "this_is_testing_secret_key"
os.environ["FLASK_SESSION_SECRET_KEY"] = "super_secret_key"
app = create_app()
2022-05-19 16:08:38 -04:00
# NOTE: set this here since nox shoves tests and src code to
# different places and this allows us to know exactly where we are at the start
app.config["BPMN_SPEC_ABSOLUTE_DIR"] = (
os.path.join(os.path.dirname(__file__))
+ "/tests/spiffworkflow_backend/files/bpmn_specs"
2022-05-19 16:08:38 -04:00
)
return app
2022-06-21 15:13:02 -04:00
@pytest.fixture()
def with_db_and_bpmn_file_cleanup() -> Iterator[None]:
2022-06-21 15:13:02 -04:00
"""Process_group_resource."""
for model in SpiffworkflowBaseDBModel._all_subclasses():
db.session.query(model).delete()
2022-06-21 15:13:02 -04:00
try:
yield
finally:
process_model_service = ProcessModelService()
if os.path.exists(process_model_service.root_path()):
shutil.rmtree(process_model_service.root_path())