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 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.' )