mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
integration tests
This commit is contained in:
parent
2ce8d7d4b1
commit
9d1d8bbeaa
84
InvenTree/plugins/test_integration.py
Normal file
84
InvenTree/plugins/test_integration.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
""" Unit tests for integration plugins """
|
||||||
|
|
||||||
|
from django.test import TestCase
|
||||||
|
from django.conf import settings
|
||||||
|
from django.conf.urls import url, include
|
||||||
|
|
||||||
|
from plugins.integration import IntegrationPlugin, MixinBase, SettingsMixin, UrlsMixin, NavigationMixin
|
||||||
|
import part.templatetags.plugin_extras as plugin_tags
|
||||||
|
|
||||||
|
|
||||||
|
class BaseMixinDefinition:
|
||||||
|
def test_mixin_name(self):
|
||||||
|
# mixin name
|
||||||
|
self.assertEqual(self.mixin.registered_mixins[0]['key'], self.MIXIN_NAME)
|
||||||
|
# human name
|
||||||
|
self.assertEqual(self.mixin.registered_mixins[0]['human_name'], self.MIXIN_HUMAN_NAME)
|
||||||
|
# mixin check
|
||||||
|
# self.assertEqual(self.mixin.plugin_name(), self.MIXIN_ENABLE_CHECK)
|
||||||
|
|
||||||
|
|
||||||
|
class SettingsMixinTest(BaseMixinDefinition, TestCase):
|
||||||
|
MIXIN_HUMAN_NAME = 'Settings'
|
||||||
|
MIXIN_NAME = 'settings'
|
||||||
|
MIXIN_ENABLE_CHECK = 'has_settings'
|
||||||
|
|
||||||
|
TEST_SETTINGS = {'setting1': [1, 2, 3]}
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
class cls(SettingsMixin, IntegrationPlugin):
|
||||||
|
SETTINGS = self.TEST_SETTINGS
|
||||||
|
self.mixin = cls()
|
||||||
|
|
||||||
|
def test_function(self):
|
||||||
|
# settings variable
|
||||||
|
self.assertEqual(self.mixin.settings, self.TEST_SETTINGS)
|
||||||
|
# settings pattern
|
||||||
|
target_pattern = {f'PLUGIN_{self.mixin.plugin_name().upper()}_{key}': value for key, value in self.mixin.settings.items()}
|
||||||
|
self.assertEqual(self.mixin.settingspatterns, target_pattern)
|
||||||
|
|
||||||
|
|
||||||
|
class UrlsMixinTest(BaseMixinDefinition, TestCase):
|
||||||
|
MIXIN_HUMAN_NAME = 'URLs'
|
||||||
|
MIXIN_NAME = 'urls'
|
||||||
|
MIXIN_ENABLE_CHECK = 'has_urls'
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
class cls(UrlsMixin, IntegrationPlugin):
|
||||||
|
def test(self):
|
||||||
|
return 'ccc'
|
||||||
|
URLS = [url('test', test, name='test'),]
|
||||||
|
self.mixin = cls()
|
||||||
|
|
||||||
|
def test_function(self):
|
||||||
|
plg_name = self.mixin.plugin_name()
|
||||||
|
|
||||||
|
# base_url
|
||||||
|
target_url = f'{settings.PLUGIN_URL}/{plg_name}/'
|
||||||
|
self.assertEqual(self.mixin.base_url, target_url)
|
||||||
|
|
||||||
|
# urlpattern
|
||||||
|
target_pattern = url(f'^{plg_name}/', include((self.mixin.urls, plg_name)), name=plg_name)
|
||||||
|
self.assertEqual(self.mixin.urlpatterns.reverse_dict, target_pattern.reverse_dict)
|
||||||
|
|
||||||
|
|
||||||
|
class NavigationMixinTest(BaseMixinDefinition, TestCase):
|
||||||
|
MIXIN_HUMAN_NAME = 'Navigation Links'
|
||||||
|
MIXIN_NAME = 'navigation'
|
||||||
|
MIXIN_ENABLE_CHECK = 'has_naviation'
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
class cls(NavigationMixin, IntegrationPlugin):
|
||||||
|
NAVIGATION = [
|
||||||
|
{'name': 'aa', 'link': 'plugin:test:test_view'},
|
||||||
|
]
|
||||||
|
self.mixin = cls()
|
||||||
|
|
||||||
|
def test_function(self):
|
||||||
|
# check right configuration
|
||||||
|
self.assertEqual(self.mixin.navigation, [{'name': 'aa', 'link': 'plugin:test:test_view'},])
|
||||||
|
# check wrong links fails
|
||||||
|
with self.assertRaises(NotImplementedError):
|
||||||
|
class cls(NavigationMixin, IntegrationPlugin):
|
||||||
|
NAVIGATION = ['aa', 'aa']
|
||||||
|
cls()
|
Loading…
Reference in New Issue
Block a user