plugin_gn_tools/tests/qgis/test_plg_preferences.py
2026-03-19 14:06:08 +01:00

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()