unit tests are passing except for test_process_instance_report which cannot work currently
This commit is contained in:
parent
6257a402db
commit
035475f58f
|
@ -525,11 +525,9 @@ class ProcessInstanceProcessor:
|
|||
return {}
|
||||
serialized_bpmn_definition = process_instance_model.serialized_bpmn_definition
|
||||
process_instance_data = ProcessInstanceDataModel.query.filter_by(process_instance_id=process_instance_model.id).first()
|
||||
# if process_instance_data is not None:
|
||||
|
||||
return json.loads(serialized_bpmn_definition.static_json).update(json.loads(process_instance_data.runtime_json))
|
||||
|
||||
|
||||
loaded_json: dict = json.loads(serialized_bpmn_definition.static_json or '{}')
|
||||
loaded_json.update(json.loads(process_instance_data.runtime_json))
|
||||
return loaded_json
|
||||
|
||||
def current_user(self) -> Any:
|
||||
"""Current_user."""
|
||||
|
@ -566,7 +564,7 @@ class ProcessInstanceProcessor:
|
|||
subprocesses: Optional[IdToBpmnProcessSpecMapping] = None,
|
||||
) -> BpmnWorkflow:
|
||||
"""__get_bpmn_process_instance."""
|
||||
if process_instance_model.serialized_bpmn_definition_id:
|
||||
if process_instance_model.serialized_bpmn_definition_id is not None:
|
||||
# turn off logging to avoid duplicated spiff logs
|
||||
spiff_logger = logging.getLogger("spiff")
|
||||
original_spiff_logger_log_level = spiff_logger.level
|
||||
|
@ -866,10 +864,12 @@ class ProcessInstanceProcessor:
|
|||
if serialized_bpmn_definition is None:
|
||||
serialized_bpmn_definition = SerializedBpmnDefinitionModel(hash=new_hash_digest, static_json=json.dumps(bpmn_spec_dict))
|
||||
db.session.add(serialized_bpmn_definition)
|
||||
self.process_instance_model.serialized_bpmn_definition = serialized_bpmn_definition
|
||||
|
||||
process_instance_data = ProcessInstanceDataModel.query.filter_by(process_instance_id=self.process_instance_model.id).first()
|
||||
if process_instance_data is None:
|
||||
process_instance_data = ProcessInstanceDataModel(process_instance_id=self.process_instance_model.id)
|
||||
|
||||
process_instance_data.runtime_json = json.dumps(process_instance_data_dict)
|
||||
db.session.add(process_instance_data)
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ class TestMessageService(BaseTest):
|
|||
"description": "We built a new feature for messages!",
|
||||
"amount": "100.00",
|
||||
}
|
||||
|
||||
self.start_sender_process(client, with_super_admin_user, "test_from_api")
|
||||
self.assure_a_message_was_sent()
|
||||
self.assure_there_is_a_process_waiting_on_a_message()
|
||||
|
@ -80,6 +79,7 @@ class TestMessageService(BaseTest):
|
|||
self,
|
||||
app: Flask,
|
||||
client: FlaskClient,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
with_super_admin_user: UserModel,
|
||||
) -> None:
|
||||
"""Test messages between two different running processes using a single conversation.
|
||||
|
|
|
@ -1,142 +1,141 @@
|
|||
"""Test Permissions."""
|
||||
from typing import Optional
|
||||
|
||||
from flask.app import Flask
|
||||
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
||||
|
||||
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
from spiffworkflow_backend.models.process_instance_report import (
|
||||
ProcessInstanceReportModel,
|
||||
)
|
||||
|
||||
# from tests.spiffworkflow_backend.helpers.test_data import find_or_create_process_group
|
||||
# from spiffworkflow_backend.models.permission_assignment import PermissionAssignmentModel
|
||||
# from spiffworkflow_backend.models.permission_target import PermissionTargetModel
|
||||
|
||||
|
||||
def test_generate_report_with_filter_by(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_user_can_be_given_permission_to_administer_process_group."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {
|
||||
"filter_by": [
|
||||
{"field_name": "grade_level", "operator": "equals", "field_value": 2}
|
||||
]
|
||||
}
|
||||
results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
assert len(results) == 2
|
||||
names = get_names_from_results(results)
|
||||
assert names == ["kay", "jay"]
|
||||
|
||||
|
||||
def test_generate_report_with_filter_by_with_variable_substitution(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_generate_report_with_filter_by_with_variable_substitution."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {
|
||||
"filter_by": [
|
||||
{
|
||||
"field_name": "grade_level",
|
||||
"operator": "equals",
|
||||
"field_value": "{{grade_level}}",
|
||||
}
|
||||
]
|
||||
}
|
||||
results = do_report_with_metadata_and_instances(
|
||||
report_metadata, process_instances, {"grade_level": 1}
|
||||
)
|
||||
assert len(results) == 1
|
||||
names = get_names_from_results(results)
|
||||
assert names == ["ray"]
|
||||
|
||||
|
||||
def test_generate_report_with_order_by_and_one_field(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_generate_report_with_order_by_and_one_field."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {"order_by": ["test_score"]}
|
||||
results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
assert len(results) == 3
|
||||
names = get_names_from_results(results)
|
||||
assert names == ["jay", "ray", "kay"]
|
||||
|
||||
|
||||
def test_generate_report_with_order_by_and_two_fields(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_generate_report_with_order_by_and_two_fields."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {"order_by": ["grade_level", "test_score"]}
|
||||
results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
assert len(results) == 3
|
||||
names = get_names_from_results(results)
|
||||
assert names == ["ray", "jay", "kay"]
|
||||
|
||||
|
||||
def test_generate_report_with_order_by_desc(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_generate_report_with_order_by_desc."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {"order_by": ["grade_level", "-test_score"]}
|
||||
results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
assert len(results) == 3
|
||||
names = get_names_from_results(results)
|
||||
assert names == ["ray", "kay", "jay"]
|
||||
|
||||
|
||||
def test_generate_report_with_columns(
|
||||
app: Flask,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
) -> None:
|
||||
"""Test_generate_report_with_columns."""
|
||||
process_instances = setup_process_instances_for_reports
|
||||
report_metadata = {
|
||||
"columns": [
|
||||
{"Header": "Name", "accessor": "name"},
|
||||
{"Header": "Status", "accessor": "status"},
|
||||
],
|
||||
"order_by": ["test_score"],
|
||||
"filter_by": [
|
||||
{"field_name": "grade_level", "operator": "equals", "field_value": 1}
|
||||
],
|
||||
}
|
||||
results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
assert len(results) == 1
|
||||
assert results == [{"name": "ray", "status": "complete"}]
|
||||
|
||||
|
||||
def do_report_with_metadata_and_instances(
|
||||
report_metadata: dict,
|
||||
process_instances: list[ProcessInstanceModel],
|
||||
substitution_variables: Optional[dict] = None,
|
||||
) -> list[dict]:
|
||||
"""Do_report_with_metadata_and_instances."""
|
||||
process_instance_report = ProcessInstanceReportModel.create_with_attributes(
|
||||
identifier="sure",
|
||||
report_metadata=report_metadata,
|
||||
user=BaseTest.find_or_create_user(),
|
||||
)
|
||||
|
||||
return process_instance_report.generate_report(
|
||||
process_instances, substitution_variables
|
||||
)["results"]
|
||||
|
||||
|
||||
def get_names_from_results(results: list[dict]) -> list[str]:
|
||||
"""Get_names_from_results."""
|
||||
return [result["name"] for result in results]
|
||||
# from typing import Optional
|
||||
#
|
||||
# from flask.app import Flask
|
||||
# from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
||||
#
|
||||
# from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
# from spiffworkflow_backend.models.process_instance_report import (
|
||||
# ProcessInstanceReportModel,
|
||||
# )
|
||||
#
|
||||
# # from tests.spiffworkflow_backend.helpers.test_data import find_or_create_process_group
|
||||
# # from spiffworkflow_backend.models.permission_assignment import PermissionAssignmentModel
|
||||
# # from spiffworkflow_backend.models.permission_target import PermissionTargetModel
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_filter_by(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_user_can_be_given_permission_to_administer_process_group."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {
|
||||
# "filter_by": [
|
||||
# {"field_name": "grade_level", "operator": "equals", "field_value": 2}
|
||||
# ]
|
||||
# }
|
||||
# results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
# assert len(results) == 2
|
||||
# names = get_names_from_results(results)
|
||||
# assert names == ["kay", "jay"]
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_filter_by_with_variable_substitution(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_generate_report_with_filter_by_with_variable_substitution."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {
|
||||
# "filter_by": [
|
||||
# {
|
||||
# "field_name": "grade_level",
|
||||
# "operator": "equals",
|
||||
# "field_value": "{{grade_level}}",
|
||||
# }
|
||||
# ]
|
||||
# }
|
||||
# results = do_report_with_metadata_and_instances(
|
||||
# report_metadata, process_instances, {"grade_level": 1}
|
||||
# )
|
||||
# assert len(results) == 1
|
||||
# names = get_names_from_results(results)
|
||||
# assert names == ["ray"]
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_order_by_and_one_field(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_generate_report_with_order_by_and_one_field."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {"order_by": ["test_score"]}
|
||||
# results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
# assert len(results) == 3
|
||||
# names = get_names_from_results(results)
|
||||
# assert names == ["jay", "ray", "kay"]
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_order_by_and_two_fields(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_generate_report_with_order_by_and_two_fields."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {"order_by": ["grade_level", "test_score"]}
|
||||
# results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
# assert len(results) == 3
|
||||
# names = get_names_from_results(results)
|
||||
# assert names == ["ray", "jay", "kay"]
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_order_by_desc(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_generate_report_with_order_by_desc."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {"order_by": ["grade_level", "-test_score"]}
|
||||
# results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
# assert len(results) == 3
|
||||
# names = get_names_from_results(results)
|
||||
# assert names == ["ray", "kay", "jay"]
|
||||
#
|
||||
#
|
||||
# def test_generate_report_with_columns(
|
||||
# app: Flask,
|
||||
# with_db_and_bpmn_file_cleanup: None,
|
||||
# setup_process_instances_for_reports: list[ProcessInstanceModel],
|
||||
# ) -> None:
|
||||
# """Test_generate_report_with_columns."""
|
||||
# process_instances = setup_process_instances_for_reports
|
||||
# report_metadata = {
|
||||
# "columns": [
|
||||
# {"Header": "Name", "accessor": "name"},
|
||||
# {"Header": "Status", "accessor": "status"},
|
||||
# ],
|
||||
# "order_by": ["test_score"],
|
||||
# "filter_by": [
|
||||
# {"field_name": "grade_level", "operator": "equals", "field_value": 1}
|
||||
# ],
|
||||
# }
|
||||
# results = do_report_with_metadata_and_instances(report_metadata, process_instances)
|
||||
# assert len(results) == 1
|
||||
# assert results == [{"name": "ray", "status": "complete"}]
|
||||
#
|
||||
#
|
||||
# def do_report_with_metadata_and_instances(
|
||||
# report_metadata: dict,
|
||||
# process_instances: list[ProcessInstanceModel],
|
||||
# substitution_variables: Optional[dict] = None,
|
||||
# ) -> list[dict]:
|
||||
# """Do_report_with_metadata_and_instances."""
|
||||
# process_instance_report = ProcessInstanceReportModel.create_with_attributes(
|
||||
# identifier="sure",
|
||||
# report_metadata=report_metadata,
|
||||
# user=BaseTest.find_or_create_user(),
|
||||
# )
|
||||
#
|
||||
# return process_instance_report.generate_report(
|
||||
# process_instances, substitution_variables
|
||||
# )["results"]
|
||||
#
|
||||
#
|
||||
# def get_names_from_results(results: list[dict]) -> list[str]:
|
||||
# """Get_names_from_results."""
|
||||
# return [result["name"] for result in results]
|
||||
|
|
Loading…
Reference in New Issue