Skip to content

Commit 29701d0

Browse files
committed
test(backup): Support dashboards
Adds a number of tests for exportable Dashboard* Sentry models. Issue: getsentry/team-ospo#156
1 parent d4a0ce2 commit 29701d0

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

tests/sentry/backup/test_models.py

+38
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
AlertRuleTriggerAction,
1616
AlertRuleTriggerExclusion,
1717
)
18+
from sentry.models.dashboard import Dashboard, DashboardTombstone
19+
from sentry.models.dashboard_widget import (
20+
DashboardWidget,
21+
DashboardWidgetQuery,
22+
DashboardWidgetTypes,
23+
)
1824
from sentry.models.environment import Environment
1925
from sentry.models.organization import Organization
2026
from sentry.monitors.models import Monitor, MonitorEnvironment, MonitorType, ScheduleType
@@ -92,6 +98,15 @@ def import_export_then_validate(self) -> JSONData:
9298

9399
return actual
94100

101+
def create_dashboard(self):
102+
"""Re-usable dashboard object for test cases."""
103+
104+
user = self.create_user()
105+
org = self.create_organization(owner=user)
106+
return Dashboard.objects.create(
107+
title="Dashboard 1", created_by_id=user.id, organization=org
108+
)
109+
95110
def create_monitor(self):
96111
"""Re-usable monitor object for test cases."""
97112

@@ -126,6 +141,29 @@ def test_alert_rule_trigger(self):
126141
self.create_alert_rule_trigger_action(alert_rule_trigger=trigger)
127142
return self.import_export_then_validate()
128143

144+
@targets_models(Dashboard)
145+
def test_dashboard(self):
146+
self.create_dashboard()
147+
return self.import_export_then_validate()
148+
149+
@targets_models(DashboardTombstone)
150+
def test_dashboard_tombstone(self):
151+
DashboardTombstone.objects.create(organization=self.organization, slug="test-tombstone")
152+
return self.import_export_then_validate()
153+
154+
@targets_models(DashboardWidget, DashboardWidgetQuery)
155+
def test_dashboard_widget(self):
156+
dashboard = self.create_dashboard()
157+
widget = DashboardWidget.objects.create(
158+
dashboard=dashboard,
159+
order=1,
160+
title="Test Widget",
161+
display_type=0,
162+
widget_type=DashboardWidgetTypes.DISCOVER,
163+
)
164+
DashboardWidgetQuery.objects.create(widget=widget, order=1, name="Test Query")
165+
return self.import_export_then_validate()
166+
129167
@targets_models(Environment)
130168
def test_environment(self):
131169
self.create_environment()

0 commit comments

Comments
 (0)