tests(suite_messaging): properly check if reply message has reply
Prior to this commit we were merely checking if the message in question was the last one. With this commit we now check whether there's a reply in the first place and whether the reply-to-message is the correct one. We also distinguish whether the message we're replying to is the one from the loggedin user (and not someone else's)
This commit is contained in:
parent
6e5b98d157
commit
dbf7fa4aab
|
@ -84,6 +84,8 @@ class ChatStickerPopup(Enum):
|
||||||
|
|
||||||
class ChatItems(Enum):
|
class ChatItems(Enum):
|
||||||
STATUS_MESSAGE_TEXT_MESSAGE = "StatusMessage_textMessage"
|
STATUS_MESSAGE_TEXT_MESSAGE = "StatusMessage_textMessage"
|
||||||
|
STATUS_MESSAGE_REPLY_DETAILS = "StatusMessage_replyDetails"
|
||||||
|
STATUS_MESSAGE_REPLY_DETAILS_TEXT_MESSAGE = "StatusMessage_replyDetails_textMessage"
|
||||||
STATUS_TEXT_MESSAGE_CHAT_TEXT = "StatusTextMessage_chatText"
|
STATUS_TEXT_MESSAGE_CHAT_TEXT = "StatusTextMessage_chatText"
|
||||||
|
|
||||||
class ChatMessagesHistory(Enum):
|
class ChatMessagesHistory(Enum):
|
||||||
|
@ -319,6 +321,25 @@ class StatusChatScreen:
|
||||||
[loaded, _] = is_loaded_visible_and_enabled(ChatComponents.LAST_MESSAGE_TEXT.value)
|
[loaded, _] = is_loaded_visible_and_enabled(ChatComponents.LAST_MESSAGE_TEXT.value)
|
||||||
verify_false(loaded, "Success: No message was found")
|
verify_false(loaded, "Success: No message was found")
|
||||||
|
|
||||||
|
def verify_last_message_is_reply(self, message: str):
|
||||||
|
last_message_obj = self.get_message_at_index(0)
|
||||||
|
last_message_reply_details_obj = getChildrenWithObjectName(last_message_obj, ChatItems.STATUS_MESSAGE_REPLY_DETAILS.value)[0]
|
||||||
|
verify(not is_null(last_message_reply_details_obj), "Checking last message is a reply: " + message)
|
||||||
|
|
||||||
|
def verify_last_message_is_reply_to(self, reply: str, message: str):
|
||||||
|
last_message_obj = self.get_message_at_index(0)
|
||||||
|
last_message_reply_details_obj = getChildrenWithObjectName(last_message_obj, ChatItems.STATUS_MESSAGE_REPLY_DETAILS.value)[0]
|
||||||
|
text_message_obj = getChildrenWithObjectName(last_message_reply_details_obj, ChatItems.STATUS_MESSAGE_REPLY_DETAILS_TEXT_MESSAGE.value)[0]
|
||||||
|
verify_text_contains(str(text_message_obj.messageDetails.messageText), str(message))
|
||||||
|
|
||||||
|
def verify_last_message_is_reply_to_loggedin_user_message(self, reply: str, message: str):
|
||||||
|
last_message_obj = self.get_message_at_index(0)
|
||||||
|
last_message_reply_details_obj = getChildrenWithObjectName(last_message_obj, ChatItems.STATUS_MESSAGE_REPLY_DETAILS.value)[0]
|
||||||
|
text_message_obj = getChildrenWithObjectName(last_message_reply_details_obj, ChatItems.STATUS_MESSAGE_REPLY_DETAILS_TEXT_MESSAGE.value)[0]
|
||||||
|
verify_text_contains(str(text_message_obj.messageDetails.messageText), str(message))
|
||||||
|
verify_values_equal(str(last_message_reply_details_obj.replyDetails.sender.id), str(last_message_obj.senderId), "Message sender ID doesn't match reply message sender ID")
|
||||||
|
|
||||||
|
|
||||||
def verify_last_message_sent(self, message: str):
|
def verify_last_message_sent(self, message: str):
|
||||||
# Get the message text
|
# Get the message text
|
||||||
# We don't search for StatusTextMessage_chatText directly, because there're 2 instances of it in a reply message
|
# We don't search for StatusTextMessage_chatText directly, because there're 2 instances of it in a reply message
|
||||||
|
|
|
@ -182,8 +182,15 @@ def step(context, message):
|
||||||
|
|
||||||
@Then("the chat message \"|any|\" is displayed as a reply")
|
@Then("the chat message \"|any|\" is displayed as a reply")
|
||||||
def step(context, message):
|
def step(context, message):
|
||||||
# TODO: Check the last message is really a reply.
|
_statusChat.verify_last_message_is_reply(message)
|
||||||
_statusChat.verify_last_message_sent(message)
|
|
||||||
|
@Then("the chat message \"|any|\" is displayed as a reply of \"|any|\"")
|
||||||
|
def step(context, reply, message):
|
||||||
|
_statusChat.verify_last_message_is_reply_to(reply, message)
|
||||||
|
|
||||||
|
@Then("the chat message \"|any|\" is displayed as a reply of this user's \"|any|\"")
|
||||||
|
def step(context, reply, message):
|
||||||
|
_statusChat.verify_last_message_is_reply_to_loggedin_user_message(reply, message)
|
||||||
|
|
||||||
@Then("the chat message \"|any|\" is displayed as an edited one")
|
@Then("the chat message \"|any|\" is displayed as an edited one")
|
||||||
def step(context, message):
|
def step(context, message):
|
||||||
|
|
|
@ -24,17 +24,15 @@ Feature: Status Desktop Chat Basic Flows
|
||||||
| I am from status |
|
| I am from status |
|
||||||
| tell me how you do? |
|
| tell me how you do? |
|
||||||
|
|
||||||
# TODO: Scenario: The user can reply to their OWN message
|
|
||||||
@mayfail
|
@mayfail
|
||||||
# TODO: It works standalone but when it runs as part of the sequence, the action of reply is not done always. The popup option does not appear.
|
# TODO: It works standalone but when it runs as part of the sequence, the action of reply is not done always. The popup option does not appear.
|
||||||
Scenario Outline: The user can reply to the last message
|
Scenario Outline: The user can reply to own message
|
||||||
Given the user sends a chat message "random chat message"
|
Given the user sends a chat message "<message>"
|
||||||
When the user replies to the message at index 0 with "<reply>"
|
When the user replies to the message at index 0 with "<reply>"
|
||||||
# TODO: Check the last message is really a reply, now just checking the last message is the expected one but could not be a reply. The popup option does not appear.
|
Then the chat message "<reply>" is displayed as a reply of this user's "<message>"
|
||||||
Then the chat message "<reply>" is displayed as a reply
|
|
||||||
Examples:
|
Examples:
|
||||||
| reply |
|
| message | reply |
|
||||||
| This is a reply |
|
| random chat message | This is a reply |
|
||||||
|
|
||||||
@mayfail
|
@mayfail
|
||||||
# TODO: It works standalone but when it runs as part of the sequence, the action of edit is not done always. The popup option does not appear.
|
# TODO: It works standalone but when it runs as part of the sequence, the action of edit is not done always. The popup option does not appear.
|
||||||
|
|
|
@ -215,6 +215,7 @@ Control {
|
||||||
active: isAReply
|
active: isAReply
|
||||||
visible: active
|
visible: active
|
||||||
sourceComponent: StatusMessageReply {
|
sourceComponent: StatusMessageReply {
|
||||||
|
objectName: "StatusMessage_replyDetails"
|
||||||
replyDetails: root.replyDetails
|
replyDetails: root.replyDetails
|
||||||
profileClickable: root.profileClickable
|
profileClickable: root.profileClickable
|
||||||
audioMessageInfoText: root.audioMessageInfoText
|
audioMessageInfoText: root.audioMessageInfoText
|
||||||
|
|
|
@ -97,6 +97,7 @@ Item {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
StatusTextMessage {
|
StatusTextMessage {
|
||||||
|
objectName: "StatusMessage_replyDetails_textMessage"
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
textField.font.pixelSize: Theme.secondaryTextFontSize
|
textField.font.pixelSize: Theme.secondaryTextFontSize
|
||||||
textField.color: Theme.palette.baseColor1
|
textField.color: Theme.palette.baseColor1
|
||||||
|
|
Loading…
Reference in New Issue