diff --git a/InvenTree/web/tests.py b/InvenTree/web/tests.py new file mode 100644 index 0000000000..7822781f80 --- /dev/null +++ b/InvenTree/web/tests.py @@ -0,0 +1,68 @@ +"""Tests for PUI backend stuff.""" +import json +import os +from pathlib import Path +from unittest import mock + +from InvenTree.config import get_frontend_settings +from InvenTree.unit_test import InvenTreeTestCase + +from .templatetags import spa_helper + + +class TemplateTagTest(InvenTreeTestCase): + """Tests for the template tag code.""" + + def assertSettings(self, settings_data): + """Helper to test if needed args are in the settings.""" + self.assertTrue('debug' in settings_data) + self.assertTrue('server_list' in settings_data) + self.assertTrue('show_server_selector' in settings_data) + self.assertTrue('environment' in settings_data) + + def test_spa_bundle(self): + """Test the 'spa_bundle' template tag""" + resp = spa_helper.spa_bundle() + self.assertTrue(resp.startswith('window.INVENTREE_SETTINGS=')) + settings_data_string = resp.replace('', '') + settings_data = json.loads(settings_data_string) + self.assertSettings(settings_data) + + def test_get_frontend_settings(self): + """Test frontend settings retrieval.""" + # Normal run for priming + rsp = get_frontend_settings() + self.assertSettings(rsp) + + # No base_url + envs = {'INVENTREE_PUI_URL_BASE': ''} + with mock.patch.dict(os.environ, envs): + rsp = get_frontend_settings() + self.assertSettings(rsp) + + # No debug, no serverlist -> selector + rsp = get_frontend_settings(False) + self.assertSettings(rsp) + self.assertTrue(rsp['show_server_selector']) + + # No debug, serverlist -> no selector + envs = {'INVENTREE_PUI_SETTINGS': json.dumps({'server_list': ['aa', 'bb',]})} + with mock.patch.dict(os.environ, envs): + rsp = get_frontend_settings(False) + self.assertFalse('show_server_selector' in rsp) + self.assertEqual(rsp['server_list'], ['aa', 'bb',])