100 lines
3.1 KiB
Python
100 lines
3.1 KiB
Python
#! python3 # noqa E265
|
|
|
|
"""
|
|
Usage from the repo root folder:
|
|
|
|
.. code-block:: bash
|
|
|
|
# for whole tests
|
|
python -m unittest tests.qgis.test_plg_preferences
|
|
# for specific test
|
|
python -m unittest tests.qgis.test_plg_preferences.TestPlgPreferences.test_plg_preferences_structure
|
|
"""
|
|
|
|
# standard library
|
|
import os
|
|
from unittest.mock import patch
|
|
|
|
from qgis.testing import unittest
|
|
|
|
# project
|
|
from gn_tools.__about__ import __version__
|
|
from gn_tools.toolbelt.preferences import (
|
|
PREFIX_ENV_VARIABLE,
|
|
PlgOptionsManager,
|
|
PlgSettingsStructure,
|
|
)
|
|
|
|
# ############################################################################
|
|
# ########## Classes #############
|
|
# ################################
|
|
|
|
|
|
class TestPlgPreferences(unittest.TestCase):
|
|
def test_plg_preferences_structure(self):
|
|
"""Test settings types and default values."""
|
|
settings = PlgSettingsStructure()
|
|
|
|
# global
|
|
self.assertTrue(hasattr(settings, "debug_mode"))
|
|
self.assertIsInstance(settings.debug_mode, bool)
|
|
self.assertEqual(settings.debug_mode, False)
|
|
|
|
self.assertTrue(hasattr(settings, "version"))
|
|
self.assertIsInstance(settings.version, str)
|
|
self.assertEqual(settings.version, __version__)
|
|
|
|
|
|
def test_bool_env_variable(self):
|
|
"""Test settings with environment value."""
|
|
manager = PlgOptionsManager()
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "true"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, True)
|
|
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "false"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, False)
|
|
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "on"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, True)
|
|
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "off"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, False)
|
|
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "1"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, True)
|
|
|
|
with patch.dict(
|
|
os.environ, {f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "0"}, clear=True
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, False)
|
|
|
|
with patch.dict(
|
|
os.environ,
|
|
{f"{PREFIX_ENV_VARIABLE}DEBUG_MODE": "invalid_value"},
|
|
clear=True,
|
|
):
|
|
settings = manager.get_plg_settings()
|
|
self.assertEqual(settings.debug_mode, False)
|
|
|
|
# ############################################################################
|
|
# ####### Stand-alone run ########
|
|
# ################################
|
|
if __name__ == "__main__":
|
|
unittest.main()
|