test_plugins.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from django.conf import settings
  2. from django.test import Client, TestCase, override_settings
  3. from django.urls import reverse
  4. from extras.registry import registry
  5. from extras.tests.dummy_plugin.models import DummyModel
  6. from extras.tests.dummy_plugin.template_content import SiteContent
  7. class PluginTest(TestCase):
  8. def test_config(self):
  9. self.assertIn('extras.tests.dummy_plugin.DummyPluginConfig', settings.INSTALLED_APPS)
  10. def test_models(self):
  11. # Test saving an instance
  12. instance = DummyModel(name='Instance 1', number=100)
  13. instance.save()
  14. self.assertIsNotNone(instance.pk)
  15. # Test deleting an instance
  16. instance.delete()
  17. self.assertIsNone(instance.pk)
  18. def test_admin(self):
  19. # Test admin view URL resolution
  20. url = reverse('admin:dummy_plugin_dummymodel_add')
  21. self.assertEqual(url, '/admin/dummy_plugin/dummymodel/add/')
  22. def test_views(self):
  23. # Test URL resolution
  24. url = reverse('plugins:dummy_plugin:dummy_models')
  25. self.assertEqual(url, '/plugins/dummy-plugin/models/')
  26. # Test GET request
  27. client = Client()
  28. response = client.get(url)
  29. self.assertEqual(response.status_code, 200)
  30. @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
  31. def test_api_views(self):
  32. # Test URL resolution
  33. url = reverse('plugins-api:dummy_plugin-api:dummymodel-list')
  34. self.assertEqual(url, '/api/plugins/dummy-plugin/dummy-models/')
  35. # Test GET request
  36. client = Client()
  37. response = client.get(url)
  38. self.assertEqual(response.status_code, 200)
  39. def test_menu_items(self):
  40. """
  41. Check that plugin MenuItems and MenuButtons are registered.
  42. """
  43. self.assertIn('Dummy plugin', registry['plugin_menu_items'])
  44. menu_items = registry['plugin_menu_items']['Dummy plugin']
  45. self.assertEqual(len(menu_items), 2)
  46. self.assertEqual(len(menu_items[0].buttons), 2)
  47. def test_template_extensions(self):
  48. """
  49. Check that plugin TemplateExtensions are registered.
  50. """
  51. self.assertIn(SiteContent, registry['plugin_template_extensions']['dcim.site'])
  52. def test_middleware(self):
  53. """
  54. Check that plugin middleware is registered.
  55. """
  56. self.assertIn('extras.tests.dummy_plugin.middleware.DummyMiddleware', settings.MIDDLEWARE)