mirror of
https://github.com/valitydev/redash.git
synced 2024-11-07 01:25:16 +00:00
67 lines
2.0 KiB
Python
67 lines
2.0 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.assertEquals(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.assertEquals(rv.status_code, 200)
|
|
self.assertEquals(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.assertEquals(rv.status_code, 200)
|
|
dashboard = models.Dashboard.get_by_slug_and_org(widget.dashboard.slug, widget.dashboard.org)
|
|
self.assertEquals(dashboard.widgets.count(), 0)
|