mirror of
https://github.com/getredash/redash.git
synced 2025-12-19 17:37:19 -05:00
Add min/max/first selector for alerts (#7076)
This commit is contained in:
@@ -49,7 +49,9 @@ class TestAlertEvaluate(BaseTestCase):
|
||||
def create_alert(self, results, column="foo", value="1"):
|
||||
result = self.factory.create_query_result(data=results)
|
||||
query = self.factory.create_query(latest_query_data_id=result.id)
|
||||
alert = self.factory.create_alert(query_rel=query, options={"op": "equals", "column": column, "value": value})
|
||||
alert = self.factory.create_alert(
|
||||
query_rel=query, options={"selector": "first", "op": "equals", "column": column, "value": value}
|
||||
)
|
||||
return alert
|
||||
|
||||
def test_evaluate_triggers_alert_when_equal(self):
|
||||
@@ -69,6 +71,24 @@ class TestAlertEvaluate(BaseTestCase):
|
||||
alert = self.create_alert(results)
|
||||
self.assertEqual(alert.evaluate(), Alert.UNKNOWN_STATE)
|
||||
|
||||
def test_evaluates_correctly_with_max_selector(self):
|
||||
results = {"rows": [{"foo": 1}, {"foo": 2}], "columns": [{"name": "foo", "type": "STRING"}]}
|
||||
alert = self.create_alert(results)
|
||||
alert.options["selector"] = "max"
|
||||
self.assertEqual(alert.evaluate(), Alert.OK_STATE)
|
||||
|
||||
def test_evaluates_correctly_with_min_selector(self):
|
||||
results = {"rows": [{"foo": 2}, {"foo": 1}], "columns": [{"name": "foo", "type": "STRING"}]}
|
||||
alert = self.create_alert(results)
|
||||
alert.options["selector"] = "min"
|
||||
self.assertEqual(alert.evaluate(), Alert.TRIGGERED_STATE)
|
||||
|
||||
def test_evaluates_correctly_with_first_selector(self):
|
||||
results = {"rows": [{"foo": 1}, {"foo": 2}], "columns": [{"name": "foo", "type": "STRING"}]}
|
||||
alert = self.create_alert(results)
|
||||
alert.options["selector"] = "first"
|
||||
self.assertEqual(alert.evaluate(), Alert.TRIGGERED_STATE)
|
||||
|
||||
|
||||
class TestNextState(TestCase):
|
||||
def test_numeric_value(self):
|
||||
@@ -94,7 +114,9 @@ class TestAlertRenderTemplate(BaseTestCase):
|
||||
def create_alert(self, results, column="foo", value="5"):
|
||||
result = self.factory.create_query_result(data=results)
|
||||
query = self.factory.create_query(latest_query_data_id=result.id)
|
||||
alert = self.factory.create_alert(query_rel=query, options={"op": "equals", "column": column, "value": value})
|
||||
alert = self.factory.create_alert(
|
||||
query_rel=query, options={"selector": "first", "op": "equals", "column": column, "value": value}
|
||||
)
|
||||
return alert
|
||||
|
||||
def test_render_custom_alert_template(self):
|
||||
@@ -102,6 +124,7 @@ class TestAlertRenderTemplate(BaseTestCase):
|
||||
custom_alert = """
|
||||
<pre>
|
||||
ALERT_STATUS {{ALERT_STATUS}}
|
||||
ALERT_SELECTOR {{ALERT_SELECTOR}}
|
||||
ALERT_CONDITION {{ALERT_CONDITION}}
|
||||
ALERT_THRESHOLD {{ALERT_THRESHOLD}}
|
||||
ALERT_NAME {{ALERT_NAME}}
|
||||
@@ -116,6 +139,7 @@ class TestAlertRenderTemplate(BaseTestCase):
|
||||
expected = """
|
||||
<pre>
|
||||
ALERT_STATUS UNKNOWN
|
||||
ALERT_SELECTOR first
|
||||
ALERT_CONDITION equals
|
||||
ALERT_THRESHOLD 5
|
||||
ALERT_NAME %s
|
||||
|
||||
Reference in New Issue
Block a user