All checks were successful
Zapret source guards / validate (push) Successful in 5s
Страница «Оформление» падала при каждом открытии: статус оформления возвращался набором из пяти значений по порядку, а одно место ждало четыре. Набор по порядку убран, страница берёт статус подписки из общего store по именам полей и подписана на него ещё до построения. Правило «что можно Free, что только Premium» теперь одно — settings.appearance.resolve_premium_access. Применяет его к окну только ui/window_premium_appearance.py: пока статус неизвестен, показывается последнее сохранённое; у Free-версии окно само ставит обычный фон, гасит гирлянду и снежинки и одной транзакцией сбрасывает их в настройках в фоновом потоке. Страница только показывает доступность и больше ничего не сохраняет за пользователя. Убраны параллельные пути: init_holiday_effects из проверки подписки, отдельное включение эффектов без проверки Premium, копии гирлянды и снежинок в AppUiState. Ошибка записи настроек оформления больше не проглатывается и не меняет кэш. Удалена мёртвая настройка Mica (переключатель давно не строился). Добавлены тесты: настоящее построение страницы для Free/Premium/неизвестно и поведение окна.
42 lines
1.4 KiB
Python
42 lines
1.4 KiB
Python
import unittest
|
|
from types import SimpleNamespace
|
|
from unittest.mock import patch
|
|
|
|
|
|
class Win10TintedBackgroundTests(unittest.TestCase):
|
|
def test_standard_background_reapplies_aero_effect_on_windows_10(self) -> None:
|
|
import settings.appearance as appearance_settings
|
|
import ui.theme as theme
|
|
|
|
class _Window:
|
|
def __init__(self) -> None:
|
|
self.mica_values = []
|
|
|
|
def setMicaEffectEnabled(self, value) -> None:
|
|
self.mica_values.append(bool(value))
|
|
|
|
def setCustomBackgroundColor(self, *_args) -> None:
|
|
raise AssertionError("Win10 standard background must use the aero path")
|
|
|
|
appearance_settings.store_warmed_background_preset("standard")
|
|
appearance_settings.store_warmed_window_opacity(37)
|
|
|
|
window = _Window()
|
|
with (
|
|
patch.object(theme.sys, "platform", "win32"),
|
|
patch.object(
|
|
theme.sys,
|
|
"getwindowsversion",
|
|
return_value=SimpleNamespace(build=19045),
|
|
create=True,
|
|
),
|
|
patch.object(theme, "apply_aero_effect") as apply_aero,
|
|
):
|
|
theme.apply_window_background(window)
|
|
|
|
self.assertEqual(window.mica_values, [False])
|
|
apply_aero.assert_called_once_with(window, 37)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|