mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-17 16:57:56 -07:00
- Extracted `ColorReplacementGenerator`; - Extracted `ColorConverterImpl`; - Added documentation to some classes; - `hex_to_rgba` now supports shorthand hex colors (#fff).
91 lines
3.6 KiB
Python
91 lines
3.6 KiB
Python
import os.path
|
|
import unittest
|
|
from unittest.mock import MagicMock
|
|
|
|
from scripts import config
|
|
from scripts.types.installation_color import InstallationColor
|
|
from scripts.utils.theme.theme import Theme
|
|
|
|
|
|
class ThemeTestCase(unittest.TestCase):
|
|
def setUp(self):
|
|
self.mock_preparation = MagicMock()
|
|
self.mock_installer = MagicMock()
|
|
|
|
temp_folder = os.path.join(config.temp_tests_folder, "theme_temp")
|
|
destination_folder = os.path.join(temp_folder, "theme_destination")
|
|
|
|
self.mock_preparation.temp_folder = temp_folder
|
|
self.mock_preparation.combined_styles_location = os.path.join(temp_folder, "styles.css")
|
|
self.mock_installer.destination_folder = destination_folder
|
|
self.mock_installer.theme_type = "gtk"
|
|
|
|
self.theme = Theme(self.mock_preparation, self.mock_installer)
|
|
|
|
def test_default_initialization_works_correctly(self):
|
|
self.assertEqual(self.theme.modes, ['light', 'dark'])
|
|
self.assertFalse(self.theme.is_filled)
|
|
|
|
def test_initialization_with_specific_mode_works_correctly(self):
|
|
theme_light = Theme(self.mock_preparation, self.mock_installer, mode='light')
|
|
self.assertEqual(theme_light.modes, ['light'])
|
|
|
|
def test_initialization_with_is_filled_works_correctly(self):
|
|
theme_filled = Theme(self.mock_preparation, self.mock_installer, is_filled=True)
|
|
self.assertTrue(theme_filled.is_filled)
|
|
|
|
def test_properties_fetch_values_correctly(self):
|
|
temp_folder = os.path.join(config.temp_tests_folder, "theme_temp")
|
|
destination_folder = os.path.join(temp_folder, "theme_destination")
|
|
|
|
self.assertEqual(self.theme.temp_folder, temp_folder)
|
|
self.assertEqual(self.theme.destination_folder, destination_folder)
|
|
self.assertEqual(self.theme.main_styles, os.path.join(temp_folder, "styles.css"))
|
|
self.assertEqual(self.theme.theme_name, "gtk")
|
|
|
|
def test_add_operator_called_once_and_return_value(self):
|
|
result = self.theme + "additional styles"
|
|
|
|
self.mock_preparation.__iadd__.assert_called_once_with("additional styles")
|
|
self.assertEqual(result, self.theme)
|
|
|
|
def test_mul_operator_called_once_and_return_value(self):
|
|
result = self.theme * "/path/to/file"
|
|
|
|
self.mock_preparation.__imul__.assert_called_once_with("/path/to/file")
|
|
self.assertEqual(result, self.theme)
|
|
|
|
def test_add_to_start_called_once_and_return_value(self):
|
|
result = self.theme.add_to_start("starting content")
|
|
|
|
self.mock_preparation.add_to_start.assert_called_once_with("starting content")
|
|
self.assertEqual(result, self.theme)
|
|
|
|
def test_prepare_called_once(self):
|
|
self.theme.prepare()
|
|
|
|
self.mock_preparation.prepare.assert_called_once()
|
|
|
|
def test_install_without_optional_params_called_correctly(self):
|
|
self.theme.install(200, "Green")
|
|
|
|
args = self.mock_installer.install.call_args[0]
|
|
self.assertEqual(args[0].hue, 200)
|
|
self.assertIsNone(args[0].saturation)
|
|
self.assertEqual(args[1], "Green")
|
|
self.assertIsNone(args[2])
|
|
|
|
def test_install_with_optional_params_called_correctly(self):
|
|
self.theme.install(hue=180, name="Blue", sat=0.5, destination="/custom/dest")
|
|
|
|
self.mock_installer.install.assert_called_once()
|
|
args = self.mock_installer.install.call_args[0]
|
|
|
|
theme_color = args[0]
|
|
self.assertIsInstance(theme_color, InstallationColor)
|
|
self.assertEqual(theme_color.hue, 180)
|
|
self.assertEqual(theme_color.saturation, 0.5)
|
|
self.assertEqual(theme_color.modes, ['light', 'dark'])
|
|
self.assertEqual(args[1], "Blue")
|
|
self.assertEqual(args[2], "/custom/dest")
|