"""Тесты полной настройки киоска Pi.""" from __future__ import annotations import unittest from unittest.mock import patch from app.services.kiosk_full_setup_service import ( apply_full_kiosk_setup, get_full_kiosk_setup_status, ) class KioskFullSetupTests(unittest.TestCase): @patch("app.services.kiosk_full_setup_service.get_kiosk_boot_status") @patch("app.services.kiosk_full_setup_service.get_pi_platform_setup_status") def test_status_ready(self, mock_pi: object, mock_kiosk: object) -> None: mock_pi.return_value = { "running_as_root": True, "platform_ready": True, } mock_kiosk.return_value = { "kiosk_enabled": True, "kiosk_mode": "system_labwc", "chromium_found": True, "gui_user": "komton", } st = get_full_kiosk_setup_status({}) self.assertTrue(st["full_setup_ready"]) @patch( "app.services.kiosk_full_setup_service.get_full_kiosk_setup_status", return_value={"full_setup_ready": False}, ) @patch("app.services.kiosk_full_setup_service.schedule_system_reboot") @patch("app.services.kiosk_full_setup_service.set_kiosk_boot") @patch("app.services.kiosk_full_setup_service.apply_pi_platform_setup") @patch("app.services.kiosk_full_setup_service._is_root", return_value=True) def test_apply_ok( self, _root: object, mock_pi: object, mock_kiosk: object, mock_reboot: object, _status: object, ) -> None: mock_pi.return_value = {"ok": True, "message": "pi ok"} mock_kiosk.return_value = { "ok": True, "message": "kiosk ok", "target_url": "http://localhost/scales", } mock_reboot.return_value = {"scheduled": True, "message": "reboot"} cfg = {"WESP_FULL_SETUP_REBOOT_DELAY_SEC": 10} r = apply_full_kiosk_setup(cfg, hide_desktop=True) self.assertTrue(r.get("ok")) self.assertEqual(r.get("steps_completed"), ["pi_platform", "kiosk", "reboot"]) mock_pi.assert_called_once() mock_kiosk.assert_called_once() mock_reboot.assert_called_once() @patch("app.services.kiosk_full_setup_service._is_root", return_value=False) def test_apply_requires_root(self, _root: object) -> None: r = apply_full_kiosk_setup({}) self.assertFalse(r.get("ok")) if __name__ == "__main__": unittest.main()