zapretgui/tests/test_win10_tinted_background.py
loop-uh 6dab6845d2
All checks were successful
Zapret source guards / validate (push) Successful in 5s
Починить падение «Оформления» и сделать одного хозяина Premium-правил темы
Страница «Оформление» падала при каждом открытии: статус оформления
возвращался набором из пяти значений по порядку, а одно место ждало четыре.
Набор по порядку убран, страница берёт статус подписки из общего store по
именам полей и подписана на него ещё до построения.

Правило «что можно Free, что только Premium» теперь одно —
settings.appearance.resolve_premium_access. Применяет его к окну только
ui/window_premium_appearance.py: пока статус неизвестен, показывается
последнее сохранённое; у Free-версии окно само ставит обычный фон, гасит
гирлянду и снежинки и одной транзакцией сбрасывает их в настройках в
фоновом потоке. Страница только показывает доступность и больше ничего не
сохраняет за пользователя. Убраны параллельные пути: init_holiday_effects
из проверки подписки, отдельное включение эффектов без проверки Premium,
копии гирлянды и снежинок в AppUiState.

Ошибка записи настроек оформления больше не проглатывается и не меняет
кэш. Удалена мёртвая настройка Mica (переключатель давно не строился).
Добавлены тесты: настоящее построение страницы для Free/Premium/неизвестно
и поведение окна.
2026-09-27 17:42:33 +03:00

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