"""Модуль тестов модальных окон пользователей.

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

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

class TestUsersModalWindow:
    """Класс тестов для проверки модальных окон пользователей."""

    @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_edit_user_window_scrolling(self, browser: Page) -> None:
        """Проверяет прокрутку окна редактирования пользователя.

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

        Steps:
            1. Открывает окно редактирования
            2. Проверяет вертикальную прокрутку
            3. Проверяет горизонтальную прокрутку
        """

        ut = UsersTab(browser)
        user_name, role = ut.open_edit_user_page_by_index(0)
        modal_window = ut.get_modal_window(user_name)

        is_scrollable_vertically = modal_window.check_window_vertical_scrolling()
        assert is_scrollable_vertically, "Should be vertical scrolling"

        modal_window.scroll_window_down()
        modal_window.check_button_visibility("close")
        ut.wait_for_timeout(3000)

        modal_window.scroll_window_up()
        modal_window.check_toolbar_button_visibility("close")
        ut.wait_for_timeout(3000)

        is_scrollable_horizontally = modal_window.check_window_horizontal_scrolling()
        assert is_scrollable_horizontally, "Should be horizontal scrolling"

        modal_window.scroll_window_right()
        ut.wait_for_timeout(3000)
        modal_window.scroll_window_left()
        ut.wait_for_timeout(2000)

    def test_add_user_window_scrolling(self, browser: Page) -> None:
        """Проверяет прокрутку окна добавления пользователя.

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

        Steps:
            1. Открывает окно добавления
            2. Проверяет вертикальную прокрутку
        """

        ut = UsersTab(browser)
        ut.open_add_user_window()
        modal_window = ut.get_modal_window("add_local_user")

        is_scrollable_vertically = modal_window.check_window_vertical_scrolling()
        assert is_scrollable_vertically, "Should be vertical scrolling"

        modal_window.scroll_window_down()
        modal_window.check_button_visibility("close")
        ut.wait_for_timeout(3000)

        modal_window.scroll_window_up()
        modal_window.check_toolbar_button_visibility("close")
        ut.wait_for_timeout(3000)

        ## Временно закомментарено - для окна добавления пользователя убрали горизонтальный скроллинг - BUG???
        # is_scrollable_horizontally = modal_window.check_window_horizontal_scrolling()
        # assert is_scrollable_horizontally, "Should be horizontal scrolling"

        # modal_window.scroll_window_right()
        # ut.wait_for_timeout(3000)
        # modal_window.scroll_window_left()
        # ut.wait_for_timeout(2000)
