81 lines
2.9 KiB
Python
81 lines
2.9 KiB
Python
from flask import Flask
|
|
from flask.testing import FlaskClient
|
|
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
|
from spiffworkflow_backend.models.user import UserModel
|
|
|
|
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
|
|
|
|
|
class TestOnboarding(BaseTest):
|
|
def test_returns_nothing_if_no_onboarding_model(
|
|
self,
|
|
app: Flask,
|
|
client: FlaskClient,
|
|
with_db_and_bpmn_file_cleanup: None,
|
|
with_super_admin_user: UserModel,
|
|
) -> None:
|
|
results = client.get(
|
|
"/v1.0/onboarding",
|
|
headers=self.logged_in_headers(with_super_admin_user),
|
|
)
|
|
|
|
assert results.status_code == 200
|
|
assert results.json == {}
|
|
|
|
def set_up_onboarding(self, client: FlaskClient, with_super_admin_user: UserModel, file_location: str) -> None:
|
|
process_group_id = "site-administration"
|
|
process_model_id = "onboarding"
|
|
bpmn_file_location = file_location
|
|
self.create_group_and_model_with_bpmn(
|
|
client,
|
|
with_super_admin_user,
|
|
process_group_id=process_group_id,
|
|
process_model_id=process_model_id,
|
|
bpmn_file_location=bpmn_file_location,
|
|
)
|
|
|
|
def test_returns_onboarding_if_onboarding_model(
|
|
self,
|
|
app: Flask,
|
|
client: FlaskClient,
|
|
with_db_and_bpmn_file_cleanup: None,
|
|
with_super_admin_user: UserModel,
|
|
) -> None:
|
|
self.set_up_onboarding(client, with_super_admin_user, "onboarding")
|
|
|
|
results = client.get(
|
|
"/v1.0/onboarding",
|
|
headers=self.logged_in_headers(with_super_admin_user),
|
|
)
|
|
|
|
assert results.status_code == 200
|
|
assert len(results.json.keys()) == 4
|
|
assert results.json["type"] == "default_view"
|
|
assert results.json["value"] == "my_tasks"
|
|
assert results.json["instructions"] == ""
|
|
assert results.json["task_id"] is not None
|
|
|
|
# Assure no residual process model is left behind if it executes and completes without additinal user tasks
|
|
assert len(ProcessInstanceModel.query.all()) == 0
|
|
|
|
def test_persists_if_user_task_encountered(
|
|
self,
|
|
app: Flask,
|
|
client: FlaskClient,
|
|
with_db_and_bpmn_file_cleanup: None,
|
|
with_super_admin_user: UserModel,
|
|
) -> None:
|
|
self.set_up_onboarding(client, with_super_admin_user, "onboarding_with_user_task")
|
|
results = client.get(
|
|
"/v1.0/onboarding",
|
|
headers=self.logged_in_headers(with_super_admin_user),
|
|
)
|
|
assert results.status_code == 200
|
|
assert len(results.json.keys()) == 4
|
|
assert results.json["type"] == "user_input_required"
|
|
assert results.json["process_instance_id"] is not None
|
|
instance = ProcessInstanceModel.query.filter(
|
|
ProcessInstanceModel.id == results.json["process_instance_id"]
|
|
).first()
|
|
assert instance is not None
|