add integration tests for process nav endpoints
This commit is contained in:
parent
54426b19bf
commit
8b863c1a1e
|
@ -0,0 +1,137 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
|
||||
<bpmn:collaboration id="Collaboration_1022bxx">
|
||||
<bpmn:participant id="Participant_1gfxnts" processRef="Process_1oafp0t" />
|
||||
</bpmn:collaboration>
|
||||
<bpmn:process id="Process_1oafp0t" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_1l15rbh</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1l15rbh" sourceRef="StartEvent_1" targetRef="Gateway_0n53kj7" />
|
||||
<bpmn:eventBasedGateway id="Gateway_0n53kj7">
|
||||
<bpmn:incoming>Flow_1l15rbh</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0d35i06</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0tzaigt</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_1vld4r2</bpmn:outgoing>
|
||||
</bpmn:eventBasedGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0d35i06" sourceRef="Gateway_0n53kj7" targetRef="Event_0xbr8bu" />
|
||||
<bpmn:intermediateCatchEvent id="Event_0xbr8bu">
|
||||
<bpmn:incoming>Flow_0d35i06</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1w3n49n</bpmn:outgoing>
|
||||
<bpmn:messageEventDefinition id="MessageEventDefinition_1aazu62" messageRef="message_1" />
|
||||
</bpmn:intermediateCatchEvent>
|
||||
<bpmn:intermediateCatchEvent id="Event_0himdx6">
|
||||
<bpmn:incoming>Flow_0tzaigt</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1q47ol8</bpmn:outgoing>
|
||||
<bpmn:messageEventDefinition id="MessageEventDefinition_0oersqt" messageRef="message_2" />
|
||||
</bpmn:intermediateCatchEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0tzaigt" sourceRef="Gateway_0n53kj7" targetRef="Event_0himdx6" />
|
||||
<bpmn:sequenceFlow id="Flow_1vld4r2" sourceRef="Gateway_0n53kj7" targetRef="Event_0e4owa3" />
|
||||
<bpmn:sequenceFlow id="Flow_13ai5vv" sourceRef="Event_0e4owa3" targetRef="Activity_0uum4kq" />
|
||||
<bpmn:endEvent id="Event_0vmxgb9">
|
||||
<bpmn:incoming>Flow_1q47ol8</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1q47ol8" sourceRef="Event_0himdx6" targetRef="Event_0vmxgb9" />
|
||||
<bpmn:sequenceFlow id="Flow_1w3n49n" sourceRef="Event_0xbr8bu" targetRef="Event_174a838" />
|
||||
<bpmn:endEvent id="Event_174a838">
|
||||
<bpmn:incoming>Flow_1w3n49n</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1vwnf3n" sourceRef="Activity_0uum4kq" targetRef="Event_1ixib8a" />
|
||||
<bpmn:intermediateCatchEvent id="Event_0e4owa3">
|
||||
<bpmn:incoming>Flow_1vld4r2</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_13ai5vv</bpmn:outgoing>
|
||||
<bpmn:timerEventDefinition id="TimerEventDefinition_1fnogr9">
|
||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(hours=1)</bpmn:timeDuration>
|
||||
</bpmn:timerEventDefinition>
|
||||
</bpmn:intermediateCatchEvent>
|
||||
<bpmn:manualTask id="Activity_0uum4kq" name="Any Task">
|
||||
<bpmn:extensionElements>
|
||||
<spiffworkflow:instructionsForEndUser>Click the button.</spiffworkflow:instructionsForEndUser>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_13ai5vv</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1vwnf3n</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
<bpmn:endEvent id="Event_1ixib8a">
|
||||
<bpmn:incoming>Flow_1vwnf3n</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
</bpmn:process>
|
||||
<bpmn:message id="message_1" name="Message 1">
|
||||
<bpmn:extensionElements>
|
||||
<spiffworkflow:messageVariable>result</spiffworkflow:messageVariable>
|
||||
</bpmn:extensionElements>
|
||||
</bpmn:message>
|
||||
<bpmn:message id="message_2" name="Message 2">
|
||||
<bpmn:extensionElements>
|
||||
<spiffworkflow:messageVariable>result</spiffworkflow:messageVariable>
|
||||
</bpmn:extensionElements>
|
||||
</bpmn:message>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Collaboration_1022bxx">
|
||||
<bpmndi:BPMNShape id="Participant_1gfxnts_di" bpmnElement="Participant_1gfxnts" isHorizontal="true">
|
||||
<dc:Bounds x="120" y="70" width="630" height="310" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="192" y="172" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0yjcvjd_di" bpmnElement="Gateway_0n53kj7">
|
||||
<dc:Bounds x="285" y="165" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0xbr8bu_di" bpmnElement="Event_0xbr8bu">
|
||||
<dc:Bounds x="392" y="102" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0himdx6_di" bpmnElement="Event_0himdx6">
|
||||
<dc:Bounds x="392" y="172" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0vmxgb9_di" bpmnElement="Event_0vmxgb9">
|
||||
<dc:Bounds x="492" y="172" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_174a838_di" bpmnElement="Event_174a838">
|
||||
<dc:Bounds x="492" y="102" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0e4owa3_di" bpmnElement="Event_0e4owa3">
|
||||
<dc:Bounds x="392" y="272" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_104jmxm_di" bpmnElement="Activity_0uum4kq">
|
||||
<dc:Bounds x="480" y="250" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1ixib8a_di" bpmnElement="Event_1ixib8a">
|
||||
<dc:Bounds x="662" y="272" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1l15rbh_di" bpmnElement="Flow_1l15rbh">
|
||||
<di:waypoint x="228" y="190" />
|
||||
<di:waypoint x="285" y="190" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0d35i06_di" bpmnElement="Flow_0d35i06">
|
||||
<di:waypoint x="310" y="165" />
|
||||
<di:waypoint x="310" y="120" />
|
||||
<di:waypoint x="392" y="120" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0tzaigt_di" bpmnElement="Flow_0tzaigt">
|
||||
<di:waypoint x="335" y="190" />
|
||||
<di:waypoint x="392" y="190" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1vld4r2_di" bpmnElement="Flow_1vld4r2">
|
||||
<di:waypoint x="310" y="215" />
|
||||
<di:waypoint x="310" y="290" />
|
||||
<di:waypoint x="392" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_13ai5vv_di" bpmnElement="Flow_13ai5vv">
|
||||
<di:waypoint x="428" y="290" />
|
||||
<di:waypoint x="480" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1q47ol8_di" bpmnElement="Flow_1q47ol8">
|
||||
<di:waypoint x="428" y="190" />
|
||||
<di:waypoint x="492" y="190" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1w3n49n_di" bpmnElement="Flow_1w3n49n">
|
||||
<di:waypoint x="428" y="120" />
|
||||
<di:waypoint x="492" y="120" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1vwnf3n_di" bpmnElement="Flow_1vwnf3n">
|
||||
<di:waypoint x="580" y="290" />
|
||||
<di:waypoint x="662" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -2497,6 +2497,146 @@ class TestProcessApi(BaseTest):
|
|||
|
||||
print("test_script_unit_test_run")
|
||||
|
||||
def test_send_event(
|
||||
self,
|
||||
app: Flask,
|
||||
client: FlaskClient,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
with_super_admin_user: UserModel,
|
||||
) -> None:
|
||||
"""Test_script_unit_test_run."""
|
||||
process_group_id = "test_group"
|
||||
process_model_id = "process_navigation"
|
||||
bpmn_file_name = "process_navigation.bpmn"
|
||||
bpmn_file_location = "process_navigation"
|
||||
process_model_identifier = self.create_group_and_model_with_bpmn(
|
||||
client=client,
|
||||
user=with_super_admin_user,
|
||||
process_group_id=process_group_id,
|
||||
process_model_id=process_model_id,
|
||||
bpmn_file_name=bpmn_file_name,
|
||||
bpmn_file_location=bpmn_file_location,
|
||||
)
|
||||
|
||||
bpmn_file_data_bytes = self.get_test_data_file_contents(
|
||||
bpmn_file_name, bpmn_file_location
|
||||
)
|
||||
self.create_spec_file(
|
||||
client=client,
|
||||
process_model_id=process_model_identifier,
|
||||
process_model_location=process_model_identifier,
|
||||
file_name=bpmn_file_name,
|
||||
file_data=bpmn_file_data_bytes,
|
||||
user=with_super_admin_user,
|
||||
)
|
||||
|
||||
headers = self.logged_in_headers(with_super_admin_user)
|
||||
response = self.create_process_instance_from_process_model_id(
|
||||
client, process_model_identifier, headers
|
||||
)
|
||||
process_instance_id = response.json["id"]
|
||||
|
||||
client.post(
|
||||
f"/v1.0/process-instances/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}/run",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
)
|
||||
|
||||
data = {
|
||||
"correlation_properties": [],
|
||||
"expression": None,
|
||||
"external": True,
|
||||
"internal": False,
|
||||
"payload": {"message": "message 1"},
|
||||
"name": "Message 1",
|
||||
"typename": "MessageEventDefinition",
|
||||
}
|
||||
response = client.post(
|
||||
f"/v1.0/send-event/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
content_type="application/json",
|
||||
data=json.dumps(data),
|
||||
)
|
||||
assert response.json["status"] == "complete"
|
||||
|
||||
response = client.get(
|
||||
f"/v1.0/task-data/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}?all_tasks=true",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
)
|
||||
end = next(task for task in response.json if task["name"] == "End")
|
||||
assert end["data"]["result"] == {"message": "message 1"}
|
||||
|
||||
def test_manual_complete_task(
|
||||
self,
|
||||
app: Flask,
|
||||
client: FlaskClient,
|
||||
with_db_and_bpmn_file_cleanup: None,
|
||||
with_super_admin_user: UserModel,
|
||||
) -> None:
|
||||
"""Test_script_unit_test_run."""
|
||||
process_group_id = "test_group"
|
||||
process_model_id = "process_navigation"
|
||||
bpmn_file_name = "process_navigation.bpmn"
|
||||
bpmn_file_location = "process_navigation"
|
||||
process_model_identifier = self.create_group_and_model_with_bpmn(
|
||||
client=client,
|
||||
user=with_super_admin_user,
|
||||
process_group_id=process_group_id,
|
||||
process_model_id=process_model_id,
|
||||
bpmn_file_name=bpmn_file_name,
|
||||
bpmn_file_location=bpmn_file_location,
|
||||
)
|
||||
|
||||
bpmn_file_data_bytes = self.get_test_data_file_contents(
|
||||
bpmn_file_name, bpmn_file_location
|
||||
)
|
||||
self.create_spec_file(
|
||||
client=client,
|
||||
process_model_id=process_model_identifier,
|
||||
process_model_location=process_model_identifier,
|
||||
file_name=bpmn_file_name,
|
||||
file_data=bpmn_file_data_bytes,
|
||||
user=with_super_admin_user,
|
||||
)
|
||||
|
||||
headers = self.logged_in_headers(with_super_admin_user)
|
||||
response = self.create_process_instance_from_process_model_id(
|
||||
client, process_model_identifier, headers
|
||||
)
|
||||
process_instance_id = response.json["id"]
|
||||
|
||||
client.post(
|
||||
f"/v1.0/process-instances/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}/run",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
)
|
||||
|
||||
data = {
|
||||
"dateTime": "timedelta(hours=1)",
|
||||
"external": True,
|
||||
"internal": True,
|
||||
"label": "Event_0e4owa3",
|
||||
"typename": "TimerEventDefinition",
|
||||
}
|
||||
response = client.post(
|
||||
f"/v1.0/send-event/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
content_type="application/json",
|
||||
data=json.dumps(data),
|
||||
)
|
||||
|
||||
response = client.get(
|
||||
f"/v1.0/task-data/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
)
|
||||
assert len(response.json) == 1
|
||||
task = response.json[0]
|
||||
|
||||
response = client.post(
|
||||
f"/v1.0/task-complete/{self.modify_process_identifier_for_path_param(process_model_identifier)}/{process_instance_id}/{task['id']}",
|
||||
headers=self.logged_in_headers(with_super_admin_user),
|
||||
content_type="application/json",
|
||||
)
|
||||
assert response.json["status"] == "complete"
|
||||
|
||||
def setup_initial_groups_for_move_tests(
|
||||
self, client: FlaskClient, with_super_admin_user: UserModel
|
||||
) -> None:
|
||||
|
|
Loading…
Reference in New Issue