diff --git a/pages/users_tab.py b/pages/users_tab.py index d263087..76c2d6f 100644 --- a/pages/users_tab.py +++ b/pages/users_tab.py @@ -50,6 +50,7 @@ class UsersTab(BasePage): self.alert = AlertComponent(page) # Действия: + def add_modal_window(self, window_type: str, title: str) -> None: """Добавляет модальное окно в коллекцию. @@ -70,98 +71,6 @@ class UsersTab(BasePage): else: assert False, "Unsupported modal window type" - def get_modal_window(self, title: str) -> ModalWindowComponent: - """Возвращает модальное окно по заголовку. - - Args: - title: Заголовок окна. - - Returns: - ModalWindowComponent: Экземпляр модального окна. - - Raises: - AssertionError: Если окно не найдено. - """ - - modal_window = self.modal_windows.get(title) - if modal_window is None: - assert False, f"Modal window with title '{title}' not found" - return modal_window - - def delete_modal_window(self, title: str) -> None: - """Удаляет модальное окно из коллекции. - - Args: - title: Заголовок окна. - - Raises: - AssertionError: Если окно не найдено. - """ - - if self.modal_windows.get(title) is None: - assert False, f"Modal window with title '{title}' not found" - self.modal_windows[title] = None - - def close_modal_window_by_toolbar_button(self, title: str) -> None: - """Закрывает модальное окно через кнопку в тулбаре. - - Args: - title: Заголовок окна. - """ - - modal_window = self.get_modal_window(title) - modal_window.close_window_by_toolbar_button() - self.delete_modal_window(title) - - def close_modal_window(self, title: str) -> None: - """Закрывает модальное окно через кнопку закрытия. - - Args: - title: Заголовок окна. - """ - - modal_window = self.get_modal_window(title) - modal_window.close_window() - self.delete_modal_window(title) - - def close_add_AD_user_window_by_toolbar_button(self) -> None: - """Закрывает окно добавления пользователя через тулбар.""" - - self.close_modal_window_by_toolbar_button("add_AD_user") - - def close_add_AD_user_window(self) -> None: - """Закрывает окно добавления пользователя.""" - - self.close_modal_window("add_AD_user") - - def close_add_user_window_by_toolbar_button(self) -> None: - """Закрывает окно добавления пользователя через тулбар.""" - - self.close_modal_window_by_toolbar_button("add_local_user") - - def close_add_user_window(self) -> None: - """Закрывает окно добавления пользователя.""" - - self.close_modal_window("add_local_user") - - def close_edit_user_window_by_toolbar_button(self, title: str) -> None: - """Закрывает окно редактирования через кнопку в тулбаре. - - Args: - title: Имя пользователя (заголовок окна). - """ - - self.close_modal_window_by_toolbar_button(title) - - def close_edit_user_window(self, title: str) -> None: - """Закрывает окно редактирования пользователя. - - Args: - title: Имя пользователя (заголовок окна). - """ - - self.close_modal_window(title) - def add_new_user(self, user_data: dict) -> bool: """Добавляет нового пользователя или обрабатывает ошибку при дубликате. @@ -193,7 +102,6 @@ class UsersTab(BasePage): self.alert.check_alert_absence(' Новый пользователь \n успешно добавлен! ') is_added = True elif alert_type == "error": - print(f' Имя {user_data["name"]} уже используется ') self.alert.check_alert_presence(f' Имя {user_data["name"]} уже \n используется ') self.alert.check_alert_absence(f' Имя {user_data["name"]} уже \n используется ') else: @@ -201,6 +109,80 @@ class UsersTab(BasePage): return is_added + def close_add_AD_user_window(self) -> None: + """Закрывает окно добавления пользователя.""" + + self.close_modal_window("add_AD_user") + + def close_add_AD_user_window_by_toolbar_button(self) -> None: + """Закрывает окно добавления пользователя через тулбар.""" + + self.close_modal_window_by_toolbar_button("add_AD_user") + + def close_add_user_window(self) -> None: + """Закрывает окно добавления пользователя.""" + + self.close_modal_window("add_local_user") + + def close_add_user_window_by_toolbar_button(self) -> None: + """Закрывает окно добавления пользователя через тулбар.""" + + self.close_modal_window_by_toolbar_button("add_local_user") + + def close_edit_user_window(self, title: str) -> None: + """Закрывает окно редактирования пользователя. + + Args: + title: Имя пользователя (заголовок окна). + """ + + self.close_modal_window(title) + + def close_edit_user_window_by_toolbar_button(self, title: str) -> None: + """Закрывает окно редактирования через кнопку в тулбаре. + + Args: + title: Имя пользователя (заголовок окна). + """ + + self.close_modal_window_by_toolbar_button(title) + + def close_modal_window(self, title: str) -> None: + """Закрывает модальное окно через кнопку закрытия. + + Args: + title: Заголовок окна. + """ + + modal_window = self.get_modal_window(title) + modal_window.close_window() + self.delete_modal_window(title) + + def close_modal_window_by_toolbar_button(self, title: str) -> None: + """Закрывает модальное окно через кнопку в тулбаре. + + Args: + title: Заголовок окна. + """ + + modal_window = self.get_modal_window(title) + modal_window.close_window_by_toolbar_button() + self.delete_modal_window(title) + + def delete_modal_window(self, title: str) -> None: + """Удаляет модальное окно из коллекции. + + Args: + title: Заголовок окна. + + Raises: + AssertionError: Если окно не найдено. + """ + + if self.modal_windows.get(title) is None: + assert False, f"Modal window with title '{title}' not found" + self.modal_windows[title] = None + def delete_user(self, user_name: str) -> None: """Удаляет пользователя. @@ -238,26 +220,6 @@ class UsersTab(BasePage): self.alert.check_alert_presence('\nОбновление успешно\n') self.alert.check_alert_absence('\nОбновление успешно\n') - def reset_password(self, user_name: str) -> str: - """Сбрасывает пароль пользователя. - - Args: - user_name: Имя пользователя. - - Returns: - str: Новый пароль (если получен). - """ - - new_password = "" - self.get_modal_window(user_name).reset_password() - - self.alert.check_alert_presence("") - alert_message = self.alert.get_text() - if len(alert_message) > 0: - new_password = re.findall(r'[\d]+', alert_message)[0] - - return new_password - def find_user_in_table(self, name: str, role: str) -> int: """Ищет пользователя в таблице. @@ -278,13 +240,32 @@ class UsersTab(BasePage): if len(table_content) == 0: assert False, "The contents of the table are missing" - del table_content[0] # Удаляем заголовок + # Удаляем заголовок + del table_content[0] for row_index, user_info in enumerate(table_content): if name in user_info and role in user_info: return row_index return -1 + def get_modal_window(self, title: str) -> ModalWindowComponent: + """Возвращает модальное окно по заголовку. + + Args: + title: Заголовок окна. + + Returns: + ModalWindowComponent: Экземпляр модального окна. + + Raises: + AssertionError: Если окно не найдено. + """ + + modal_window = self.modal_windows.get(title) + if modal_window is None: + assert False, f"Modal window with title '{title}' not found" + return modal_window + def open_add_user_window(self) -> None: """Открывает окно добавления пользователя. @@ -325,7 +306,8 @@ class UsersTab(BasePage): if len(table_content) == 0: assert False, "The contents of the table are missing" - del table_content[0] # Удаляем заголовок + # Удаляем заголовок + del table_content[0] if row_index >= len(table_content): assert False, "Row_index is out of range" @@ -359,11 +341,30 @@ class UsersTab(BasePage): if row_index == -1: assert False, f"User with name {user_name} and role {role} has not been found" - self.page.locator(TableLocators.TABLE_WORK_AREA).locator( - "//tbody/tr").nth(row_index).click() + self.page.locator(TableLocators.TABLE_WORK_AREA).locator("//tbody/tr").nth(row_index).click() self.add_modal_window("edit_user", user_name) self.get_modal_window(user_name).check_by_window_title() + def reset_password(self, user_name: str) -> str: + """Сбрасывает пароль пользователя. + + Args: + user_name: Имя пользователя. + + Returns: + str: Новый пароль (если получен). + """ + + new_password = "" + self.get_modal_window(user_name).reset_password() + + self.alert.check_alert_presence("") + alert_message = self.alert.get_text() + if len(alert_message) > 0: + new_password = re.findall(r'[\d]+', alert_message)[0] + + return new_password + def transform_to_add_AD_user_window(self): """Трансформирует модальное окно добавления локального пользователя в окно добавления пользователя Active Directory с помощью нажатия @@ -387,6 +388,27 @@ class UsersTab(BasePage): self.add_modal_window("add_local_user", "") # Проверки: + def check_add_AD_user_window_content(self) -> None: + """Проверяет содержимое окна добавления пользователя через Active Directory.""" + + self.get_modal_window("add_AD_user").check_content() + + def check_add_user_window_content(self) -> None: + """Проверяет содержимое окна добавления локального пользователя.""" + + self.get_modal_window("add_local_user").check_content() + + def check_edit_user_window_content(self, user_name: str, role: str) -> None: + """Проверяет содержимое окна редактирования. + + Args: + user_name: Имя пользователя. + role: Роль пользователя. + """ + + edit_user_window = self.get_modal_window(user_name) + edit_user_window.check_content(user_name, role) + def check_users_table_content(self, verify: bool = False) -> None: """Проверяет содержимое таблицы пользователей. @@ -418,27 +440,6 @@ class UsersTab(BasePage): if verify: self.verify_users_table_content(table_content) - def check_add_user_window_content(self) -> None: - """Проверяет содержимое окна добавления локального пользователя.""" - - self.get_modal_window("add_local_user").check_content() - - def check_add_AD_user_window_content(self) -> None: - """Проверяет содержимое окна добавления пользователя через Active Directory.""" - - self.get_modal_window("add_AD_user").check_content() - - def check_edit_user_window_content(self, user_name: str, role: str) -> None: - """Проверяет содержимое окна редактирования. - - Args: - user_name: Имя пользователя. - role: Роль пользователя. - """ - - edit_user_window = self.get_modal_window(user_name) - edit_user_window.check_content(user_name, role) - def should_be_toolbar(self) -> None: """Проверяет наличие тулбара. @@ -468,18 +469,6 @@ class UsersTab(BasePage): self.toolbar.get_button_by_name("close").click() self.toolbar.check_button_visibility("edit") - def should_be_users_table(self) -> None: - """Проверяет наличие таблицы пользователей. - - Raises: - AssertionError: Если таблица отсутствует. - """ - - self.users_table.check_visibility( - TableLocators.TABLE_WORK_AREA, - "Users table is missing" - ) - def should_be_user_in_table(self, name: str, role: str) -> None: """Проверяет наличие пользователя в таблице. @@ -495,6 +484,15 @@ class UsersTab(BasePage): if found == -1: assert False, f"User with name {name} and role {role} has not been found" + def should_be_users_table(self) -> None: + """Проверяет наличие таблицы пользователей. + + Raises: + AssertionError: Если таблица отсутствует. + """ + + self.users_table.check_visibility(TableLocators.TABLE_WORK_AREA,"Users table is missing") + def should_not_be_user_in_table(self, name: str, role: str) -> None: """Проверяет отсутствие пользователя в таблице. @@ -547,7 +545,8 @@ class UsersTab(BasePage): if item["role"] is not None: role = item["role"] - if role in roles_dict: # Убрали вызов .keys() + # Убрали вызов .keys() + if role in roles_dict: item["role"] = roles_dict[role] user_info.append(item["role"]) else: @@ -565,7 +564,8 @@ class UsersTab(BasePage): expected_users_list.append(user_info) - del users_table[0] # Удаляем заголовок + # Удаляем заголовок + del users_table[0] self.check_lists_equals( users_table,