"""Модуль тестов вкладки 'Статус обслуживания'.

Содержит тесты для проверки отображения и функциональности
элементов вкладки статусов сервисов.
"""

import pytest

from playwright.sync_api import Page
from pages.service_status_tab import ServiceStatusTab
from pages.main_page import MainPage
from pages.login_page import LoginPage

pytest.skip("пропуск всех тестов в этом файле в связи с переходом на новый виджет", allow_module_level=True)

# @pytest.mark.smoke
class TestServiceStatusTab:
    """Класс тестов для проверки вкладки 'Статус обслуживания'.

    Тесты покрывают следующие сценарии:
    1. test_service_status_tab_content: Проверяет содержимое вкладки 'Статус обслуживания'
    2. test_service_status_table_row_highlighting: Проверяет выделение строк в таблице сервисов
    """

    @pytest.fixture(scope="function", autouse=True)
    def setup(self, browser: Page):
        """Подготавливает тестовое окружение.

        Args:
            browser: Экземпляр страницы Playwright.
        """

        lp = LoginPage(browser)
        lp.do_login()

        # Переход на главную страницу
        mp = MainPage(browser)

        # Проверка наличия панели навигации
        mp.should_be_navigation_panel()

        # Клик по пункту 'Настройки' в главной панели навигации
        mp.click_main_navigation_panel_item("Настройки")

        # Клик по пункту 'Обслуживание и диагностика' в панели навигации настроек
        mp.click_subpanel_item("Обслуживание и диагностика")

        # Клик по пункту 'Статус обслуживания' в панели навигации обслуживания
        mp.click_subpanel_item("Статус обслуживания")

    # @pytest.mark.develop
    def test_service_status_tab_content(self, browser: Page):
        """Проверяет содержимое вкладки 'Статус обслуживания'.

        Args:
            browser: Экземпляр страницы Playwright.
        """

        sst = ServiceStatusTab(browser)

        # Проверка тулбара вкладки
        sst.should_be_toolbar()

        # Проверка наличия таблицы статусов сервисов
        sst.should_be_services_table()

        # Ожидание перед проверкой содержимого таблицы сервисов
        browser.wait_for_timeout(1000)

        # Проверка содержимого таблицы сервисов
        sst.check_services_table_content()

    def test_service_status_table_row_highlighting(self, browser: Page):
        """Проверяет выделение строк в таблице сервисов.

        Args:
            browser: Экземпляр страницы Playwright.
        """

        sst = ServiceStatusTab(browser)

        # Проверка тулбара вкладки
        sst.should_be_toolbar()

        # Проверка наличия таблицы статусов сервисов
        sst.should_be_services_table()

        # Получение количества строк в таблице
        rows_count = sst.get_rows_count()

        # Проверка выделения строк
        sst.check_services_table_row_highlighting(0)
        sst.check_services_table_row_highlighting(rows_count - 1)
        sst.check_services_table_row_highlighting(int(rows_count / 2))
