Profile settings - display name, states, change password (#112)
This commit is contained in:
parent
02cb848a1d
commit
bd07b1d0dd
|
@ -11,6 +11,8 @@ user_account_two = UserAccount('athletic', '0000000000', [
|
||||||
])
|
])
|
||||||
user_account_three = UserAccount('nervous', '000000000', [])
|
user_account_three = UserAccount('nervous', '000000000', [])
|
||||||
|
|
||||||
|
user_account_one_changed = UserAccount('squisher', 'NewPassword@12345', [])
|
||||||
|
|
||||||
community_params = {
|
community_params = {
|
||||||
'name': 'Name',
|
'name': 'Name',
|
||||||
'description': 'Description',
|
'description': 'Description',
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
import allure
|
||||||
|
|
||||||
|
from gui.components.base_popup import BasePopup
|
||||||
|
from gui.elements.qt.button import Button
|
||||||
|
from gui.elements.qt.text_edit import TextEdit
|
||||||
|
|
||||||
|
|
||||||
|
class ChangePasswordPopup(BasePopup):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super(ChangePasswordPopup, self).__init__()
|
||||||
|
self._current_password_text_field = TextEdit('change_password_menu_current_password')
|
||||||
|
self._new_password_text_field = TextEdit('change_password_menu_new_password')
|
||||||
|
self._confirm_password_text_field = TextEdit('change_password_menu_new_password_confirm')
|
||||||
|
self._submit_button = Button('change_password_menu_submit_button')
|
||||||
|
self._quit_button = Button('change_password_success_menu_sign_out_quit_button')
|
||||||
|
|
||||||
|
@allure.step('Change password and confirm action')
|
||||||
|
def change_password(self, old_pwd: str, new_pwd: str):
|
||||||
|
self._current_password_text_field.text = old_pwd
|
||||||
|
self._new_password_text_field.text = new_pwd
|
||||||
|
self._confirm_password_text_field.text = new_pwd
|
||||||
|
self._submit_button.click()
|
||||||
|
self._quit_button.wait_until_appears(15000).click()
|
|
@ -7,6 +7,7 @@ from gui.components.base_popup import BasePopup
|
||||||
from gui.elements.qt.button import Button
|
from gui.elements.qt.button import Button
|
||||||
from gui.elements.qt.object import QObject
|
from gui.elements.qt.object import QObject
|
||||||
from gui.elements.qt.text_label import TextLabel
|
from gui.elements.qt.text_label import TextLabel
|
||||||
|
from gui.screens.settings import ProfileSettingsView
|
||||||
from scripts.tools.image import Image
|
from scripts.tools.image import Image
|
||||||
|
|
||||||
|
|
||||||
|
@ -68,3 +69,8 @@ class ProfilePopup(BasePopup):
|
||||||
15, 15, self._profile_image.image.width - 30, self._profile_image.image.height - 30
|
15, 15, self._profile_image.image.width - 30, self._profile_image.image.height - 30
|
||||||
)
|
)
|
||||||
return self.profile_image.has_text(text, constants.tesseract.text_on_profile_image, crop=crop)
|
return self.profile_image.has_text(text, constants.tesseract.text_on_profile_image, crop=crop)
|
||||||
|
|
||||||
|
@allure.step('Click edit profile button')
|
||||||
|
def edit_profile(self):
|
||||||
|
self._edit_profile_button.click()
|
||||||
|
return ProfileSettingsView()
|
||||||
|
|
|
@ -61,14 +61,26 @@ class LeftPanel(QObject):
|
||||||
self._profile_button.click()
|
self._profile_button.click()
|
||||||
return UserCanvas().wait_until_appears()
|
return UserCanvas().wait_until_appears()
|
||||||
|
|
||||||
|
@allure.step('Set user to online')
|
||||||
|
def set_user_to_online(self):
|
||||||
|
self.open_user_canvas().set_user_state_online()
|
||||||
|
|
||||||
@allure.step('Verify: User is online')
|
@allure.step('Verify: User is online')
|
||||||
def user_is_online(self) -> bool:
|
def user_is_online(self) -> bool:
|
||||||
return self.user_badge_color == '#4ebc60'
|
return self.user_badge_color == '#4ebc60'
|
||||||
|
|
||||||
|
@allure.step('Set user to offline')
|
||||||
|
def set_user_to_offline(self):
|
||||||
|
self.open_user_canvas().set_user_state_offline()
|
||||||
|
|
||||||
@allure.step('Verify: User is offline')
|
@allure.step('Verify: User is offline')
|
||||||
def user_is_offline(self):
|
def user_is_offline(self):
|
||||||
return self.user_badge_color == '#7f8990'
|
return self.user_badge_color == '#7f8990'
|
||||||
|
|
||||||
|
@allure.step('Set user to automatic')
|
||||||
|
def set_user_to_automatic(self):
|
||||||
|
self.open_user_canvas().set_user_automatic_state()
|
||||||
|
|
||||||
@allure.step('Verify: User is set to automatic')
|
@allure.step('Verify: User is set to automatic')
|
||||||
def user_is_set_to_automatic(self):
|
def user_is_set_to_automatic(self):
|
||||||
return self.user_badge_color == '#4ebc60'
|
return self.user_badge_color == '#4ebc60'
|
||||||
|
|
|
@ -263,3 +263,10 @@ mainWindow_Turn_off_Button = {"checkable": False, "container": statusDesktop_mai
|
||||||
# Wallet toast message
|
# Wallet toast message
|
||||||
mainWallet_Ephemeral_Notification_List = {"container": statusDesktop_mainWindow, "objectName": "ephemeralNotificationList", "type": "StatusListView"}
|
mainWallet_Ephemeral_Notification_List = {"container": statusDesktop_mainWindow, "objectName": "ephemeralNotificationList", "type": "StatusListView"}
|
||||||
ephemeralNotificationList_StatusToastMessage = {"container": mainWallet_Ephemeral_Notification_List, "type": "StatusToastMessage", "unnamed": 1, "visible": True}
|
ephemeralNotificationList_StatusToastMessage = {"container": mainWallet_Ephemeral_Notification_List, "type": "StatusToastMessage", "unnamed": 1, "visible": True}
|
||||||
|
|
||||||
|
# Change password popup
|
||||||
|
change_password_menu_current_password = {"container": statusDesktop_mainWindow_overlay, "objectName": "passwordViewCurrentPassword", "type": "StatusPasswordInput", "visible": True}
|
||||||
|
change_password_menu_new_password = {"container": statusDesktop_mainWindow_overlay, "objectName": "passwordViewNewPassword", "type": "StatusPasswordInput", "visible": True}
|
||||||
|
change_password_menu_new_password_confirm = {"container": statusDesktop_mainWindow_overlay, "objectName": "passwordViewNewPasswordConfirm", "type": "StatusPasswordInput", "visible": True}
|
||||||
|
change_password_menu_submit_button = {"container": statusDesktop_mainWindow_overlay, "objectName": "changePasswordModalSubmitButton", "type": "StatusButton", "visible": True}
|
||||||
|
change_password_success_menu_sign_out_quit_button = {"container": statusDesktop_mainWindow_overlay, "objectName": "changePasswordSuccessModalSignOutAndQuitButton", "type": "StatusButton", "visible": True}
|
||||||
|
|
|
@ -3,6 +3,7 @@ statusDesktop_mainWindow_overlay = {"container": statusDesktop_mainWindow, "type
|
||||||
statusDesktop_mainWindow_overlay_popup2 = {"container": statusDesktop_mainWindow_overlay, "occurrence": 2, "type": "PopupItem", "unnamed": 1, "visible": True}
|
statusDesktop_mainWindow_overlay_popup2 = {"container": statusDesktop_mainWindow_overlay, "occurrence": 2, "type": "PopupItem", "unnamed": 1, "visible": True}
|
||||||
scrollView_StatusScrollView = {"container": statusDesktop_mainWindow_overlay, "id": "scrollView", "type": "StatusScrollView", "unnamed": 1, "visible": True}
|
scrollView_StatusScrollView = {"container": statusDesktop_mainWindow_overlay, "id": "scrollView", "type": "StatusScrollView", "unnamed": 1, "visible": True}
|
||||||
splashScreen = {"container": statusDesktop_mainWindow, "objectName": "splashScreen", "type": "DidYouKnowSplashScreen"}
|
splashScreen = {"container": statusDesktop_mainWindow, "objectName": "splashScreen", "type": "DidYouKnowSplashScreen"}
|
||||||
|
settingsSave_StatusButton = {"container": statusDesktop_mainWindow, "objectName": "settingsDirtyToastMessageSaveButton", "type": "StatusButton", "visible": True}
|
||||||
|
|
||||||
# Main right panel
|
# Main right panel
|
||||||
mainWindow_RighPanel = {"container": statusDesktop_mainWindow, "type": "ColumnLayout", "objectName": "mainRightView", "visible": True}
|
mainWindow_RighPanel = {"container": statusDesktop_mainWindow, "type": "ColumnLayout", "objectName": "mainRightView", "visible": True}
|
||||||
|
|
|
@ -9,7 +9,7 @@ settingsContentBaseScrollView_Flickable = {"container": settingsContentBase_Scro
|
||||||
mainWindow_LeftTabView = {"container": mainWindow_StatusSectionLayout_ContentItem, "type": "LeftTabView", "unnamed": 1, "visible": True}
|
mainWindow_LeftTabView = {"container": mainWindow_StatusSectionLayout_ContentItem, "type": "LeftTabView", "unnamed": 1, "visible": True}
|
||||||
mainWindow_Settings_StatusNavigationPanelHeadline = {"container": mainWindow_LeftTabView, "type": "StatusNavigationPanelHeadline", "unnamed": 1, "visible": True}
|
mainWindow_Settings_StatusNavigationPanelHeadline = {"container": mainWindow_LeftTabView, "type": "StatusNavigationPanelHeadline", "unnamed": 1, "visible": True}
|
||||||
mainWindow_scrollView_StatusScrollView = {"container": mainWindow_LeftTabView, "id": "scrollView", "type": "StatusScrollView", "unnamed": 1, "visible": True}
|
mainWindow_scrollView_StatusScrollView = {"container": mainWindow_LeftTabView, "id": "scrollView", "type": "StatusScrollView", "unnamed": 1, "visible": True}
|
||||||
scrollView_AppMenuItem_StatusNavigationListItem = {"container": mainWindow_scrollView_StatusScrollView, "type": "StatusNavigationListItem", "visible": True}
|
scrollView_MenuItem_StatusNavigationListItem = {"container": mainWindow_scrollView_StatusScrollView, "type": "StatusNavigationListItem", "visible": True}
|
||||||
|
|
||||||
# Communities View
|
# Communities View
|
||||||
mainWindow_CommunitiesView = {"container": statusDesktop_mainWindow, "type": "CommunitiesView", "unnamed": 1, "visible": True}
|
mainWindow_CommunitiesView = {"container": statusDesktop_mainWindow, "type": "CommunitiesView", "unnamed": 1, "visible": True}
|
||||||
|
@ -55,3 +55,9 @@ settingsContentBaseScrollView_accountOrderView_AccountOrderView = {"container":
|
||||||
settingsContentBaseScrollView_StatusBaseText = {"container": settingsContentBase_ScrollView, "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
settingsContentBaseScrollView_StatusBaseText = {"container": settingsContentBase_ScrollView, "type": "StatusBaseText", "unnamed": 1, "visible": True}
|
||||||
mainWindow_StatusToolBar = {"container": statusDesktop_mainWindow, "objectName": "statusToolBar", "type": "StatusToolBar", "visible": True}
|
mainWindow_StatusToolBar = {"container": statusDesktop_mainWindow, "objectName": "statusToolBar", "type": "StatusToolBar", "visible": True}
|
||||||
main_toolBar_back_button = {"container": mainWindow_StatusToolBar, "objectName": "toolBarBackButton", "type": "StatusFlatButton", "visible": True}
|
main_toolBar_back_button = {"container": mainWindow_StatusToolBar, "objectName": "toolBarBackButton", "type": "StatusFlatButton", "visible": True}
|
||||||
|
|
||||||
|
# Profile View
|
||||||
|
mainWindow_MyProfileView = {"container": statusDesktop_mainWindow, "type": "MyProfileView", "unnamed": 1, "visible": True}
|
||||||
|
displayName_StatusInput = {"container": statusDesktop_mainWindow, "objectName": "displayNameInput", "type": "StatusInput", "visible": True}
|
||||||
|
displayName_TextEdit = {"container": displayName_StatusInput, "type": "TextEdit", "unnamed": 1, "visible": True}
|
||||||
|
change_password_button = {"container": statusDesktop_mainWindow, "type": "StatusButton", "objectName": "profileSettingsChangePasswordButton", "visible": True}
|
||||||
|
|
|
@ -8,12 +8,14 @@ import driver
|
||||||
from constants import UserCommunityInfo, wallet_account_list_item
|
from constants import UserCommunityInfo, wallet_account_list_item
|
||||||
from driver import objects_access
|
from driver import objects_access
|
||||||
from driver.objects_access import walk_children
|
from driver.objects_access import walk_children
|
||||||
|
from gui.components.change_password_popup import ChangePasswordPopup
|
||||||
from gui.components.settings.send_contact_request_popup import SendContactRequest
|
from gui.components.settings.send_contact_request_popup import SendContactRequest
|
||||||
from gui.components.wallet.testnet_mode_popup import TestnetModePopup
|
from gui.components.wallet.testnet_mode_popup import TestnetModePopup
|
||||||
from gui.elements.qt.button import Button
|
from gui.elements.qt.button import Button
|
||||||
from gui.elements.qt.list import List
|
from gui.elements.qt.list import List
|
||||||
from gui.elements.qt.object import QObject
|
from gui.elements.qt.object import QObject
|
||||||
from gui.elements.qt.scroll import Scroll
|
from gui.elements.qt.scroll import Scroll
|
||||||
|
from gui.elements.qt.text_edit import TextEdit
|
||||||
from gui.elements.qt.text_label import TextLabel
|
from gui.elements.qt.text_label import TextLabel
|
||||||
from gui.screens.community_settings import CommunitySettingsScreen
|
from gui.screens.community_settings import CommunitySettingsScreen
|
||||||
from gui.screens.messages import MessagesScreen
|
from gui.screens.messages import MessagesScreen
|
||||||
|
@ -24,27 +26,32 @@ class LeftPanel(QObject):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__('mainWindow_LeftTabView')
|
super().__init__('mainWindow_LeftTabView')
|
||||||
self._settings_section_template = QObject('scrollView_AppMenuItem_StatusNavigationListItem')
|
self._settings_section_template = QObject('scrollView_MenuItem_StatusNavigationListItem')
|
||||||
|
|
||||||
def _open_settings(self, index: int):
|
def _open_settings(self, index: int, section_name: str):
|
||||||
self._settings_section_template.real_name['objectName'] = f'{index}-AppMenuItem'
|
self._settings_section_template.real_name['objectName'] = f'{index}-{section_name}MenuItem'
|
||||||
self._settings_section_template.click()
|
self._settings_section_template.click()
|
||||||
|
|
||||||
@allure.step('Open messaging settings')
|
@allure.step('Open messaging settings')
|
||||||
def open_messaging_settings(self) -> 'MessagingSettingsView':
|
def open_messaging_settings(self) -> 'MessagingSettingsView':
|
||||||
self._open_settings(3)
|
self._open_settings(3, 'App')
|
||||||
return MessagingSettingsView()
|
return MessagingSettingsView()
|
||||||
|
|
||||||
@allure.step('Open communities settings')
|
@allure.step('Open communities settings')
|
||||||
def open_communities_settings(self) -> 'CommunitiesSettingsView':
|
def open_communities_settings(self) -> 'CommunitiesSettingsView':
|
||||||
self._open_settings(12)
|
self._open_settings(12, 'App')
|
||||||
return CommunitiesSettingsView()
|
return CommunitiesSettingsView()
|
||||||
|
|
||||||
@allure.step('Open wallet settings')
|
@allure.step('Open wallet settings')
|
||||||
def open_wallet_settings(self):
|
def open_wallet_settings(self):
|
||||||
self._open_settings(4)
|
self._open_settings(4, 'App')
|
||||||
return WalletSettingsView()
|
return WalletSettingsView()
|
||||||
|
|
||||||
|
@allure.step('Open profile settings')
|
||||||
|
def open_profile_settings(self):
|
||||||
|
self._open_settings(0, 'Main')
|
||||||
|
return ProfileSettingsView()
|
||||||
|
|
||||||
|
|
||||||
class SettingsScreen(QObject):
|
class SettingsScreen(QObject):
|
||||||
|
|
||||||
|
@ -53,6 +60,37 @@ class SettingsScreen(QObject):
|
||||||
self.left_panel = LeftPanel()
|
self.left_panel = LeftPanel()
|
||||||
|
|
||||||
|
|
||||||
|
class ProfileSettingsView(QObject):
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__('mainWindow_MyProfileView')
|
||||||
|
self._scroll_view = Scroll('settingsContentBaseScrollView_Flickable')
|
||||||
|
self._display_name_text_field = TextEdit('displayName_TextEdit')
|
||||||
|
self._save_button = Button('settingsSave_StatusButton')
|
||||||
|
self._change_password_button = Button('change_password_button')
|
||||||
|
|
||||||
|
@property
|
||||||
|
@allure.step('Get display name')
|
||||||
|
def display_name(self) -> str:
|
||||||
|
self._scroll_view.vertical_scroll_to(self._display_name_text_field)
|
||||||
|
return self._display_name_text_field.text
|
||||||
|
|
||||||
|
@allure.step('Set user name')
|
||||||
|
def set_name(self, value: str):
|
||||||
|
self._scroll_view.vertical_scroll_to(self._display_name_text_field)
|
||||||
|
self._display_name_text_field.text = value
|
||||||
|
self.save_changes()
|
||||||
|
|
||||||
|
@allure.step('Save changes')
|
||||||
|
def save_changes(self):
|
||||||
|
self._save_button.click()
|
||||||
|
|
||||||
|
@allure.step('Open change password form')
|
||||||
|
def open_change_password_popup(self):
|
||||||
|
self._change_password_button.click()
|
||||||
|
return ChangePasswordPopup().wait_until_appears()
|
||||||
|
|
||||||
|
|
||||||
class MessagingSettingsView(QObject):
|
class MessagingSettingsView(QObject):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
import allure
|
||||||
|
import pytest
|
||||||
|
from allure import step
|
||||||
|
|
||||||
|
import constants
|
||||||
|
from driver.aut import AUT
|
||||||
|
from gui.main_window import MainWindow
|
||||||
|
|
||||||
|
pytestmark = allure.suite("Settings")
|
||||||
|
|
||||||
|
|
||||||
|
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703007',
|
||||||
|
'Change own display name in profile popup')
|
||||||
|
@pytest.mark.case(703007)
|
||||||
|
@pytest.mark.parametrize('user_account', [constants.user.user_account_one])
|
||||||
|
@pytest.mark.parametrize('new_name', [pytest.param('NewUserName')])
|
||||||
|
def test_change_own_display_name(main_screen: MainWindow, user_account, new_name):
|
||||||
|
with step('Open own profile popup and check name of user is correct'):
|
||||||
|
profile = main_screen.left_panel.open_user_canvas()
|
||||||
|
profile_popup = profile.open_profile_popup()
|
||||||
|
assert profile_popup.user_name == user_account.name
|
||||||
|
|
||||||
|
with step('Go to edit profile settings and change the name of the user'):
|
||||||
|
profile_popup.edit_profile().set_name(new_name)
|
||||||
|
|
||||||
|
with step('Open own profile popup and check name of user is correct'):
|
||||||
|
assert main_screen.left_panel.open_user_canvas().open_profile_popup().user_name == new_name
|
||||||
|
|
||||||
|
|
||||||
|
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703002', 'Switch state to offline')
|
||||||
|
@pytest.mark.case(703002)
|
||||||
|
def test_switch_states_between_offline_and_online(aut: AUT, main_screen: MainWindow, user_account):
|
||||||
|
with (step('Open settings and switch state to offline')):
|
||||||
|
settings = main_screen.left_panel
|
||||||
|
settings.set_user_to_offline()
|
||||||
|
|
||||||
|
with step('Verify user appears offline'):
|
||||||
|
assert settings.user_is_offline()
|
||||||
|
|
||||||
|
with step('Restart application'):
|
||||||
|
aut.restart()
|
||||||
|
main_screen.authorize_user(user_account)
|
||||||
|
|
||||||
|
with step('Verify user appears offline'):
|
||||||
|
assert settings.user_is_offline()
|
||||||
|
|
||||||
|
with (step('Open settings and switch state to online')):
|
||||||
|
settings = main_screen.left_panel
|
||||||
|
settings.set_user_to_online()
|
||||||
|
|
||||||
|
with step('Restart application'):
|
||||||
|
aut.restart()
|
||||||
|
main_screen.authorize_user(user_account)
|
||||||
|
|
||||||
|
with step('Verify user appears online'):
|
||||||
|
assert settings.user_is_online()
|
||||||
|
|
||||||
|
|
||||||
|
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703004', 'Switch state to automatic')
|
||||||
|
@pytest.mark.case(703004)
|
||||||
|
def test_switch_state_to_automatic(aut: AUT, main_screen: MainWindow, user_account):
|
||||||
|
with step('Open settings and switch state to automatic'):
|
||||||
|
settings = main_screen.left_panel
|
||||||
|
settings.set_user_to_automatic()
|
||||||
|
|
||||||
|
with step('Verify user status set automatically to online'):
|
||||||
|
assert settings.user_is_set_to_automatic()
|
||||||
|
|
||||||
|
with step('Restart application'):
|
||||||
|
aut.restart()
|
||||||
|
main_screen.authorize_user(user_account)
|
||||||
|
|
||||||
|
with step('Verify user status set automatically to online'):
|
||||||
|
assert settings.user_is_set_to_automatic()
|
||||||
|
|
||||||
|
|
||||||
|
@allure.testcase('https://ethstatus.testrail.net/index.php?/cases/view/703005',
|
||||||
|
'Change the password and login with new password')
|
||||||
|
@pytest.mark.case(703005)
|
||||||
|
@pytest.mark.parametrize('user_account, user_account_new',
|
||||||
|
[pytest.param(constants.user.user_account_one, constants.user.user_account_one_changed)])
|
||||||
|
def test_change_password_and_login(aut: AUT, main_screen: MainWindow, user_account, user_account_new):
|
||||||
|
with step('Open profile settings and change password'):
|
||||||
|
main_screen.left_panel.open_settings().left_panel.open_profile_settings().open_change_password_popup().change_password(
|
||||||
|
user_account.password, user_account_new.password)
|
||||||
|
|
||||||
|
with step('Restart application'):
|
||||||
|
aut.restart()
|
||||||
|
main_screen.authorize_user(user_account_new)
|
||||||
|
|
||||||
|
with step('Verify that the user logged in correctly'):
|
||||||
|
user_canvas = main_screen.left_panel.open_user_canvas()
|
||||||
|
profile_popup = user_canvas.open_profile_popup()
|
||||||
|
assert profile_popup.user_name == user_account_new.name
|
Loading…
Reference in New Issue