"""Модуль тестов вкладки 'Пользователи'.

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

import pytest

from playwright.sync_api import Page
from pages.users_tab import UsersTab
from pages.main_page import MainPage
from pages.login_page import LoginPage


# @pytest.mark.smoke
class TestUsersTab:
    """Класс тестов для проверки вкладки 'Пользователи'.

    Тесты покрывают следующие сценарии:
    1. test_users_tab_content: Проверяет содержимое вкладки 'Пользователи'
    2. test_users_tab_toolbar_buttons: Проверяет кнопки на панели инструментов
    """

    @pytest.fixture(scope="function", autouse=True)
    def setup(self, browser: Page) -> None:
        """Настраивает тестовое окружение.

        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("Пользователи")

    # @pytest.mark.develop
    def test_users_tab_content(self, browser: Page) -> None:
        """Проверяет содержимое вкладки 'Пользователи'.

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

        ut = UsersTab(browser)
        ut.should_be_toolbar()
        ut.should_be_users_table()
        ut.check_users_table_content(True)

    def test_users_tab_toolbar_buttons(self, browser: Page) -> None:
        """Проверяет кнопки на панели инструментов.

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

        ut = UsersTab(browser)
        ut.should_be_toolbar_buttons()
