Skip to content

Commit df1e3d4

Browse files
committed
Replace models.BaseOperator to Task SDK one for Atlassian
Follow-up of #52292
1 parent 713ddaa commit df1e3d4

File tree

3 files changed

+25
-11
lines changed

3 files changed

+25
-11
lines changed

providers/atlassian/jira/src/airflow/providers/atlassian/jira/operators/jira.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
from collections.abc import Callable, Sequence
2121
from typing import TYPE_CHECKING, Any
2222

23-
from airflow.models import BaseOperator
2423
from airflow.providers.atlassian.jira.hooks.jira import JiraHook
24+
from airflow.providers.atlassian.jira.version_compat import BaseOperator
2525

2626
if TYPE_CHECKING:
2727
from airflow.utils.context import Context
@@ -80,7 +80,7 @@ def execute(self, context: Context) -> Any:
8080
jira_result: Any = getattr(resource, self.method_name)(**self.jira_method_args)
8181

8282
output = jira_result.get("id", None) if isinstance(jira_result, dict) else None
83-
self.xcom_push(context, key="id", value=output)
83+
context["task_instance"].xcom_push(key="id", value=output)
8484

8585
if self.result_processor:
8686
return self.result_processor(context, jira_result)

providers/atlassian/jira/src/airflow/providers/atlassian/jira/version_compat.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,15 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
3333

3434

3535
AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
36+
37+
if AIRFLOW_V_3_0_PLUS:
38+
from airflow.sdk import BaseOperator, BaseSensorOperator
39+
else:
40+
from airflow.models import BaseOperator
41+
from airflow.sensors.base import BaseSensorOperator
42+
43+
__all__ = [
44+
"AIRFLOW_V_3_0_PLUS",
45+
"BaseOperator",
46+
"BaseSensorOperator",
47+
]

providers/atlassian/jira/tests/unit/atlassian/jira/operators/test_jira.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,11 @@ def setup_test_cases(self, monkeypatch):
6161
)
6262
),
6363
)
64-
with mock.patch("airflow.models.baseoperator.BaseOperator.xcom_push", return_value=None) as m:
65-
self.mocked_xcom_push = m
66-
yield
64+
# Mock task instance for xcom_push
65+
mock_ti = mock.Mock()
66+
mock_ti.xcom_push = mock.Mock(return_value=None)
67+
self.mock_ti = mock_ti
68+
self.mock_context = {"task_instance": mock_ti}
6769

6870
def test_operator_init_with_optional_args(self):
6971
jira_operator = JiraOperator(task_id="jira_list_issue_types", jira_method="issue_types")
@@ -80,11 +82,11 @@ def test_project_issue_count(self, mocked_jira_client):
8082
jira_method_args={"project": "ABC"},
8183
)
8284

83-
op.execute({})
85+
op.execute(self.mock_context) # type: ignore[arg-type]
8486

8587
assert mocked_jira_client.called
8688
assert mocked_jira_client.return_value.get_project_issues_count.called
87-
self.mocked_xcom_push.assert_called_once_with(mock.ANY, key="id", value=None)
89+
self.mock_ti.xcom_push.assert_called_once_with(key="id", value=None)
8890

8991
def test_issue_search(self, mocked_jira_client):
9092
jql_str = "issuekey=TEST-1226"
@@ -95,11 +97,11 @@ def test_issue_search(self, mocked_jira_client):
9597
jira_method_args={"jql": jql_str, "limit": "1"},
9698
)
9799

98-
op.execute({})
100+
op.execute(self.mock_context) # type: ignore[arg-type]
99101

100102
assert mocked_jira_client.called
101103
assert mocked_jira_client.return_value.jql_get_list_of_tickets.called
102-
self.mocked_xcom_push.assert_called_once_with(mock.ANY, key="id", value="911539")
104+
self.mock_ti.xcom_push.assert_called_once_with(key="id", value="911539")
103105

104106
def test_update_issue(self, mocked_jira_client):
105107
mocked_jira_client.return_value.issue_add_comment.return_value = MINIMAL_TEST_TICKET
@@ -110,8 +112,8 @@ def test_update_issue(self, mocked_jira_client):
110112
jira_method_args={"issue_key": MINIMAL_TEST_TICKET.get("key"), "comment": "this is test comment"},
111113
)
112114

113-
op.execute({})
115+
op.execute(self.mock_context) # type: ignore[arg-type]
114116

115117
assert mocked_jira_client.called
116118
assert mocked_jira_client.return_value.issue_add_comment.called
117-
self.mocked_xcom_push.assert_called_once_with(mock.ANY, key="id", value="911539")
119+
self.mock_ti.xcom_push.assert_called_once_with(key="id", value="911539")

0 commit comments

Comments
 (0)