def test_render_widget_loads_widget_type(self): test_widget = TestWidget(context={'is_test_widget': True}) register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) context = self.get_mock_render_to_string_parameter(mock, 'context') self.assertTrue(context['is_test_widget'])
def test_render_widget_uses_template_name(self): test_widget = TestWidget(template_name='test-widget-template') register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) template_name = self.get_mock_render_to_string_parameter( mock, 'template_name' ) self.assertEqual(template_name, 'test-widget-template')
def test_render_widget_without_get_ctx_data(self): """ Test render widget accepts widget types that do not implement get_context_data. """ test_widget = TestWidgetNoContextData() register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) context = self.get_mock_render_to_string_parameter(mock, 'context') self.assertEqual(context, {})
def test_render_widget_calls_get_context_data(self): """ Test render widget calls get_context_data with the widget instance settings. """ test_widget = TestWidget() register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget', {'test': 'value'}) with patch(self.render_to_string_method) as mock: render_widget(widget_instance) context = self.get_mock_render_to_string_parameter(mock, 'context') self.assertEqual(context['kwargs'], {'test': 'value'})
def test_render_widget_without_template_name(self): """ Test render widget uses a default template when template_name is missing from the widget type object """ test_widget = TestWidgetNoTemplateName() register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) template_name = self.get_mock_render_to_string_parameter( mock, 'template_name' ) self.assertEqual( template_name, 'dashboard/widget-error.html' )
def test_render_widget_widgeterror_exception_includes_error_message(self): """ Test that a widget which raises a WidgetError exception will display the error message provided in the exception. """ test_widget = TestWidgetRaisesWidgetError() register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) template_name = self.get_mock_render_to_string_parameter( mock, 'template_name' ) context = self.get_mock_render_to_string_parameter( mock, 'context' ) self.assertEqual( template_name, 'dashboard/widget-error.html' ) self.assertEqual( str(context['error']), 'message raised from get_context_data' )
def setUp(self): """ Register a number of widget types we can use for out tests """ register_widget('test-widget-1', TestWidget( ['file.js', 'app/file.js'], ['file.css', 'app/file.css'] )) register_widget('test-widget-2', TestWidget( ['some.js', 'file.js', 'app2/file.js'], ['some.css', 'file.css', 'app2/file.css'] )) register_widget('test-widget-3', TestWidget()) register_widget('test-widget-4', TestWidget())
def test_render_widget_exception_includes_generic_message(self): """ Test that a widget which raises a generic exception will display a generic error message, not the content of the exception """ test_widget = TestWidgetRaisesException() register_widget('test-widget', test_widget) widget_instance = MockWidgetInstance('test-widget') with patch(self.render_to_string_method) as mock: render_widget(widget_instance) template_name = self.get_mock_render_to_string_parameter( mock, 'template_name' ) context = self.get_mock_render_to_string_parameter( mock, 'context' ) self.assertEqual( template_name, 'dashboard/widget-error.html' ) self.assertEqual( context['error'], 'Widget error. See error logs.' )
from dashboard.widget_pool import register_widget from hid.tabs.view_and_edit_table import ViewAndEditTableTab from hid.widgets.term_count_chart import TermCountChartWidget from hid.widgets.table import TableWidget from tabbed_page.tab_pool import register_tab register_tab('view-and-edit-table', ViewAndEditTableTab()) register_widget('term-count-chart', TermCountChartWidget()) register_widget('table-widget', TableWidget())
def test_registering_twice_overrides_existing_widget(self): test_widget = TestWidget() register_widget('test-widget', test_widget) test_widget_2 = TestWidget() register_widget('test-widget', test_widget_2) self.assertEqual(get_widget('test-widget'), test_widget_2)
def test_widget_is_registered(self): test_widget = TestWidget() register_widget('test-widget', test_widget) self.assertEqual(get_widget('test-widget'), test_widget)