diff --git a/colab/widgets/tests/test_widget_manager.py b/colab/widgets/tests/test_widget_manager.py index b9402f7..3f8a9a7 100644 --- a/colab/widgets/tests/test_widget_manager.py +++ b/colab/widgets/tests/test_widget_manager.py @@ -4,9 +4,48 @@ from colab.widgets.widget_manager import WidgetManager, Widget class WidgetManagerTest(TestCase): + html_content = "

test

" + widget_area = 'profile' + widget_id = 'widget_id' + + def custom_widget_instance(self, content): + class CustomWidget(Widget): + identifier = 'widget_id' + def generate_content(self, request=None): + self.content = content + return CustomWidget() + + def setUp(self): + WidgetManager.register_widget(self.widget_area, \ + self.custom_widget_instance(self.html_content)) + + def tearDown(self): + WidgetManager.unregister_widget(self.widget_area, self.widget_id) + def test_add_widgets_to_key_area(self): - area = 'profile' - WidgetManager.register_widget(area, Widget()) + self.assertEqual(len(WidgetManager.get_widgets(self.widget_area)), 1) + + def test_remove_widgets_in_key_area(self): + area = 'admin' + widget_instance = self.custom_widget_instance(self.html_content) + + WidgetManager.register_widget(area, widget_instance) + WidgetManager.unregister_widget(area, self.widget_id) + + self.assertEqual(len(WidgetManager.get_widgets(area)), 0) + + def test_get_body(self): + customWidget = self.custom_widget_instance(self.html_content) + + customWidget.generate_content() + self.assertEqual(customWidget.get_body(), "

test

") + + def test_get_header(self): + customWidget = self.custom_widget_instance(self.html_content) - self.assertEqual(len(WidgetManager.get_widgets(area)), 1) + customWidget.generate_content() + self.assertEqual(customWidget.get_header(), "") + def test_generate_content(self): + widgets = WidgetManager.get_widgets(self.widget_area) + self.assertEqual(widgets[0].content, self.html_content) diff --git a/colab/widgets/widget_manager.py b/colab/widgets/widget_manager.py index 1cd1c26..9a3ee98 100644 --- a/colab/widgets/widget_manager.py +++ b/colab/widgets/widget_manager.py @@ -3,7 +3,6 @@ from django.utils.safestring import mark_safe class Widget(object): identifier = None name = None - default_url = None content = '' def get_body(self): @@ -43,6 +42,13 @@ class WidgetManager(object): WidgetManager.widget_categories[category].append(widget) @staticmethod + def unregister_widget(category, widget_identifier): + if WidgetManager.widget_categories.has_key(category): + for widget in WidgetManager.widget_categories[category]: + if widget.identifier == widget_identifier: + WidgetManager.widget_categories[category].remove(widget) + + @staticmethod def get_widgets(category, request=None): if not WidgetManager.widget_categories.has_key(category): return [] -- libgit2 0.21.2