parent
1b6fc3b266
commit
44cf440a05
|
@ -32,6 +32,22 @@ class CommunityScreenComponents(Enum):
|
||||||
EDIT_CHANNEL_MENU_ITEM = "edit_Channel_StatusMenuItemDelegate"
|
EDIT_CHANNEL_MENU_ITEM = "edit_Channel_StatusMenuItemDelegate"
|
||||||
COMMUNITY_COLUMN_VIEW = "mainWindow_communityColumnView_CommunityColumnView"
|
COMMUNITY_COLUMN_VIEW = "mainWindow_communityColumnView_CommunityColumnView"
|
||||||
|
|
||||||
|
class CommunitySettingsComponents(Enum):
|
||||||
|
EDIT_COMMUNITY_SCROLL_VIEW = "communitySettings_EditCommunity_ScrollView"
|
||||||
|
EDIT_COMMUNITY_BUTTON = "communitySettings_EditCommunity_Button"
|
||||||
|
EDIT_COMMUNITY_NAME_INPUT = "communitySettings_EditCommunity_Name_Input"
|
||||||
|
EDIT_COMMUNITY_DESCRIPTION_INPUT = "communitySettings_EditCommunity_Description_Input"
|
||||||
|
EDIT_COMMUNITY_COLOR_PICKER_BUTTON = "communitySettings_EditCommunity_ColorPicker_Button"
|
||||||
|
SAVE_BUTTON = "communitySettings_Save_Button"
|
||||||
|
BACK_TO_COMMUNITY_BUTTON = "communitySettings_BackToCommunity_Button"
|
||||||
|
COMMUNITY_NAME_TEXT = "communitySettings_CommunityName_Text"
|
||||||
|
COMMUNITY_DESCRIPTION_TEXT = "communitySettings_CommunityDescription_Text"
|
||||||
|
COMMUNITY_LETTER_IDENTICON = "communitySettings_Community_LetterIdenticon"
|
||||||
|
|
||||||
|
class CommunityColorPanelComponents(Enum):
|
||||||
|
HEX_COLOR_INPUT = "communitySettings_ColorPanel_HexColor_Input"
|
||||||
|
SAVE_COLOR_BUTTON = "communitySettings_SaveColor_Button"
|
||||||
|
|
||||||
class CreateOrEditCommunityChannelPopup(Enum):
|
class CreateOrEditCommunityChannelPopup(Enum):
|
||||||
COMMUNITY_CHANNEL_NAME_INPUT: str = "createOrEditCommunityChannelNameInput_TextEdit"
|
COMMUNITY_CHANNEL_NAME_INPUT: str = "createOrEditCommunityChannelNameInput_TextEdit"
|
||||||
COMMUNITY_CHANNEL_DESCRIPTION_INPUT: str = "createOrEditCommunityChannelDescriptionInput_TextEdit"
|
COMMUNITY_CHANNEL_DESCRIPTION_INPUT: str = "createOrEditCommunityChannelDescriptionInput_TextEdit"
|
||||||
|
@ -60,10 +76,10 @@ class StatusCommunityScreen:
|
||||||
click_obj_by_name(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_BUTTON.value)
|
click_obj_by_name(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_BUTTON.value)
|
||||||
|
|
||||||
# TODO check if this function is needed, it seems to do the same as verify_chat_title in StatusChatScreen
|
# TODO check if this function is needed, it seems to do the same as verify_chat_title in StatusChatScreen
|
||||||
def verify_channel_name(self, communityChannelName: str):
|
def verify_channel_name(self, community_channel_name: str):
|
||||||
verify_text_matching(CommunityScreenComponents.CHAT_IDENTIFIER_CHANNEL_NAME.value, communityChannelName)
|
verify_text_matching(CommunityScreenComponents.CHAT_IDENTIFIER_CHANNEL_NAME.value, community_channel_name)
|
||||||
|
|
||||||
def edit_community_channel(self, communityChannelName: str, newCommunityChannelName: str):
|
def edit_community_channel(self, new_community_channel_name: str):
|
||||||
[bannerLoaded, _] = is_loaded_visible_and_enabled(MainUi.MODULE_WARNING_BANNER.value)
|
[bannerLoaded, _] = is_loaded_visible_and_enabled(MainUi.MODULE_WARNING_BANNER.value)
|
||||||
if (bannerLoaded):
|
if (bannerLoaded):
|
||||||
time.sleep(5) # Wait for the banner to disappear otherwise the click might land badly
|
time.sleep(5) # Wait for the banner to disappear otherwise the click might land badly
|
||||||
|
@ -73,6 +89,39 @@ class StatusCommunityScreen:
|
||||||
|
|
||||||
# Select all text in the input before typing
|
# Select all text in the input before typing
|
||||||
wait_for_object_and_type(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_NAME_INPUT.value, "<Ctrl+a>")
|
wait_for_object_and_type(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_NAME_INPUT.value, "<Ctrl+a>")
|
||||||
type(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_NAME_INPUT.value, newCommunityChannelName)
|
type(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_NAME_INPUT.value, new_community_channel_name)
|
||||||
click_obj_by_name(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_BUTTON.value)
|
click_obj_by_name(CreateOrEditCommunityChannelPopup.COMMUNITY_CHANNEL_BUTTON.value)
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
def edit_community(self, new_community_name: str, new_community_description: str, new_community_color: str):
|
||||||
|
click_obj_by_name(CommunityScreenComponents.COMMUNITY_HEADER_BUTTON.value)
|
||||||
|
click_obj_by_name(CommunitySettingsComponents.EDIT_COMMUNITY_BUTTON.value)
|
||||||
|
|
||||||
|
# Select all text in the input before typing
|
||||||
|
wait_for_object_and_type(CommunitySettingsComponents.EDIT_COMMUNITY_NAME_INPUT.value, "<Ctrl+a>")
|
||||||
|
type(CommunitySettingsComponents.EDIT_COMMUNITY_NAME_INPUT.value, new_community_name)
|
||||||
|
|
||||||
|
wait_for_object_and_type(CommunitySettingsComponents.EDIT_COMMUNITY_DESCRIPTION_INPUT.value, "<Ctrl+a>")
|
||||||
|
type(CommunitySettingsComponents.EDIT_COMMUNITY_DESCRIPTION_INPUT.value, new_community_description)
|
||||||
|
|
||||||
|
scroll_obj_by_name(CommunitySettingsComponents.EDIT_COMMUNITY_SCROLL_VIEW.value)
|
||||||
|
time.sleep(1)
|
||||||
|
scroll_obj_by_name(CommunitySettingsComponents.EDIT_COMMUNITY_SCROLL_VIEW.value)
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
click_obj_by_name(CommunitySettingsComponents.EDIT_COMMUNITY_COLOR_PICKER_BUTTON.value)
|
||||||
|
wait_for_object_and_type(CommunityColorPanelComponents.HEX_COLOR_INPUT.value, "<Ctrl+a>")
|
||||||
|
type(CommunityColorPanelComponents.HEX_COLOR_INPUT.value, new_community_color)
|
||||||
|
click_obj_by_name(CommunityColorPanelComponents.SAVE_COLOR_BUTTON.value)
|
||||||
|
|
||||||
|
click_obj_by_name(CommunitySettingsComponents.SAVE_BUTTON.value)
|
||||||
|
time.sleep(0.5)
|
||||||
|
|
||||||
|
# Validation
|
||||||
|
verify_text_matching(CommunitySettingsComponents.COMMUNITY_NAME_TEXT.value, new_community_name)
|
||||||
|
verify_text_matching(CommunitySettingsComponents.COMMUNITY_DESCRIPTION_TEXT.value, new_community_description)
|
||||||
|
obj = get_obj(CommunitySettingsComponents.COMMUNITY_LETTER_IDENTICON.value)
|
||||||
|
test.verify(obj.color.name == new_community_color, "Community color was not changed correctly")
|
||||||
|
|
||||||
|
def go_back_to_community(self):
|
||||||
|
click_obj_by_name(CommunitySettingsComponents.BACK_TO_COMMUNITY_BUTTON.value)
|
||||||
|
|
|
@ -16,3 +16,23 @@ msgDelegate_channelIdentifierNameText_StyledText = {"container": chatMessageList
|
||||||
createOrEditCommunityChannelNameInput_TextEdit = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelNameInput", "type": "TextEdit", "visible": True}
|
createOrEditCommunityChannelNameInput_TextEdit = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelNameInput", "type": "TextEdit", "visible": True}
|
||||||
createOrEditCommunityChannelDescriptionInput_TextEdit = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelDescriptionInput", "type": "TextEdit", "visible": True}
|
createOrEditCommunityChannelDescriptionInput_TextEdit = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelDescriptionInput", "type": "TextEdit", "visible": True}
|
||||||
createOrEditCommunityChannelBtn_StatusButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelBtn", "type": "StatusButton", "visible": True}
|
createOrEditCommunityChannelBtn_StatusButton = {"container": statusDesktop_mainWindow_overlay, "objectName": "createOrEditCommunityChannelBtn", "type": "StatusButton", "visible": True}
|
||||||
|
|
||||||
|
# Community settings
|
||||||
|
communitySettings_EditCommunity_Button = {"container": statusDesktop_mainWindow, "objectName": "communityOverviewSettingsEditCommunityButton", "type": "StatusButton"}
|
||||||
|
communitySettings_BackToCommunity_Button = {"container": statusDesktop_mainWindow, "objectName": "communitySettingsBackToCommunityButton", "type": "StatusBaseText", "visible": True}
|
||||||
|
communitySettings_CommunityName_Text = {"container": statusDesktop_mainWindow, "objectName": "communityOverviewSettingsCommunityName", "type": "StatusBaseText", "visible": True}
|
||||||
|
communitySettings_CommunityDescription_Text = {"container": statusDesktop_mainWindow, "objectName": "communityOverviewSettingsCommunityDescription", "type": "StatusBaseText", "visible": True}
|
||||||
|
communitySettings_Community_Identicon = {"container": statusDesktop_mainWindow, "objectName": "communityOverviewSettingsPanelIdenticon", "type": "StatusSmartIdenticon", "visible": True}
|
||||||
|
communitySettings_Community_LetterIdenticon = {"container": communitySettings_Community_Identicon, "objectName": "statusSmartIdenticonLetter", "type": "StatusLetterIdenticon", "visible": True}
|
||||||
|
|
||||||
|
# Community Edit:
|
||||||
|
communitySettings_EditCommunity_ScrollView = {"container": statusDesktop_mainWindow, "objectName": "communityEditPanelScrollView", "type": "StatusScrollView", "visible": True}
|
||||||
|
communitySettings_EditCommunity_Name_Input = {"container": communitySettings_EditCommunity_ScrollView, "objectName": "editCommunityNameInput", "type": "TextEdit"}
|
||||||
|
communitySettings_EditCommunity_Description_Input = {"container": communitySettings_EditCommunity_ScrollView, "objectName": "editCommunityDescriptionInput", "type": "TextEdit"}
|
||||||
|
communitySettings_EditCommunity_ColorPicker_Button = {"container": communitySettings_EditCommunity_ScrollView, "objectName": "editCommunityColorPicker", "type": "CommunityColorPicker"}
|
||||||
|
communitySettings_Save_Button = {"container": statusDesktop_mainWindow, "objectName": "settingsDirtyToastMessageSaveButton", "type": "StatusButton", "visible": True}
|
||||||
|
|
||||||
|
|
||||||
|
# Community color popup:
|
||||||
|
communitySettings_ColorPanel_HexColor_Input = {"container": statusDesktop_mainWindow_overlay, "objectName": "communityColorPanelHexInput", "type": "TextEdit"}
|
||||||
|
communitySettings_SaveColor_Button = {"container": statusDesktop_mainWindow_overlay, "objectName": "communityColorPanelSelectColorButton", "type": "StatusButton", "visible": True}
|
||||||
|
|
|
@ -29,10 +29,19 @@ def step(context, community_name):
|
||||||
def step(context, community_channel_name, community_channel_description, method):
|
def step(context, community_channel_name, community_channel_description, method):
|
||||||
_statusCommunityScreen.create_community_channel(community_channel_name, community_channel_description, method)
|
_statusCommunityScreen.create_community_channel(community_channel_name, community_channel_description, method)
|
||||||
|
|
||||||
@When("the admin edits a community channel named |any| to the name |any|")
|
@When("the admin edits the current community channel to the name |any|")
|
||||||
def step(context, community_channel_name, new_community_channel_name):
|
def step(context, new_community_channel_name):
|
||||||
_statusCommunityScreen.edit_community_channel(community_channel_name, new_community_channel_name)
|
_statusCommunityScreen.edit_community_channel(new_community_channel_name)
|
||||||
|
|
||||||
@Then("the user lands on the community channel named |any|")
|
@Then("the user lands on the community channel named |any|")
|
||||||
def step(context, community_channel_name):
|
def step(context, community_channel_name):
|
||||||
_statusCommunityScreen.verify_channel_name(community_channel_name)
|
_statusCommunityScreen.verify_channel_name(community_channel_name)
|
||||||
|
|
||||||
|
@When("the admin edits the current community to the name |any| and description |any| and color |any|")
|
||||||
|
def step(context, new_community_name, new_community_description, new_community_color):
|
||||||
|
_statusCommunityScreen.edit_community(new_community_name, new_community_description, new_community_color)
|
||||||
|
|
||||||
|
@When("the admin goes back to the community")
|
||||||
|
def step(context):
|
||||||
|
_statusCommunityScreen.go_back_to_community()
|
||||||
|
|
|
@ -47,10 +47,21 @@ Feature: Status Desktop community
|
||||||
Then the user lands on the community named myCommunity
|
Then the user lands on the community named myCommunity
|
||||||
When the admin creates a community channel named test-channel, with description My description with the method bottom_menu
|
When the admin creates a community channel named test-channel, with description My description with the method bottom_menu
|
||||||
Then the user lands on the community channel named test-channel
|
Then the user lands on the community channel named test-channel
|
||||||
When the admin edits a community channel named <community_channel_name> to the name <new_community_channel_name>
|
When the admin edits the current community channel to the name <new_community_channel_name>
|
||||||
Then the user lands on the community channel named <new_community_channel_name>
|
Then the user lands on the community channel named <new_community_channel_name>
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
| community_channel_name | community_channel_description | new_community_channel_name |
|
| community_channel_name | community_channel_description | new_community_channel_name |
|
||||||
| test-channel | Community channel description tested 1 | new-test-channel |
|
| test-channel | Community channel description tested 1 | new-test-channel |
|
||||||
|
|
||||||
|
Scenario Outline: Admin edits a community
|
||||||
|
When the user creates a community named myCommunity, with description My community description, intro Community Intro and outro Community Outro
|
||||||
|
Then the user lands on the community named myCommunity
|
||||||
|
When the admin edits the current community to the name <new_community_name> and description <new_community_description> and color <new_community_color>
|
||||||
|
When the admin goes back to the community
|
||||||
|
Then the user lands on the community named <new_community_name>
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
| new_community_name | new_community_description | new_community_color |
|
||||||
|
| myCommunityNamedChanged | Cool new description 123 | #ff0000 |
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import "../../../CommunitiesPortal/panels"
|
||||||
|
|
||||||
StatusScrollView {
|
StatusScrollView {
|
||||||
id: root
|
id: root
|
||||||
|
objectName: "communityEditPanelScrollView"
|
||||||
|
|
||||||
property alias name: nameInput.text
|
property alias name: nameInput.text
|
||||||
property alias description: descriptionTextInput.text
|
property alias description: descriptionTextInput.text
|
||||||
|
@ -56,27 +57,32 @@ StatusScrollView {
|
||||||
|
|
||||||
CommunityNameInput {
|
CommunityNameInput {
|
||||||
id: nameInput
|
id: nameInput
|
||||||
|
input.edit.objectName: "editCommunityNameInput"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Component.onCompleted: nameInput.input.forceActiveFocus(Qt.MouseFocusReason)
|
Component.onCompleted: nameInput.input.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
}
|
}
|
||||||
|
|
||||||
CommunityDescriptionInput {
|
CommunityDescriptionInput {
|
||||||
id: descriptionTextInput
|
id: descriptionTextInput
|
||||||
|
input.edit.objectName: "editCommunityDescriptionInput"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
CommunityLogoPicker {
|
CommunityLogoPicker {
|
||||||
id: logoPicker
|
id: logoPicker
|
||||||
|
objectName: "editCommunityLogoPicker"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
CommunityBannerPicker {
|
CommunityBannerPicker {
|
||||||
id: bannerPicker
|
id: bannerPicker
|
||||||
|
objectName: "editCommunityBannerPicker"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
CommunityColorPicker {
|
CommunityColorPicker {
|
||||||
id: colorPicker
|
id: colorPicker
|
||||||
|
objectName: "editCommunityColorPicker"
|
||||||
onPick: Global.openPopup(pickColorComponent)
|
onPick: Global.openPopup(pickColorComponent)
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
@ -100,6 +106,7 @@ StatusScrollView {
|
||||||
|
|
||||||
CommunityTagsPicker {
|
CommunityTagsPicker {
|
||||||
id: tagsPicker
|
id: tagsPicker
|
||||||
|
objectName: "editCommunityTagsPicker"
|
||||||
onPick: Global.openPopup(pickTagsComponent)
|
onPick: Global.openPopup(pickTagsComponent)
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
@ -141,6 +148,7 @@ StatusScrollView {
|
||||||
|
|
||||||
CommunityIntroMessageInput {
|
CommunityIntroMessageInput {
|
||||||
id: introMessageTextInput
|
id: introMessageTextInput
|
||||||
|
input.edit.objectName: "editCommunityIntroInput"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
minimumHeight: 108
|
minimumHeight: 108
|
||||||
maximumHeight: 108
|
maximumHeight: 108
|
||||||
|
@ -148,6 +156,7 @@ StatusScrollView {
|
||||||
|
|
||||||
CommunityOutroMessageInput {
|
CommunityOutroMessageInput {
|
||||||
id: outroMessageTextInput
|
id: outroMessageTextInput
|
||||||
|
input.edit.objectName: "editCommunityOutroInput"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ StackLayout {
|
||||||
spacing: 16
|
spacing: 16
|
||||||
|
|
||||||
StatusSmartIdenticon {
|
StatusSmartIdenticon {
|
||||||
|
objectName: "communityOverviewSettingsPanelIdenticon"
|
||||||
name: root.name
|
name: root.name
|
||||||
|
|
||||||
icon {
|
icon {
|
||||||
|
@ -75,6 +76,7 @@ StackLayout {
|
||||||
|
|
||||||
StatusBaseText {
|
StatusBaseText {
|
||||||
id: nameText
|
id: nameText
|
||||||
|
objectName: "communityOverviewSettingsCommunityName"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
font.pixelSize: 24
|
font.pixelSize: 24
|
||||||
color: Theme.palette.directColor1
|
color: Theme.palette.directColor1
|
||||||
|
@ -84,6 +86,7 @@ StackLayout {
|
||||||
|
|
||||||
StatusBaseText {
|
StatusBaseText {
|
||||||
id: descriptionText
|
id: descriptionText
|
||||||
|
objectName: "communityOverviewSettingsCommunityDescription"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
font.pixelSize: 15
|
font.pixelSize: 15
|
||||||
color: Theme.palette.directColor1
|
color: Theme.palette.directColor1
|
||||||
|
@ -93,6 +96,7 @@ StackLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusButton {
|
StatusButton {
|
||||||
|
objectName: "communityOverviewSettingsEditCommunityButton"
|
||||||
visible: root.editable
|
visible: root.editable
|
||||||
text: qsTr("Edit Community")
|
text: qsTr("Edit Community")
|
||||||
onClicked: root.currentIndex = 1
|
onClicked: root.currentIndex = 1
|
||||||
|
|
|
@ -104,6 +104,7 @@ StatusAppTwoPanelLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
StatusBaseText {
|
StatusBaseText {
|
||||||
|
objectName: "communitySettingsBackToCommunityButton"
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
text: "<- " + qsTr("Back to community")
|
text: "<- " + qsTr("Back to community")
|
||||||
color: Theme.palette.baseColor1
|
color: Theme.palette.baseColor1
|
||||||
|
|
|
@ -12,10 +12,11 @@ import StatusQ.Popups 0.1
|
||||||
StatusScrollView {
|
StatusScrollView {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property string title: qsTr("Community Color")
|
property string title: qsTr("Community Colour")
|
||||||
|
|
||||||
property var rightButtons: StatusButton {
|
property var rightButtons: StatusButton {
|
||||||
text: qsTr("Select Community Color")
|
objectName: "communityColorPanelSelectColorButton"
|
||||||
|
text: qsTr("Select Community Colour")
|
||||||
onClicked: root.accepted()
|
onClicked: root.accepted()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,6 +59,7 @@ StatusScrollView {
|
||||||
|
|
||||||
StatusInput {
|
StatusInput {
|
||||||
id: hexInput
|
id: hexInput
|
||||||
|
input.edit.objectName: "communityColorPanelHexInput"
|
||||||
|
|
||||||
property color newColor: text
|
property color newColor: text
|
||||||
// TODO: editingFinished() signal instead of this crutch
|
// TODO: editingFinished() signal instead of this crutch
|
||||||
|
|
|
@ -117,6 +117,7 @@ Rectangle {
|
||||||
|
|
||||||
StatusButton {
|
StatusButton {
|
||||||
id: saveChangesButton
|
id: saveChangesButton
|
||||||
|
objectName: "settingsDirtyToastMessageSaveButton"
|
||||||
enabled: root.active && root.saveChangesButtonEnabled
|
enabled: root.active && root.saveChangesButtonEnabled
|
||||||
text: qsTr("Save changes")
|
text: qsTr("Save changes")
|
||||||
onClicked: root.saveChangesClicked()
|
onClicked: root.saveChangesClicked()
|
||||||
|
|
Loading…
Reference in New Issue