Skip to content

Commit d00396a

Browse files
authored
fix(dashboards-comparison): check aggregates and columns fields in case fields is empty (#96474)
There are a couple widget cases where there is nothing in `fields` array but have something in the `aggregates` and `columns` array. I've merged all of the lists to ensure we have all the fields in the widget.
1 parent 58e3caf commit d00396a

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/sentry/discover/compare_tables.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,21 @@ def compare_tables_for_dashboard_widget_queries(
150150
"query": None,
151151
}
152152

153-
fields = widget_query.fields
153+
aggregates = widget_query.aggregates
154+
columns = widget_query.columns
155+
query_fields = widget_query.fields
156+
157+
fields_set = set()
158+
159+
if aggregates:
160+
fields_set.update(aggregates)
161+
if columns:
162+
fields_set.update(columns)
163+
if query_fields:
164+
fields_set.update(query_fields)
165+
166+
fields = list(fields_set)
167+
154168
if len(fields) == 0:
155169
with sentry_sdk.isolation_scope() as scope:
156170
scope.set_tag("passed", False)

tests/sentry/discover/test_compare_tables.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -358,3 +358,25 @@ def test_compare_widget_query_with_no_metrics_data(self) -> None:
358358

359359
comparison_result = compare_tables_for_dashboard_widget_queries(widget_query)
360360
assert comparison_result["passed"] is True
361+
362+
def test_compare_widget_query_with_no_fields(self) -> None:
363+
widget = DashboardWidget.objects.create(
364+
dashboard=self.dashboard,
365+
title="Test No Fields Widget",
366+
order=1,
367+
display_type=DashboardWidgetDisplayTypes.TABLE,
368+
widget_type=DashboardWidgetTypes.TRANSACTION_LIKE,
369+
)
370+
371+
widget_query = DashboardWidgetQuery.objects.create(
372+
widget=widget,
373+
name="",
374+
order=0,
375+
conditions="",
376+
aggregates=["count()"],
377+
columns=[],
378+
fields=[],
379+
)
380+
381+
comparison_result = compare_tables_for_dashboard_widget_queries(widget_query)
382+
assert comparison_result["passed"] is True

0 commit comments

Comments
 (0)