redash/tests/handlers/test_widgets.py
Arik Fraimovich 2dff8b9a00
Black support for the Python codebase (#4297)
* Apply black formatting

* Add auto formatting when committing to master

* Update CONTRIBUTING.md re. Black & Prettier
2019-12-11 13:54:29 +02:00

69 lines
2.1 KiB
Python

from tests import BaseTestCase
from redash import models
class WidgetAPITest(BaseTestCase):
def create_widget(self, dashboard, visualization, width=1):
data = {
"visualization_id": visualization.id,
"dashboard_id": dashboard.id,
"options": {},
"width": width,
}
rv = self.make_request("post", "/api/widgets", data=data)
return rv
def test_create_widget(self):
dashboard = self.factory.create_dashboard()
vis = self.factory.create_visualization()
rv = self.create_widget(dashboard, vis)
self.assertEqual(rv.status_code, 200)
def test_wont_create_widget_for_visualization_you_dont_have_access_to(self):
dashboard = self.factory.create_dashboard()
vis = self.factory.create_visualization()
ds = self.factory.create_data_source(group=self.factory.create_group())
vis.query_rel.data_source = ds
models.db.session.add(vis.query_rel)
data = {
"visualization_id": vis.id,
"dashboard_id": dashboard.id,
"options": {},
"width": 1,
}
rv = self.make_request("post", "/api/widgets", data=data)
self.assertEqual(rv.status_code, 403)
def test_create_text_widget(self):
dashboard = self.factory.create_dashboard()
data = {
"visualization_id": None,
"text": "Sample text.",
"dashboard_id": dashboard.id,
"options": {},
"width": 2,
}
rv = self.make_request("post", "/api/widgets", data=data)
self.assertEqual(rv.status_code, 200)
self.assertEqual(rv.json["text"], "Sample text.")
def test_delete_widget(self):
widget = self.factory.create_widget()
rv = self.make_request("delete", "/api/widgets/{0}".format(widget.id))
self.assertEqual(rv.status_code, 200)
dashboard = models.Dashboard.get_by_slug_and_org(
widget.dashboard.slug, widget.dashboard.org
)
self.assertEqual(dashboard.widgets.count(), 0)