Skip to content

ref(ACI): Update evaluate_value return #92439

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jun 2, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/sentry/workflow_engine/models/data_condition.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,10 @@ def evaluate_value(self, value: T) -> DataConditionResult:
)
return None

return self.get_condition_result() if result else None
if isinstance(result, bool):
return self.get_condition_result() if result else None

return result


def is_slow_condition(condition: DataCondition) -> bool:
Expand Down
30 changes: 28 additions & 2 deletions tests/sentry/workflow_engine/models/test_data_condition.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
from enum import IntEnum
from unittest import mock

import pytest

from sentry.testutils.cases import TestCase
from sentry.workflow_engine.models.data_condition import Condition, DataConditionEvaluationException
from sentry.workflow_engine.types import DetectorPriorityLevel
from tests.sentry.workflow_engine.test_base import DataConditionHandlerMixin
from tests.sentry.workflow_engine.test_base import BaseWorkflowTest, DataConditionHandlerMixin


class MockDataConditionEnum(IntEnum):
FOO = 1
BAR = 2


class GetConditionResultTest(TestCase):
Expand Down Expand Up @@ -38,14 +44,34 @@ def test_boolean(self):
assert dc.get_condition_result() is True


class EvaluateValueTest(DataConditionHandlerMixin, TestCase):
class EvaluateValueTest(DataConditionHandlerMixin, BaseWorkflowTest):
def test(self):
dc = self.create_data_condition(
type=Condition.GREATER, comparison=1.0, condition_result=DetectorPriorityLevel.HIGH
)
assert dc.evaluate_value(2) == DetectorPriorityLevel.HIGH
assert dc.evaluate_value(1) is None

def test_dict_comparison_result(self):
def evaluate_value(
value: int, comparison: dict[str, DetectorPriorityLevel]
) -> DetectorPriorityLevel:
return (
DetectorPriorityLevel.HIGH
if comparison["baz"].value > 1
else DetectorPriorityLevel.OK
)

dc = self.setup_condition_mocks(
evaluate_value, ["sentry.workflow_engine.models.data_condition"]
)
dc.update(comparison={"baz": MockDataConditionEnum.BAR})
assert dc.evaluate_value(2) == DetectorPriorityLevel.HIGH

dc.update(comparison={"baz": MockDataConditionEnum.FOO})
assert dc.evaluate_value(0) == DetectorPriorityLevel.OK
self.teardown_condition_mocks()

def test_bad_condition(self):
with pytest.raises(ValueError):
# Raises ValueError because the condition is invalid
Expand Down
Loading