Adding integration tests for workflow engine
This commit is contained in:
@@ -5,7 +5,7 @@ from typing import Any, Generator
|
|||||||
|
|
||||||
from components.admin.admin_db_manager import AdminDbManager
|
from components.admin.admin_db_manager import AdminDbManager
|
||||||
from core.Expando import Expando
|
from core.Expando import Expando
|
||||||
from core.jira import Jira
|
from core.jira import Jira, JiraRequestTypes
|
||||||
from core.preprocessor import PlainTextPreprocessor
|
from core.preprocessor import PlainTextPreprocessor
|
||||||
from core.utils import UnreferencedNamesVisitor
|
from core.utils import UnreferencedNamesVisitor
|
||||||
from utils.Datahelper import DataHelper
|
from utils.Datahelper import DataHelper
|
||||||
@@ -96,11 +96,11 @@ class JiraDataProducer(DataProducer):
|
|||||||
|
|
||||||
logger = logging.getLogger("DataProcessor.Producer.Jira")
|
logger = logging.getLogger("DataProcessor.Producer.Jira")
|
||||||
|
|
||||||
def __init__(self, session, settings_manager, component_id, request_type='issues', request='', fields=None):
|
def __init__(self, session, settings_manager, component_id, request_type='search', request='', fields=None):
|
||||||
super().__init__(component_id)
|
super().__init__(component_id)
|
||||||
self._session = session
|
self._session = session
|
||||||
self.settings_manager = settings_manager
|
self.settings_manager = settings_manager
|
||||||
self.request_type = request_type
|
self.request_type = request_type.value if isinstance(request_type, JiraRequestTypes) else request_type
|
||||||
self.request = request
|
self.request = request
|
||||||
self.fields = fields
|
self.fields = fields
|
||||||
self.db = AdminDbManager(session, settings_manager).jira
|
self.db = AdminDbManager(session, settings_manager).jira
|
||||||
|
|||||||
78
tests/test_workflow_engine_integration.py
Normal file
78
tests/test_workflow_engine_integration.py
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
import pytest
|
||||||
|
from unittest.mock import Mock, patch
|
||||||
|
from core.Expando import Expando
|
||||||
|
|
||||||
|
from core.jira import JiraRequestTypes
|
||||||
|
from core.settings_management import SettingsManager, MemoryDbEngine
|
||||||
|
from workflow.engine import JiraDataProducer, TableDataProducer
|
||||||
|
|
||||||
|
JIRA_IMPORT_PATH = "workflow.engine.Jira"
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_jira_search_1():
|
||||||
|
with patch(JIRA_IMPORT_PATH) as mock_jira_class:
|
||||||
|
mock_jira_instance = Mock()
|
||||||
|
mock_jira_instance.search.return_value = [
|
||||||
|
Expando({
|
||||||
|
"key": "TEST-1",
|
||||||
|
"fields": {
|
||||||
|
"summary": "Test Issue",
|
||||||
|
"status": {"name": "Open"},
|
||||||
|
"assignee": {"displayName": "Test User"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]
|
||||||
|
mock_jira_class.return_value = mock_jira_instance
|
||||||
|
|
||||||
|
yield mock_jira_instance # This allows us to access the mock instance in our tests
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_jira_error():
|
||||||
|
with patch(JIRA_IMPORT_PATH) as mock_jira_class:
|
||||||
|
mock_jira_instance = Mock()
|
||||||
|
mock_jira_instance.search.side_effect = Exception("Jira API Error")
|
||||||
|
mock_jira_class.return_value = mock_jira_instance
|
||||||
|
|
||||||
|
yield mock_jira_instance
|
||||||
|
|
||||||
|
|
||||||
|
def get_jira_patch(jp: JiraDataProducer):
|
||||||
|
# Create and configure the mock instance
|
||||||
|
mock_jira_instance = Mock()
|
||||||
|
if jp.request_type == JiraRequestTypes.Search.value:
|
||||||
|
mock_jira_instance.search.return_value = [
|
||||||
|
Expando({
|
||||||
|
"key": "TEST-1",
|
||||||
|
"fields": {
|
||||||
|
"summary": "Test Issue",
|
||||||
|
"status": {"name": "Open"},
|
||||||
|
"assignee": {"displayName": "Test User"}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
raise ValueError("Unsupported request type")
|
||||||
|
|
||||||
|
return patch(JIRA_IMPORT_PATH, return_value=mock_jira_instance)
|
||||||
|
|
||||||
|
|
||||||
|
def jira_producer(session, request_type, request, fields=None):
|
||||||
|
return JiraDataProducer(session,
|
||||||
|
SettingsManager(MemoryDbEngine()),
|
||||||
|
"component_id",
|
||||||
|
request_type=request_type,
|
||||||
|
request=request,
|
||||||
|
fields=fields)
|
||||||
|
|
||||||
|
|
||||||
|
def test_i_can_produce_jira_search(session):
|
||||||
|
data = {}
|
||||||
|
jp = jira_producer(session, JiraRequestTypes.Search, "project=key1")
|
||||||
|
|
||||||
|
with get_jira_patch(jp):
|
||||||
|
res = list(jp.process(data))
|
||||||
|
|
||||||
|
assert len(res) == 1
|
||||||
|
assert res[0].key == "TEST-1"
|
||||||
Reference in New Issue
Block a user