Исходный код components_derived.modal_view_template

"""Модуль modal_view_template содержит класс для работы с модальным окном шаблона.

Класс ViewTemplateModalWindow наследует базовый функционал ModalWindowComponent
и реализует методы просмотра модального окна шаблона.
"""

import re
from playwright.sync_api import Page
from tools.logger import get_logger
from components.modal_window_component import ModalWindowComponent
from components.json_container_component import JsonContainerComponent
from locators.json_container_locators import JsonContainerLocators


logger = get_logger("VIEW_TEMPLATE_MODAL_WINDOW")


[документация] class ViewTemplateModalWindow(ModalWindowComponent): """Модальное окно шаблона. Наследует ModalWindowComponent и добавляет функционал для: 1. Инициализации модального окна с конкретным шаблоном 2. Закрытия модального окна через тулбар 3. Проверки содержимого модального окна 4. Проверки содержимого JSON контейнера """
[документация] def __init__(self, page: Page, title: str): """Инициализирует элементы формы модального окна шаблона.""" super().__init__(page) # Настройка заголовка и кнопки закрытия self.window_title = title locator_button_toolbar_close = self.page.get_by_role("navigation").filter( has_text=re.compile(self.window_title) ).get_by_role("button") self.add_toolbar_title(self.window_title) self.add_toolbar_button(locator_button_toolbar_close, "close") # Инициализация JSON контейнера self.json_container = JsonContainerComponent(page)
[документация] def close_window_by_toolbar_button(self): """Закрывает окно через кнопку в тулбаре.""" self.click_toolbar_close_button()
[документация] def check_content(self) -> None: """Проверяет наличие и корректность элементов окна. Проверяет: 1. Наличие заголовка окна с именем шаблона 2. Видимость кнопки закрытия 3. Подсказку кнопки закрытия """ self.check_by_window_title() self.check_toolbar_button_visibility("close") self.check_toolbar_button_tooltip("close", "Закрыть")
[документация] def verify_json_container_content(self, template_data: dict) -> None: """Проверяет соответствие данных контейнера данным из API. Args: template_data: Данные шаблона из API. """ # Читаем данные из контейнера actual_data = self.json_container.read_data(JsonContainerLocators.CONTAINER) # Сравниваем actual_data с данными конкретного шаблона self.json_container.check_json_equals( actual_data, template_data, "Expected json content is not equal actual:" )