"""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'])