mirror of
https://github.com/sartography/spiffworkflow-backend.git
synced 2025-02-23 21:08:18 +00:00
some basis for testing messages now. it still does not do anything though
This commit is contained in:
parent
0a77926801
commit
209e67bf8b
@ -1,8 +1,8 @@
|
||||
"""empty message
|
||||
|
||||
Revision ID: c7735c07773c
|
||||
Revision ID: 63365f377b89
|
||||
Revises:
|
||||
Create Date: 2022-08-01 14:22:21.009841
|
||||
Create Date: 2022-08-02 16:20:32.076152
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
@ -10,7 +10,7 @@ import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'c7735c07773c'
|
||||
revision = '63365f377b89'
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
@ -42,13 +42,13 @@ def upgrade():
|
||||
sa.Column('username', sa.String(length=50), nullable=False),
|
||||
sa.Column('uid', sa.String(length=50), nullable=True),
|
||||
sa.Column('service', sa.String(length=50), nullable=False),
|
||||
sa.Column('service_id', sa.String(length=100), nullable=False),
|
||||
sa.Column('service_id', sa.String(length=50), nullable=False),
|
||||
sa.Column('name', sa.String(length=50), nullable=True),
|
||||
sa.Column('email', sa.String(length=50), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('service', 'service_id', name='service_key'),
|
||||
sa.UniqueConstraint('uid'),
|
||||
sa.UniqueConstraint('username'),
|
||||
sa.UniqueConstraint('service', 'service_id')
|
||||
sa.UniqueConstraint('username')
|
||||
)
|
||||
op.create_table('principal',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
@ -135,20 +135,18 @@ def upgrade():
|
||||
sa.Column('updated_at_in_seconds', sa.Integer(), nullable=True),
|
||||
sa.Column('created_at_in_seconds', sa.Integer(), nullable=True),
|
||||
sa.Column('user_uid', sa.String(length=50), nullable=True),
|
||||
sa.Column('user_id', sa.Integer(), nullable=True),
|
||||
sa.Column('archived', sa.Boolean(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['process_instance_id'], ['process_instance.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_uid'], ['user.uid'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['user.id'], ),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
||||
op.create_table('queued_send_message',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('process_instance_id', sa.Integer(), nullable=False),
|
||||
sa.Column('bpmn_element_id', sa.String(length=50), nullable=False),
|
||||
sa.Column('messsage_type', sa.Enum('send', 'receive', name='messagetypes'), nullable=False),
|
||||
sa.Column('message_model', sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['message_model'], ['message_model.id'], ),
|
||||
sa.Column('message_type', sa.Enum('send', 'receive', name='messagetypes'), nullable=False),
|
||||
sa.Column('message_model_id', sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['message_model_id'], ['message_model.id'], ),
|
||||
sa.ForeignKeyConstraint(['process_instance_id'], ['process_instance.id'], ),
|
||||
sa.PrimaryKeyConstraint('id')
|
||||
)
|
@ -14,12 +14,12 @@ class MessageCorrelationModel(SpiffworkflowBaseDBModel):
|
||||
|
||||
__tablename__ = "message_correlation"
|
||||
__table_args__ = (
|
||||
db.UniqueConstraint(
|
||||
"message_id", "name", name="message_id_name_unique"
|
||||
),
|
||||
db.UniqueConstraint("message_id", "name", name="message_id_name_unique"),
|
||||
)
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
message_id = db.Column(ForeignKey(MessageInstanceModel.id), nullable=False, index=True)
|
||||
message_id = db.Column(
|
||||
ForeignKey(MessageInstanceModel.id), nullable=False, index=True
|
||||
)
|
||||
name = db.Column(db.String(50), nullable=False, index=True)
|
||||
value = db.Column(db.String(50), nullable=False, index=True)
|
||||
|
@ -1,6 +1,5 @@
|
||||
"""Message_instance."""
|
||||
import enum
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
from flask_bpmn.models.db import db
|
||||
@ -8,12 +7,13 @@ from flask_bpmn.models.db import SpiffworkflowBaseDBModel
|
||||
from sqlalchemy import Enum
|
||||
from sqlalchemy import ForeignKey
|
||||
|
||||
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
from spiffworkflow_backend.models.message_model import MessageModel
|
||||
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
|
||||
|
||||
class MessageTypes(enum.Enum):
|
||||
"""MessageTypes."""
|
||||
|
||||
send = 1
|
||||
receive = 2
|
||||
|
||||
@ -27,5 +27,5 @@ class MessageInstanceModel(SpiffworkflowBaseDBModel):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
process_instance_id = db.Column(ForeignKey(ProcessInstanceModel.id), nullable=False) # type: ignore
|
||||
bpmn_element_id = db.Column(db.String(50), nullable=False)
|
||||
messsage_type = db.Column(Enum(MessageTypes), nullable=False)
|
||||
message_model = db.Column(ForeignKey(MessageModel.id), nullable=False)
|
||||
message_type = db.Column(Enum(MessageTypes), nullable=False)
|
||||
message_model_id = db.Column(ForeignKey(MessageModel.id), nullable=False)
|
||||
|
@ -1,5 +1,4 @@
|
||||
"""Message_model."""
|
||||
|
||||
from flask_bpmn.models.db import db
|
||||
from flask_bpmn.models.db import SpiffworkflowBaseDBModel
|
||||
|
||||
|
@ -20,7 +20,7 @@ class UserModel(SpiffworkflowBaseDBModel):
|
||||
username = db.Column(db.String(50), nullable=False, unique=True)
|
||||
uid = db.Column(db.String(50), unique=True)
|
||||
service = db.Column(db.String(50), nullable=False, unique=False)
|
||||
service_id = db.Column(db.String(), nullable=False, unique=False)
|
||||
service_id = db.Column(db.String(50), nullable=False, unique=False)
|
||||
name = db.Column(db.String(50))
|
||||
email = db.Column(db.String(50))
|
||||
user_group_assignments = relationship(UserGroupAssignmentModel, cascade="delete")
|
||||
|
@ -1,8 +1,7 @@
|
||||
"""Message_service."""
|
||||
|
||||
import flask
|
||||
from spiffworkflow_backend.models.user import UserModel
|
||||
|
||||
from spiffworkflow_backend.models.message_instance import MessageInstanceModel
|
||||
|
||||
class MessageServiceWithAppContext:
|
||||
"""Wrapper for Message Service.
|
||||
@ -15,7 +14,7 @@ class MessageServiceWithAppContext:
|
||||
"""__init__."""
|
||||
self.app = app
|
||||
|
||||
def process_queued_messages_with_app_context(self):
|
||||
def process_queued_messages_with_app_context(self) -> None:
|
||||
"""Since this runs in a scheduler, we need to specify the app context as well."""
|
||||
with self.app.app_context():
|
||||
MessageService().process_queued_messages()
|
||||
@ -24,9 +23,8 @@ class MessageServiceWithAppContext:
|
||||
class MessageService:
|
||||
"""MessageService."""
|
||||
|
||||
def process_queued_messages(self):
|
||||
def process_queued_messages(self) -> None:
|
||||
"""Process_queued_messages."""
|
||||
user = UserModel.query.first()
|
||||
print(f"user: {user}")
|
||||
# MessageInstanceModel.query
|
||||
# if
|
||||
queued_messages = MessageInstanceModel.query
|
||||
for queued_message in queued_messages:
|
||||
print(f"queued_message: {queued_message.id}")
|
||||
|
@ -1,7 +1,13 @@
|
||||
"""Base_test."""
|
||||
import json
|
||||
import time
|
||||
|
||||
from flask.app import Flask
|
||||
from flask_bpmn.api.api_error import ApiError
|
||||
from flask_bpmn.models.db import db
|
||||
|
||||
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
||||
from spiffworkflow_backend.models.user import UserModel
|
||||
from spiffworkflow_backend.services.user_service import UserService
|
||||
|
||||
@ -49,3 +55,23 @@ class BaseTest:
|
||||
# username, password
|
||||
# )
|
||||
# return public_access_token
|
||||
|
||||
def create_process_instance_from_process_model(
|
||||
self, process_model: ProcessModelInfo, status: str
|
||||
) -> ProcessInstanceModel:
|
||||
"""Create_process_instance_from_process_model."""
|
||||
user = self.find_or_create_user()
|
||||
current_time = round(time.time())
|
||||
process_instance = ProcessInstanceModel(
|
||||
status=status,
|
||||
process_initiator=user,
|
||||
process_model_identifier=process_model.id,
|
||||
process_group_identifier=process_model.process_group_id,
|
||||
updated_at_in_seconds=round(time.time()),
|
||||
start_in_seconds=current_time - (3600 * 1),
|
||||
end_in_seconds=current_time - (3600 * 1 - 20),
|
||||
bpmn_json=json.dumps({"ikey": "ivalue"}),
|
||||
)
|
||||
db.session.add(process_instance)
|
||||
db.session.commit()
|
||||
return process_instance
|
||||
|
@ -1,18 +1,13 @@
|
||||
"""User."""
|
||||
import json
|
||||
from time import time
|
||||
from typing import Dict
|
||||
from typing import Optional
|
||||
|
||||
from flask_bpmn.models.db import db
|
||||
from tests.spiffworkflow_backend.helpers.example_data import ExampleDataLoader
|
||||
|
||||
from spiffworkflow_backend.exceptions.process_entity_not_found_error import (
|
||||
ProcessEntityNotFoundError,
|
||||
)
|
||||
from spiffworkflow_backend.helpers.fixture_data import find_or_create_user
|
||||
from spiffworkflow_backend.models.process_group import ProcessGroup
|
||||
from spiffworkflow_backend.models.process_instance import ProcessInstanceModel
|
||||
from spiffworkflow_backend.models.process_model import ProcessModelInfo
|
||||
from spiffworkflow_backend.models.user import UserModel
|
||||
from spiffworkflow_backend.services.process_model_service import ProcessModelService
|
||||
@ -73,27 +68,6 @@ def load_test_spec(
|
||||
return spec
|
||||
|
||||
|
||||
def create_process_instance_from_process_model(
|
||||
process_model: ProcessModelInfo, status: str
|
||||
):
|
||||
"""Create_process_instance_from_process_model."""
|
||||
user = find_or_create_user()
|
||||
current_time = round(time.time())
|
||||
process_instance = ProcessInstanceModel(
|
||||
status=status,
|
||||
process_initiator=user,
|
||||
process_model_identifier=process_model.id,
|
||||
process_group_identifier=process_model.process_group_id,
|
||||
updated_at_in_seconds=round(time.time()),
|
||||
start_in_seconds=current_time - (3600 * 1),
|
||||
end_in_seconds=current_time - (3600 * 1 - 20),
|
||||
bpmn_json=json.dumps({"ikey": "ivalue"}),
|
||||
)
|
||||
db.session.add(process_instance)
|
||||
db.session.commit()
|
||||
return process_instance
|
||||
|
||||
|
||||
# def user_info_to_query_string(user_info, redirect_url):
|
||||
# query_string_list = []
|
||||
# items = user_info.items()
|
||||
|
@ -1,18 +1,44 @@
|
||||
"""test_message_service."""
|
||||
from spiffworkflow_backend.services.message_model import MessageModel
|
||||
from spiffworkflow_backend.services.message_instance import MessageInstanceModel
|
||||
from tests.spiffworkflow_backend.helpers.test_data import create_process_instance_from_process_model
|
||||
"""Test_message_service."""
|
||||
from flask import Flask
|
||||
from flask_bpmn.models.db import db
|
||||
from tests.spiffworkflow_backend.helpers.base_test import BaseTest
|
||||
|
||||
from spiffworkflow_backend.models.message_instance import MessageInstanceModel
|
||||
from spiffworkflow_backend.models.message_model import MessageModel
|
||||
from spiffworkflow_backend.services.message_service import MessageService
|
||||
from tests.spiffworkflow_backend.helpers.test_data import load_test_spec
|
||||
|
||||
|
||||
def test_can_send_message_to_waiting_message() -> None:
|
||||
"""Test_can_send_message_to_waiting_message."""
|
||||
message_model_name = "message_model_one"
|
||||
message_model = MessageModel(name=message_model_name)
|
||||
process_instance = create_process_instance_from_process_model
|
||||
class TestAuthentication(BaseTest):
|
||||
"""TestAuthentication."""
|
||||
|
||||
queued_message_send = MessageInstanceModel(
|
||||
process_instance_id=process_instance.id,
|
||||
bpmn_element_id="something",
|
||||
message_type="send",
|
||||
message_model=message_model,
|
||||
)
|
||||
def test_can_send_message_to_waiting_message(self, app: Flask, with_db_and_bpmn_file_cleanup: None) -> None:
|
||||
"""Test_can_send_message_to_waiting_message."""
|
||||
message_model_name = "message_model_one"
|
||||
message_model = MessageModel(name=message_model_name)
|
||||
db.session.add(message_model)
|
||||
db.session.commit()
|
||||
|
||||
process_model = load_test_spec('hello_world')
|
||||
process_instance_send = self.create_process_instance_from_process_model(process_model, 'waiting')
|
||||
process_instance_receive = self.create_process_instance_from_process_model(process_model, 'waiting')
|
||||
|
||||
queued_message_send = MessageInstanceModel(
|
||||
process_instance_id=process_instance_send.id,
|
||||
bpmn_element_id="something",
|
||||
message_type="send",
|
||||
message_model_id=message_model.id,
|
||||
)
|
||||
|
||||
queued_message_receive = MessageInstanceModel(
|
||||
process_instance_id=process_instance_receive.id,
|
||||
bpmn_element_id="something",
|
||||
message_type="receive",
|
||||
message_model_id=message_model.id,
|
||||
)
|
||||
|
||||
db.session.add(queued_message_send)
|
||||
db.session.add(queued_message_receive)
|
||||
db.session.commit()
|
||||
|
||||
MessageService().process_queued_messages()
|
||||
|
Loading…
x
Reference in New Issue
Block a user