125 lines
4.8 KiB
Python
125 lines
4.8 KiB
Python
import logging
|
|
import typing
|
|
|
|
import allure
|
|
|
|
import configs
|
|
import constants
|
|
import driver
|
|
from constants import UserAccount
|
|
from gui.components.onboarding.before_started_popup import BeforeStartedPopUp
|
|
from gui.components.onboarding.welcome_status_popup import WelcomeStatusPopup
|
|
from gui.components.splash_screen import SplashScreen
|
|
from gui.components.user_canvas import UserCanvas
|
|
from gui.elements.qt.button import Button
|
|
from gui.elements.qt.object import QObject
|
|
from gui.elements.qt.window import Window
|
|
from gui.screens.community import CommunityScreen
|
|
from gui.screens.community_portal import CommunitiesPortal
|
|
from gui.screens.onboarding import AllowNotificationsView, WelcomeView, TouchIDAuthView, LoginView
|
|
from gui.screens.settings import SettingsScreen
|
|
from scripts.tools.image import Image
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class LeftPanel(QObject):
|
|
|
|
def __init__(self):
|
|
super(LeftPanel, self).__init__('mainWindow_StatusAppNavBar')
|
|
self._profile_button = Button('mainWindow_ProfileNavBarButton')
|
|
self._communities_portal_button = Button('communities_Portal_navbar_StatusNavBarTabButton')
|
|
self._community_template_button = Button('statusCommunityMainNavBarListView_CommunityNavBarButton')
|
|
self._settings_button = Button('settings_navbar_StatusNavBarTabButton')
|
|
|
|
@property
|
|
@allure.step('Get communities names')
|
|
def communities(self) -> typing.List[str]:
|
|
community_names = []
|
|
for obj in driver.findAllObjects(self._community_template_button.real_name):
|
|
community_names.append(obj.name)
|
|
return community_names
|
|
|
|
@property
|
|
@allure.step('Get user badge color')
|
|
def user_badge_color(self) -> str:
|
|
return str(self._profile_button.object.badge.color.name)
|
|
|
|
@allure.step('Open user canvas')
|
|
def open_user_canvas(self) -> UserCanvas:
|
|
self._profile_button.click()
|
|
return UserCanvas().wait_until_appears()
|
|
|
|
@allure.step('Verify: User is online')
|
|
def user_is_online(self) -> bool:
|
|
return self.user_badge_color == '#4ebc60'
|
|
|
|
@allure.step('Verify: User is offline')
|
|
def user_is_offline(self):
|
|
return self.user_badge_color == '#7f8990'
|
|
|
|
@allure.step('Verify: User is set to automatic')
|
|
def user_is_set_to_automatic(self):
|
|
return self.user_badge_color == '#4ebc60'
|
|
|
|
@allure.step('Open community portal')
|
|
def open_communities_portal(self) -> CommunitiesPortal:
|
|
self._communities_portal_button.click()
|
|
return CommunitiesPortal().wait_until_appears()
|
|
|
|
def _get_community(self, name: str):
|
|
community_names = []
|
|
for obj in driver.findAllObjects(self._community_template_button.real_name):
|
|
community_names.append(str(obj.name))
|
|
if str(obj.name) == str(name):
|
|
return obj
|
|
raise LookupError(f'Community: {name} not found in {community_names}')
|
|
|
|
@allure.step('Open community')
|
|
def select_community(self, name: str) -> CommunityScreen:
|
|
driver.mouseClick(self._get_community(name))
|
|
return CommunityScreen().wait_until_appears()
|
|
|
|
@allure.step('Get community logo')
|
|
def get_community_logo(self, name: str) -> Image:
|
|
return Image(driver.objectMap.realName(self._get_community(name)))
|
|
|
|
@allure.step('Open settings')
|
|
def open_settings(self) -> CommunitiesPortal:
|
|
self._settings_button.click()
|
|
return SettingsScreen().wait_until_appears()
|
|
|
|
|
|
class MainWindow(Window):
|
|
|
|
def __init__(self):
|
|
super(MainWindow, self).__init__('statusDesktop_mainWindow')
|
|
self.left_panel = LeftPanel()
|
|
|
|
@allure.step('Sign Up user')
|
|
def sign_up(self, user_account: UserAccount = constants.user.user_account_one):
|
|
if configs.system.IS_MAC:
|
|
AllowNotificationsView().wait_until_appears().allow()
|
|
BeforeStartedPopUp().get_started()
|
|
wellcome_screen = WelcomeView().wait_until_appears()
|
|
profile_view = wellcome_screen.get_keys().generate_new_keys()
|
|
profile_view.set_display_name(user_account.name)
|
|
details_view = profile_view.next()
|
|
create_password_view = details_view.next()
|
|
confirm_password_view = create_password_view.create_password(user_account.password)
|
|
confirm_password_view.confirm_password(user_account.password)
|
|
if configs.system.IS_MAC:
|
|
TouchIDAuthView().wait_until_appears().prefer_password()
|
|
SplashScreen().wait_until_appears().wait_until_hidden()
|
|
if not configs.DEV_BUILD:
|
|
WelcomeStatusPopup().confirm()
|
|
return self
|
|
|
|
@allure.step('Log in user')
|
|
def log_in(self, user_account: UserAccount):
|
|
LoginView().log_in(user_account)
|
|
SplashScreen().wait_until_appears().wait_until_hidden()
|
|
if not configs.DEV_BUILD:
|
|
WelcomeStatusPopup().wait_until_appears().confirm()
|
|
return self
|