test(Communities) Adding permission test automated (#11993)

This commit is contained in:
Valentina1133 2023-08-31 12:31:43 +07:00 committed by GitHub
parent 1bc7eb374b
commit d684acd835
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 141 additions and 5 deletions

View File

@ -7,8 +7,7 @@
# * \date July 2022
# * \brief Community Screen.
# *****************************************************************************/
import typing
from enum import Enum
import time
from unittest import TestSuite
@ -568,4 +567,83 @@ class StatusCommunityScreen:
assert button.is_disabled
button_title = get_obj(CommunityWelcomeScreenComponents.ADD_NEW_ITEM_BUTTON.value).text
verify_equals(option, str(button_title))
class PermissionsView(BaseElement):
def __init__(self):
super(PermissionsView, self).__init__('mainWindow_editPermissionView_EditPermissionView')
self._add_new_permission_button = Button('community_welcome_screen_add_new_item')
self._who_holds_checkbox = CheckBox('editPermissionView_whoHoldsSwitch_StatusSwitch')
self._who_holds_asset_field = TextEdit('edit_TextEdit')
self._who_holds_amount_field = TextEdit('inputValue_StyledTextField')
self._asset_item = BaseElement('o_TokenItem')
self._is_allowed_to_option_button = Button('CustomPermissionListItem')
self._in_general_button = Button('communityItem_CommunityListItem')
self._hide_permission_checkbox = CheckBox('editPermissionView_switchItem_StatusSwitch')
self._create_permission_button = Button('editPermissionView_Create_permission_StatusButton')
self._add_button = Button('add_StatusButton')
self._who_holds_list_item = BaseElement('editPermissionView_Who_holds_StatusItemSelector')
self._is_allowed_to_list_item = BaseElement('editPermissionView_Is_allowed_to_StatusFlowSelector')
self._in_list_item = BaseElement('editPermissionView_In_StatusItemSelector')
self._tag_item = BaseElement('o_StatusListItemTag')
@property
def tags(self) -> typing.List[str]:
_tags = get_objects(self._tag_item.symbolic_name)
return [str(getattr(tag, 'title', '')) for tag in _tags]
def add_new_permission(self):
self._add_new_permission_button.click()
return PermissionsView().wait_until_appears()
def set_who_holds_checkbox_state(self, state):
if state == 'Off':
self._who_holds_checkbox.set(False)
def set_who_holds_asset_and_amount(self, asset: str, amount: str):
if asset != 'No':
self.open_who_holds_context_menu()
self._who_holds_asset_field.clear().text = asset
self._asset_item.click()
self._who_holds_asset_field.wait_until_hidden()
self._who_holds_amount_field.text = amount
self._add_button.click()
self._who_holds_amount_field.wait_until_hidden()
def set_is_allowed_to(self, name):
self.open_is_allowed_to_context_menu()
self._is_allowed_to_option_button.object_name['objectName'] = name
self._is_allowed_to_option_button.wait_until_appears().click()
self._add_button.click()
self._add_button.wait_until_hidden()
def set_in_community(self, in_general):
if in_general == '#general':
self.open_in_context_menu()
self._in_general_button.wait_until_appears().click()
self._add_button.click()
self._add_button.wait_until_hidden()
def create_permission(self):
self._create_permission_button.click()
self._create_permission_button.wait_until_hidden()
def open_who_holds_context_menu(self):
for child in walk_children(self._who_holds_list_item.object):
if getattr(child, 'id', '') == 'addItemButton':
click_obj(child)
return
raise LookupError('Add button for who holds not found ')
def open_is_allowed_to_context_menu(self):
for child in walk_children(self._is_allowed_to_list_item.object):
if getattr(child, 'id', '') == 'addItemButton':
click_obj(child)
return
raise LookupError('Add button for allowed to not found ')
def open_in_context_menu(self):
for child in walk_children(self._in_list_item.object):
if getattr(child, 'id', '') == 'addItemButton':
click_obj(child)
return
raise LookupError('Add button for in not found ')

View File

@ -1,6 +1,7 @@
from scripts.global_names import *
# Main:
mainWindow_StatusWindow = {"name": "mainWindow", "type": "StatusWindow", "visible": True}
mainWindow_communityColumnView_CommunityColumnView = {"container": statusDesktop_mainWindow, "objectName": "communityColumnView", "type": "CommunityColumnView", "visible": True}
mainWindow_communityHeader_StatusChatInfoButton = {"container": statusDesktop_mainWindow, "objectName": "communityHeaderButton", "type": "StatusChatInfoButton", "visible": True}
community_ChatInfo_Name_Text = {"container": mainWindow_communityHeader_StatusChatInfoButton, "objectName": "statusChatInfoButtonNameText", "type": "StatusBaseText", "visible": True}
@ -95,3 +96,21 @@ community_welcome_screen_checkList_element1 = {"container": statusDesktop_mainWi
community_welcome_screen_checkList_element2 = {"container": statusDesktop_mainWindow, "objectName": "checkListText_1", "type": "StatusBaseText", "visible": True}
community_welcome_screen_checkList_element3 = {"container": statusDesktop_mainWindow, "objectName": "checkListText_2", "type": "StatusBaseText", "visible": True}
community_welcome_screen_add_new_item = {"container": statusDesktop_mainWindow, "objectName": "addNewItemButton", "type": "StatusButton", "visible": True}
# Permissions view
mainWindow_editPermissionView_EditPermissionView = {"container": mainWindow_StatusWindow, "id": "stackLayout", "type": "StackLayout", "unnamed": 1, "visible": True}
mainWindow_editPermissionView_EditPermissionView_2 = {"container": statusDesktop_mainWindow, "id": "editPermissionView", "type": "EditPermissionView", "unnamed": 1, "visible": True}
editPermissionView_Who_holds_StatusItemSelector = {"container": mainWindow_editPermissionView_EditPermissionView, "id": "tokensSelector", "type": "StatusItemSelector", "unnamed": 1, "visible": True}
editPermissionView_Is_allowed_to_StatusFlowSelector = {"container": mainWindow_editPermissionView_EditPermissionView_2, "id": "permissionsSelector", "type": "StatusFlowSelector", "unnamed": 1, "visible": True}
editPermissionView_In_StatusItemSelector = {"container": mainWindow_editPermissionView_EditPermissionView_2, "id": "inSelector", "type": "StatusItemSelector", "unnamed": 1, "visible": True}
editPermissionView_whoHoldsSwitch_StatusSwitch = {"checkable": True, "container": mainWindow_editPermissionView_EditPermissionView, "id": "whoHoldsSwitch", "type": "StatusSwitch", "unnamed": 1, "visible": True}
edit_TextEdit = {"container": statusDesktop_mainWindow_overlay, "type": "TextEdit", "unnamed": 1, "visible": True}
inputValue_StyledTextField = {"container": statusDesktop_mainWindow_overlay, "echoMode": 0, "id": "inputValue", "type": "StyledTextField", "unnamed": 1, "visible": True}
o_TokenItem = {"container": statusDesktop_mainWindow_overlay, "index": 0, "type": "TokenItem", "unnamed": 1, "visible": True}
add_StatusButton = {"checkable": False, "container": statusDesktop_mainWindow_overlay, "type": "StatusButton", "unnamed": 1, "visible": True}
CustomPermissionListItem = {"container": statusDesktop_mainWindow_overlay, "objectName": "becomeAdmin", "type": "CustomPermissionListItem", "visible": True}
communityItem_CommunityListItem = {"container": statusDesktop_mainWindow_overlay, "id": "communityItem", "type": "CommunityListItem", "unnamed": 1, "visible": True}
editPermissionView_switchItem_StatusSwitch = {"checkable": True, "container": mainWindow_editPermissionView_EditPermissionView, "id": "switchItem", "type": "StatusSwitch", "unnamed": 1, "visible": True}
editPermissionView_Create_permission_StatusButton = {"checkable": False, "container": mainWindow_editPermissionView_EditPermissionView, "text": "Create permission", "type": "StatusButton", "unnamed": 1, "visible": True}
mainWindow_PermissionsView = {"container": mainWindow_StatusWindow, "type": "PermissionsView", "unnamed": 1, "visible": True}
o_StatusListItemTag = {"container": mainWindow_PermissionsView, "type": "StatusListItemTag", "unnamed": 1, "visible": True}

View File

@ -2,10 +2,13 @@ import steps.commonInitSteps as init_steps
from screens.StatusMainScreen import StatusMainScreen
from screens.StatusCommunityPortalScreen import StatusCommunityPortalScreen
from screens.StatusCommunityScreen import StatusCommunityScreen
from screens.StatusCommunityScreen import PermissionsView
from drivers.SquishDriver import *
_statusCommunityScreen = StatusCommunityScreen()
_statusCommunitityPortal = StatusCommunityPortalScreen()
_statusMainScreen = StatusMainScreen()
_permissionsView = PermissionsView()
#########################
### PRECONDITIONS region:
@ -170,16 +173,34 @@ def step(context, community_sidebar_option:str):
_statusCommunityScreen.click_sidebar_option(community_sidebar_option)
time.sleep(1)
@When("\"|any|\" section is selected")
@When("\"|any|\" section is selected")
def step(context, section_option:str):
_statusCommunityScreen.select_community_settings_option(section_option)
time.sleep(1)
@When("the user adds new permission with anyone checkbox \"|any|\", holds \"|any|\" and \"|any|\" in amount \"|any|\" and \"|any|\" \"|any|\"")
def step(context, state, first_asset, second_asset, amount, allowed_to, in_general):
permission_view = _permissionsView.add_new_permission()
permission_view.set_who_holds_checkbox_state(state)
permission_view.set_who_holds_asset_and_amount(first_asset, amount)
permission_view.set_who_holds_asset_and_amount(second_asset, amount)
permission_view.set_is_allowed_to(allowed_to)
permission_view.set_in_community(in_general)
permission_view.create_permission()
#########################
### VERIFICATIONS region:
#########################
@Then("created permission with \"|any|\" and \"|any|\" and \"|any|\" is on permission page")
def step(context, title, second_title, third_title):
if title != 'No':
assert wait_for(title in _permissionsView.tags)
if second_title != 'No':
assert wait_for(second_title in _permissionsView.tags)
if third_title != 'No':
assert wait_for(third_title in _permissionsView.tags)
@Then("the user lands on the community named \"|any|\"")
def step(context: any, community_name: str):
the_user_lands_on_the_community(community_name)

View File

@ -20,4 +20,18 @@ Background:
| Give individual members access to private channels |
| Monetise your community with subscriptions and fees |
| Require holding a token or NFT to obtain exclusive membership rights |
And "Add new permission" button is present
And "Add new permission" button is present
Scenario Outline: Adding permissions
When "Manage Community" is clicked in the community sidebar
And "Permissions" section is selected
And the user adds new permission with anyone checkbox "<state>", holds "<first_asset>" and "<second_asset>" in amount "<amount>" and "<allowed_to>" "<in_general>"
Then created permission with "<asset_title>" and "<second_asset_title>" and "<allowed_to_title>" is on permission page
Examples:
|state| first_asset | second_asset | amount | allowed_to |in_general |asset_title | second_asset_title|allowed_to_title |
|On | Dai Stablecoin| No | 10 | becomeMember |No |10 DAI | No |Become member |
|On | Ether | No | 1 | becomeAdmin |No |1 ETH | No |Become admin |
|On | Ether | Dai Stablecoin| 10 | viewAndPost |#general |10 ETH | 10 DAI |View and post |
|On | Ether | Dai Stablecoin| 10 | viewOnly |#general |10 ETH | 10 DAI |View only |
|Off | No | No | No | becomeAdmin |No |No | No |Become admin |

View File

@ -106,12 +106,14 @@ StatusDropdown {
enabled: root.enableAdminPermission
Layout.fillWidth: true
objectName: "becomeAdmin"
}
CustomPermissionListItem {
permissionType: PermissionTypes.Type.Member
Layout.fillWidth: true
objectName: "becomeMember"
}
CustomSeparator {
@ -125,12 +127,14 @@ StatusDropdown {
permissionType: PermissionTypes.Type.ViewAndPost
Layout.fillWidth: true
objectName: "viewAndPost"
}
CustomPermissionListItem {
permissionType: PermissionTypes.Type.Read
Layout.fillWidth: true
objectName: "viewOnly"
}
Separator {