Browse Source

fix(outcomes) Fix error on empty interval (#46082)

Handle none better than before.

Fixes SENTRY-ZYB
Mark Story 2 years ago
parent
commit
b4dae8ba22
2 changed files with 17 additions and 1 deletions
  1. 2 1
      src/sentry/snuba/outcomes.py
  2. 15 0
      tests/sentry/snuba/test_outcomes.py

+ 2 - 1
src/sentry/snuba/outcomes.py

@@ -282,9 +282,10 @@ class QueryDefinition:
         date_params = {
             "start": start,
             "end": end,
-            "interval": interval,
+            "interval": interval or "",
             "statsPeriod": stats_period,
         }
+
         self.start, self.end, self.rollup = get_constrained_date_range(
             date_params, allowed_resolution
         )

+ 15 - 0
tests/sentry/snuba/test_outcomes.py

@@ -1,5 +1,8 @@
+from datetime import timedelta
+
 import pytest
 from django.http import QueryDict
+from django.utils import timezone
 from snuba_sdk.column import Column
 from snuba_sdk.conditions import Condition, Op
 from snuba_sdk.function import Function
@@ -8,6 +11,7 @@ from sentry.constants import DataCategory
 from sentry.search.utils import InvalidQuery
 from sentry.snuba.outcomes import InvalidField, QueryDefinition
 from sentry.testutils import TestCase
+from sentry.testutils.helpers.datetime import iso_format
 from sentry.utils.outcomes import Outcome
 
 
@@ -132,3 +136,14 @@ class OutcomesQueryDefinitionTests(TestCase):
                 "statsPeriod=4d&interval=1d&groupBy=category&key_id=INVALID&field=sum(quantity)",
                 {"organization_id": 1},
             )
+
+    def test_start_and_end_no_interval(self):
+        start = timezone.now()
+        end = start + timedelta(days=1)
+        query = _make_query(
+            f"groupBy=category&field=sum(quantity)&start={iso_format(start)}&end={iso_format(end)}",
+            {"organization_id": 1},
+        )
+        assert query.start
+        assert query.end
+        assert query.rollup == 3600