75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
"""Модуль 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:"
|
||
)
|