"""Модуль тестов для контейнера с JSON-данными.

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

import pytest
from playwright.sync_api import Page
from pages.main_page import MainPage
from pages.login_page import LoginPage
from pages.license_tab import LicenseTab


class TestJsonContainer:
    """Тесты для проверки контейнера с JSON-данными на вкладке лицензий."""

    @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("Лицензии")

    def test_verticall_scrolling(self, browser: Page) -> None:
        """Проверяет вертикальную прокрутку в контейнере с JSON-данными.

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

        Steps:
            1. Проверяет наличие вертикальной прокрутки
            2. Прокручивает контейнер вниз
            3. Прокручивает контейнер вверх
        """

        lt = LicenseTab(browser)

        is_scrollable = lt.check_json_container_verticall_scrolling()
        assert is_scrollable, "Should be verticall scrolling"

        lt.scroll_json_container_down()
        lt.wait_for_timeout(3000)

        lt.scroll_json_container_up()
        lt.wait_for_timeout(2000)
