Добавление теста создания стойки
parent
48eae76141
commit
2f2cf2c143
|
|
@ -12,6 +12,7 @@ logger = get_logger("RACK_MAKER")
|
||||||
@dataclass
|
@dataclass
|
||||||
class RackData:
|
class RackData:
|
||||||
"""Класс для хранения данных стойки."""
|
"""Класс для хранения данных стойки."""
|
||||||
|
|
||||||
name: str
|
name: str
|
||||||
height: str = "42"
|
height: str = "42"
|
||||||
depth: str = "1000"
|
depth: str = "1000"
|
||||||
|
|
@ -35,6 +36,7 @@ class RackObjectMaker(BaseComponent):
|
||||||
Args:
|
Args:
|
||||||
page: Экземпляр страницы Playwright
|
page: Экземпляр страницы Playwright
|
||||||
"""
|
"""
|
||||||
|
|
||||||
super().__init__(page)
|
super().__init__(page)
|
||||||
|
|
||||||
# Действия:
|
# Действия:
|
||||||
|
|
@ -46,40 +48,47 @@ class RackObjectMaker(BaseComponent):
|
||||||
Args:
|
Args:
|
||||||
rack_data: Данные стойки
|
rack_data: Данные стойки
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info(f"Filling rack data: {rack_data.name}")
|
logger.info(f"Filling rack data: {rack_data.name}")
|
||||||
|
|
||||||
self._fill_required_fields(rack_data)
|
self._fill_text_fields(rack_data)
|
||||||
self._fill_optional_fields(rack_data)
|
|
||||||
self._fill_combobox_fields(rack_data)
|
self._fill_combobox_fields(rack_data)
|
||||||
|
|
||||||
logger.info("Rack data filled successfully")
|
logger.info("Rack data filled successfully")
|
||||||
|
|
||||||
def _fill_required_fields(self, rack_data: RackData) -> None:
|
def _fill_text_fields(self, rack_data: RackData) -> None:
|
||||||
"""Заполняет обязательные поля."""
|
"""Заполняет текстовые поля."""
|
||||||
if rack_data.name:
|
|
||||||
name_field = self.page.locator(RackLocators.RACK_NAME_FIELD).first
|
|
||||||
name_field.fill(rack_data.name)
|
|
||||||
logger.info(f"Filled 'Name' field: {rack_data.name}")
|
|
||||||
|
|
||||||
def _fill_optional_fields(self, rack_data: RackData) -> None:
|
def clear_and_fill(locator, value: str, field_name: str):
|
||||||
"""Заполняет опциональные поля."""
|
"""Очищает поле и заполняет его значением."""
|
||||||
|
|
||||||
|
field = self.page.locator(locator).first
|
||||||
|
# Очищаем поле
|
||||||
|
field.click()
|
||||||
|
field.press("Control+A")
|
||||||
|
field.press("Backspace")
|
||||||
|
# Заполняем значение
|
||||||
|
field.fill(value)
|
||||||
|
logger.info(f"Filled '{field_name}': {value}")
|
||||||
|
|
||||||
|
# Обязательные поля.
|
||||||
|
if rack_data.name:
|
||||||
|
clear_and_fill(RackLocators.RACK_NAME_FIELD, rack_data.name, "Name")
|
||||||
|
|
||||||
|
# Опциональные поля.
|
||||||
if rack_data.serial:
|
if rack_data.serial:
|
||||||
serial_field = self.page.locator(RackLocators.RACK_SERIAL_FIELD).first
|
clear_and_fill(RackLocators.RACK_SERIAL_FIELD, rack_data.serial, "Serial number")
|
||||||
serial_field.fill(rack_data.serial)
|
|
||||||
logger.info(f"Filled serial number: {rack_data.serial}")
|
|
||||||
|
|
||||||
if rack_data.inventory:
|
if rack_data.inventory:
|
||||||
inventory_field = self.page.locator(RackLocators.RACK_INVENTORY_FIELD).first
|
clear_and_fill(RackLocators.RACK_INVENTORY_FIELD, rack_data.inventory, "Inventory number")
|
||||||
inventory_field.fill(rack_data.inventory)
|
|
||||||
logger.info(f"Filled inventory number: {rack_data.inventory}")
|
|
||||||
|
|
||||||
if rack_data.comment:
|
if rack_data.comment:
|
||||||
comment_field = self.page.locator(RackLocators.RACK_COMMENT_FIELD).first
|
clear_and_fill(RackLocators.RACK_COMMENT_FIELD, rack_data.comment, "Comment")
|
||||||
comment_field.fill(rack_data.comment)
|
|
||||||
logger.info(f"Added comment: {rack_data.comment}")
|
|
||||||
|
|
||||||
def _fill_combobox_fields(self, rack_data: RackData) -> None:
|
def _fill_combobox_fields(self, rack_data: RackData) -> None:
|
||||||
"""Заполняет combobox поля."""
|
"""Заполняет combobox поля."""
|
||||||
|
|
||||||
|
# Обязательные поля.
|
||||||
if rack_data.height:
|
if rack_data.height:
|
||||||
self._fill_combobox_field("Height in units", rack_data.height,
|
self._fill_combobox_field("Height in units", rack_data.height,
|
||||||
RackLocators.RACK_HEIGHT_FIELD)
|
RackLocators.RACK_HEIGHT_FIELD)
|
||||||
|
|
@ -90,6 +99,7 @@ class RackObjectMaker(BaseComponent):
|
||||||
RackLocators.RACK_DEPTH_FIELD)
|
RackLocators.RACK_DEPTH_FIELD)
|
||||||
logger.info(f"Selected depth: {rack_data.depth} mm")
|
logger.info(f"Selected depth: {rack_data.depth} mm")
|
||||||
|
|
||||||
|
# Опциональные поля.
|
||||||
if rack_data.cable_entry:
|
if rack_data.cable_entry:
|
||||||
self._fill_combobox_field("Cable entry", rack_data.cable_entry,
|
self._fill_combobox_field("Cable entry", rack_data.cable_entry,
|
||||||
RackLocators.RACK_CABLE_ENTRY_FIELD)
|
RackLocators.RACK_CABLE_ENTRY_FIELD)
|
||||||
|
|
@ -124,6 +134,7 @@ class RackObjectMaker(BaseComponent):
|
||||||
value: Значение для установки
|
value: Значение для установки
|
||||||
field_locator: Локатор поля
|
field_locator: Локатор поля
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info(f"Filling field '{field_name}' with value '{value}'...")
|
logger.info(f"Filling field '{field_name}' with value '{value}'...")
|
||||||
|
|
||||||
# Используем first() для избежания strict mode violation
|
# Используем first() для избежания strict mode violation
|
||||||
|
|
@ -157,6 +168,7 @@ class RackObjectMaker(BaseComponent):
|
||||||
Returns:
|
Returns:
|
||||||
str: Локатор поля
|
str: Локатор поля
|
||||||
"""
|
"""
|
||||||
|
|
||||||
field_map = {
|
field_map = {
|
||||||
"Имя": RackLocators.RACK_NAME_FIELD,
|
"Имя": RackLocators.RACK_NAME_FIELD,
|
||||||
"Высота в юнитах": RackLocators.RACK_HEIGHT_FIELD,
|
"Высота в юнитах": RackLocators.RACK_HEIGHT_FIELD,
|
||||||
|
|
@ -168,15 +180,6 @@ class RackObjectMaker(BaseComponent):
|
||||||
|
|
||||||
return field_map[field_name]
|
return field_map[field_name]
|
||||||
|
|
||||||
def wait_for_timeout(self, timeout: int) -> None:
|
|
||||||
"""
|
|
||||||
Ожидает указанное количество миллисекунд.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
timeout: Время ожидания в миллисекундах
|
|
||||||
"""
|
|
||||||
self.page.wait_for_timeout(timeout)
|
|
||||||
|
|
||||||
# Проверки:
|
# Проверки:
|
||||||
|
|
||||||
def check_rack_fields_presence(self) -> None:
|
def check_rack_fields_presence(self) -> None:
|
||||||
|
|
@ -186,6 +189,7 @@ class RackObjectMaker(BaseComponent):
|
||||||
Raises:
|
Raises:
|
||||||
AssertionError: Если какое-либо поле не найдено
|
AssertionError: Если какое-либо поле не найдено
|
||||||
"""
|
"""
|
||||||
|
|
||||||
logger.info("Checking rack fields presence...")
|
logger.info("Checking rack fields presence...")
|
||||||
|
|
||||||
# Основные обязательные поля
|
# Основные обязательные поля
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue