115 lines
5.9 KiB
Python
115 lines
5.9 KiB
Python
"""Модуль контейнера для отображения событий обслуживания.
|
||
|
||
Содержит класс для работы с контейнером для отображения событий
|
||
обслуживания через Playwright.
|
||
"""
|
||
|
||
from playwright.sync_api import Page, Locator
|
||
from tools.logger import get_logger
|
||
from locators.event_panel_locators import EventPanelLocators
|
||
from components.events_container_component import EventsContainerComponent
|
||
|
||
logger = get_logger("MAINTENANCE_EVENTS_CONTAINER")
|
||
|
||
|
||
class MaintenanceEventsContainer(EventsContainerComponent):
|
||
"""Компонент контейнера для отображения событий обслуживания.
|
||
|
||
Предоставляет методы для взаимодействия с элементами
|
||
контейнера для отображения событий системного журнала.
|
||
"""
|
||
|
||
def __init__(self, page: Page, locator: str | Locator):
|
||
"""Инициализирует компонент контейнера для отображения событий обслуживания.
|
||
|
||
Args:
|
||
page: Экземпляр страницы Playwright.
|
||
"""
|
||
|
||
super().__init__(page, locator)
|
||
|
||
toolbar_locator = self.get_locator(locator).locator(EventPanelLocators.TOOLBAR)
|
||
|
||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.FILTER_TOOLBAR_BUTTON), "filter_button")
|
||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.MAINTENANCE_TOOLBAR_BUTTON),
|
||
"maintenance_button")
|
||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.PDF_TOOLBAR_BUTTON), "export_to_pdf_button")
|
||
self.add_tab_to_toolbar(toolbar_locator.locator(EventPanelLocators.CSV_TOOLBAR_BUTTON), "export_to_csv_button")
|
||
|
||
events_filter = self.get_events_filter()
|
||
events_filter.add_filtering_parameter("filter_date", "Дата")
|
||
events_filter.add_filtering_parameter("filter_event_name", "Наименование события")
|
||
events_filter.add_filtering_parameter("filter_type", "Тип")
|
||
events_filter.add_filtering_parameter("filter_status", "Состояние")
|
||
events_filter.add_filtering_parameter("filter_object", "Объект")
|
||
events_filter.add_filtering_parameter("filter_author", "Автор")
|
||
events_filter.add_filtering_parameter("filter_location", "Расположение")
|
||
|
||
# Действия:
|
||
# Проверки:
|
||
def check_content(self) -> None:
|
||
"""Проверяет содержимое контейнера для отображения событий обслуживания."""
|
||
|
||
expected_headers = ['ДАТА', 'НАИМЕНОВАНИЕ СОБЫТИЯ' ,'ТИП',
|
||
'СОСТОЯНИЕ', 'ОБЪЕКТ', 'АВТОР', 'РАСПОЛОЖЕНИЕ']
|
||
|
||
self.should_be_toolbar()
|
||
self.should_be_toolbar_buttons()
|
||
|
||
if not self.is_tab_active("maintenance_button"):
|
||
self.click_tab_button("maintenance_button")
|
||
self.wait_for_timeout(1000)
|
||
|
||
self.should_be_events_table()
|
||
events_table = self.get_events_table_content()
|
||
|
||
if len(events_table) == 0:
|
||
assert False, "The contents of the events table are missing"
|
||
|
||
self.check_events_table_headers(events_table[0], expected_headers)
|
||
|
||
if len(events_table) == 1:
|
||
logger.info("Table body is missing")
|
||
|
||
self.should_be_pagination_buttons()
|
||
|
||
events_filter = self.click_filter_button()
|
||
events_filter.check_content()
|
||
|
||
filter_date_bar = events_filter.get_filtering_parameter("filter_date")
|
||
filter_date_title = filter_date_bar.get_selection_bar_title()
|
||
assert filter_date_title == "Дата", "Filtering parameter bar 'Дата' is missing"
|
||
|
||
filter_event_name_bar = events_filter.get_filtering_parameter("filter_event_name")
|
||
filter_event_name_title = filter_event_name_bar.get_selection_bar_title()
|
||
assert filter_event_name_title == "Наименование события", \
|
||
"Filtering parameter bar 'Наименование события' is missing"
|
||
|
||
filter_type_bar = events_filter.get_filtering_parameter("filter_type")
|
||
filter_type_title = filter_type_bar.get_selection_bar_title()
|
||
assert filter_type_title == "Тип", "Filtering parameter bar 'Тип' is missing"
|
||
|
||
filter_status_bar = events_filter.get_filtering_parameter("filter_status")
|
||
filter_status_title = filter_status_bar.get_selection_bar_title()
|
||
assert filter_status_title == "Состояние", "Filtering parameter bar 'Состояние' is missing"
|
||
|
||
filter_object_bar = events_filter.get_filtering_parameter("filter_object")
|
||
filter_object_title = filter_object_bar.get_selection_bar_title()
|
||
assert filter_object_title == "Объект", "Filtering parameter bar 'Объект' is missing"
|
||
|
||
filter_author_bar = events_filter.get_filtering_parameter("filter_author")
|
||
filter_author_title = filter_author_bar.get_selection_bar_title()
|
||
assert filter_author_title == "Автор", "Filtering parameter bar 'Автор' is missing"
|
||
|
||
filter_location_bar = events_filter.get_filtering_parameter("filter_location")
|
||
filter_location_title = filter_location_bar.get_selection_bar_title()
|
||
assert filter_location_title == "Расположение", "Filtering parameter bar 'Расположение' is missing"
|
||
|
||
def should_be_toolbar_buttons(self) -> None:
|
||
"""Проверяет наличие и видимость кнопок тулбара."""
|
||
|
||
self.toolbar.check_button_visibility("filter_button")
|
||
self.toolbar.check_button_visibility("maintenance_button")
|
||
self.toolbar.check_button_visibility("export_to_pdf_button")
|
||
self.toolbar.check_button_visibility("export_to_csv_button")
|