From 0de462ae63cb484758c64abc37ae8bc268f0eb5d Mon Sep 17 00:00:00 2001 From: jasquat Date: Tue, 20 Dec 2022 13:50:09 -0500 Subject: [PATCH] added another filter test --- .../process_instance_report_service.py | 1 - .../test_process_instance_report_service.py | 78 ++++++++++++++++++- 2 files changed, 77 insertions(+), 2 deletions(-) diff --git a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py index bcf7fb41..d6932c31 100644 --- a/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py +++ b/spiffworkflow-backend/src/spiffworkflow_backend/services/process_instance_report_service.py @@ -149,7 +149,6 @@ class ProcessInstanceReportService: "order_by": ["-start_in_seconds", "-id"], }, } - process_instance_report = ProcessInstanceReportModel( identifier=report_identifier, created_by_id=user.id, diff --git a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_report_service.py b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_report_service.py index 9d08e637..513910b4 100644 --- a/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_report_service.py +++ b/spiffworkflow-backend/tests/spiffworkflow_backend/unit/test_process_instance_report_service.py @@ -1,5 +1,7 @@ """Test_process_instance_report_service.""" from typing import Optional +from flask_bpmn.models.db import db +from spiffworkflow_backend.models.human_task import HumanTaskModel from spiffworkflow_backend.models.process_instance import ProcessInstanceModel from tests.spiffworkflow_backend.helpers.test_data import load_test_spec @@ -747,7 +749,7 @@ class TestProcessInstanceReportService(BaseTest): assert report_filter.end_to is None assert report_filter.process_status == ["sue"] - def test_can_filter_by_initiated_by_me( + def test_can_filter_by_completed_instances_initiated_by_me( self, app: Flask, client: FlaskClient, @@ -762,6 +764,7 @@ class TestProcessInstanceReportService(BaseTest): user_one = self.find_or_create_user(username="user_one") user_two = self.find_or_create_user(username="user_two") + # Several processes to ensure they do not return in the result _process_instance_created_by_user_one_one = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_one) _process_instance_created_by_user_one_two = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_one) _process_instance_created_by_user_one_three = self.create_process_instance_from_process_model(process_model=process_model, status="waiting", user=user_one) @@ -786,3 +789,76 @@ class TestProcessInstanceReportService(BaseTest): assert response_json['results'][1]['process_initiator_id'] == user_one.id assert response_json['results'][0]['status'] == 'complete' assert response_json['results'][1]['status'] == 'complete' + + def test_can_filter_by_completed_instances_with_tasks_completed_by_me( + self, + app: Flask, + client: FlaskClient, + with_db_and_bpmn_file_cleanup: None, + ) -> None: + process_model_id = "runs_without_input/sample" + bpmn_file_location = "sample" + process_model = load_test_spec( + process_model_id, + process_model_source_directory=bpmn_file_location, + ) + user_one = self.find_or_create_user(username="user_one") + user_two = self.find_or_create_user(username="user_two") + + # Several processes to ensure they do not return in the result + process_instance_created_by_user_one_one = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_one) + _process_instance_created_by_user_one_two = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_one) + process_instance_created_by_user_one_three = self.create_process_instance_from_process_model(process_model=process_model, status="waiting", user=user_one) + process_instance_created_by_user_two_one = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_two) + _process_instance_created_by_user_two_two = self.create_process_instance_from_process_model(process_model=process_model, status="complete", user=user_two) + process_instance_created_by_user_two_three = self.create_process_instance_from_process_model(process_model=process_model, status="waiting", user=user_two) + + human_task_for_user_one_one = HumanTaskModel( + process_instance_id=process_instance_created_by_user_one_one.id, + completed_by_user_id=user_one.id, + ) + human_task_for_user_one_two = HumanTaskModel( + process_instance_id=process_instance_created_by_user_two_one.id, + completed_by_user_id=user_one.id, + ) + human_task_for_user_one_three = HumanTaskModel( + process_instance_id=process_instance_created_by_user_one_three.id, + completed_by_user_id=user_one.id, + ) + human_task_for_user_two_one = HumanTaskModel( + process_instance_id=process_instance_created_by_user_one_one.id, + completed_by_user_id=user_two.id, + ) + human_task_for_user_two_two = HumanTaskModel( + process_instance_id=process_instance_created_by_user_two_one.id, + completed_by_user_id=user_two.id, + ) + human_task_for_user_two_three = HumanTaskModel( + process_instance_id=process_instance_created_by_user_one_three.id, + completed_by_user_id=user_two.id, + ) + db.session.add(human_task_for_user_one_one) + db.session.add(human_task_for_user_one_two) + db.session.add(human_task_for_user_one_three) + db.session.add(human_task_for_user_two_one) + db.session.add(human_task_for_user_two_two) + db.session.add(human_task_for_user_two_three) + db.session.commit() + + process_instance_report = ProcessInstanceReportService.report_with_identifier( + user=user_one, report_identifier="system_report_completed_instances_with_tasks_completed_by_me" + ) + report_filter = ProcessInstanceReportService.filter_from_metadata_with_overrides( + process_instance_report=process_instance_report, + process_model_identifier=process_model.id, + ) + response_json = ProcessInstanceReportService.run_process_instance_report( + report_filter=report_filter, + process_instance_report=process_instance_report, + user=user_one + ) + + assert len(response_json['results']) == 1 + assert response_json['results'][0]['process_initiator_id'] == user_two.id + assert response_json['results'][0]['id'] == process_instance_created_by_user_two_one.id + assert response_json['results'][0]['status'] == 'complete'