Closes #14914: Add test for automatic plugin dashboard widget registration (#22191)

This commit is contained in:
Martin Hauser 2026-05-14 17:28:31 +02:00 committed by GitHub
parent 329c041224
commit 919817e255
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 22 additions and 1 deletions

View File

@ -24,7 +24,7 @@ class DummyPluginConfig(PluginConfig):
def ready(self):
super().ready()
from . import jobs, webhook_callbacks # noqa: F401
from . import jobs, webhook_callbacks, widgets # noqa: F401
config = DummyPluginConfig

View File

@ -0,0 +1,11 @@
from extras.dashboard.utils import register_widget
from extras.dashboard.widgets import DashboardWidget
@register_widget
class DummyDashboardWidget(DashboardWidget):
default_title = 'Dummy Dashboard Widget'
description = 'A dummy dashboard widget for testing plugin registration.'
def render(self, request):
return 'Dummy dashboard widget content'

View File

@ -7,6 +7,7 @@ from django.urls import reverse
from core.choices import JobIntervalChoices
from core.models import ObjectType
from extras.dashboard.widgets import DashboardWidget
from netbox.graphql.schema import Query
from netbox.plugins.navigation import PluginMenu, PluginMenuButton, PluginMenuItem
from netbox.plugins.utils import get_plugin_config
@ -103,6 +104,15 @@ class PluginTestCase(TestCase):
self.assertIn(GlobalContent, registry['plugins']['template_extensions'][None])
self.assertIn(SiteContent, registry['plugins']['template_extensions']['dcim.site'])
def test_dashboard_widget(self):
"""
Check that plugin dashboard widgets are registered.
"""
self.assertIn('netbox.DummyDashboardWidget', registry['widgets'])
widget_class = registry['widgets']['netbox.DummyDashboardWidget']
self.assertTrue(issubclass(widget_class, DashboardWidget))
def test_registered_columns(self):
"""
Check that a plugin can register a custom column on a core model table.