mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-16 00:08:41 -07:00
118 lines
4.6 KiB
Python
118 lines
4.6 KiB
Python
import os.path
|
|
import shutil
|
|
from unittest import TestCase
|
|
from unittest.mock import MagicMock
|
|
|
|
from scripts import config
|
|
from scripts.utils.global_theme.gdm_theme_prepare import GDMThemePrepare
|
|
from ..._helpers import create_dummy_file, try_remove_file
|
|
|
|
|
|
class GDMThemePrepareTestCase(TestCase):
|
|
def setUp(self):
|
|
self.temp_folder = os.path.join(config.temp_tests_folder, "gdm_theme_prepare")
|
|
self.main_styles = os.path.join(self.temp_folder, "gnome-shell.css")
|
|
self.theme = MagicMock()
|
|
self.theme.add_to_start.return_value = None
|
|
self.theme.temp_folder = self.temp_folder
|
|
self.theme.main_styles = self.main_styles
|
|
|
|
self.main_styles_destination = os.path.join(self.temp_folder, "gnome-shell-result.css")
|
|
create_dummy_file(self.main_styles_destination, "body { background-color: #000; }")
|
|
|
|
self.files_labeler = MagicMock()
|
|
|
|
self.theme_prepare = GDMThemePrepare(
|
|
theme=self.theme,
|
|
theme_file=self.main_styles_destination,
|
|
label=None,
|
|
files_labeler=self.files_labeler,
|
|
)
|
|
|
|
def tearDown(self):
|
|
shutil.rmtree(self.temp_folder, ignore_errors=True)
|
|
|
|
def test_label_files_calls_labeler(self):
|
|
self.theme_prepare.label = "dark"
|
|
|
|
self.theme_prepare.label_theme()
|
|
|
|
self.files_labeler.append_label.assert_called_once_with("dark")
|
|
|
|
def test_label_files_raises_value_error_if_label_none(self):
|
|
self.theme_prepare.label = None
|
|
|
|
with self.assertRaises(ValueError):
|
|
self.theme_prepare.label_theme()
|
|
|
|
def test_remove_keywords_removes_destination_keywords(self):
|
|
try_remove_file(self.main_styles_destination)
|
|
expected_content = "body { background-color: #000; }"
|
|
create_dummy_file(self.main_styles_destination, "body {keyword1 background-color: #000 !important; }")
|
|
keywords = ["keyword1", " !important"]
|
|
|
|
self.theme_prepare.remove_keywords(*keywords)
|
|
|
|
with open(self.main_styles_destination, 'r') as file:
|
|
content = file.read()
|
|
self.assertEqual(content, expected_content)
|
|
try_remove_file(self.main_styles_destination)
|
|
|
|
def test_remove_properties_removes_destination_properties(self):
|
|
try_remove_file(self.main_styles_destination)
|
|
expected_content = "body {\n}\n"
|
|
create_dummy_file(self.main_styles_destination, "body {\nbackground-color: #000;\n}")
|
|
properties = ["background-color"]
|
|
|
|
self.theme_prepare.remove_properties(*properties)
|
|
|
|
with open(self.main_styles_destination, 'r') as file:
|
|
actual_content = file.read()
|
|
self.assertEqual(expected_content, actual_content)
|
|
try_remove_file(self.main_styles_destination)
|
|
|
|
def test_remove_properties_removes_one_line_properties(self):
|
|
try_remove_file(self.main_styles_destination)
|
|
expected_content = ""
|
|
create_dummy_file(self.main_styles_destination, "body { background-color: #000; }")
|
|
properties = ["background-color"]
|
|
|
|
self.theme_prepare.remove_properties(*properties)
|
|
|
|
with open(self.main_styles_destination, 'r') as file:
|
|
actual_content = file.read()
|
|
self.assertEqual(expected_content, actual_content)
|
|
try_remove_file(self.main_styles_destination)
|
|
|
|
def test_prepend_source_styles_prepends_destination_styles(self):
|
|
try_remove_file(self.main_styles_destination)
|
|
expected_content = "body { background-color: #000; }\n"
|
|
create_dummy_file(self.main_styles_destination, "body { background-color: #000; }")
|
|
|
|
self.theme_prepare.prepend_source_styles("")
|
|
|
|
called_content: str = self.theme.add_to_start.call_args[0][0]
|
|
self.assertTrue(called_content.startswith(expected_content))
|
|
try_remove_file(self.main_styles_destination)
|
|
|
|
def test_prepend_source_styles_adds_trigger(self):
|
|
try_remove_file(self.main_styles_destination)
|
|
expected_content = "\ntrigger\n"
|
|
create_dummy_file(self.main_styles_destination)
|
|
trigger = "trigger"
|
|
|
|
self.theme_prepare.prepend_source_styles(trigger)
|
|
|
|
called_content: str = self.theme.add_to_start.call_args[0][0]
|
|
self.assertTrue(expected_content in called_content)
|
|
try_remove_file(self.main_styles_destination)
|
|
|
|
def test_install_passes_arguments_to_theme(self):
|
|
hue = 0
|
|
color = "#000000"
|
|
sat = 100
|
|
destination = os.path.join(self.temp_folder, "destination")
|
|
|
|
self.theme_prepare.install(hue, color, sat, destination)
|
|
|
|
self.theme.install.assert_called_once_with(hue, color, sat, destination=destination) |