From f8dfc82dd4b93d47823235276637e707f5860b09 Mon Sep 17 00:00:00 2001 From: Churikova Tetiana Date: Mon, 18 Mar 2019 14:48:55 +0100 Subject: [PATCH] Decline group invites Signed-off-by: Serhy --- .../tests/atomic/chats/test_group_chat.py | 104 ++++++++++++------ test/appium/views/chat_view.py | 6 + 2 files changed, 77 insertions(+), 33 deletions(-) diff --git a/test/appium/tests/atomic/chats/test_group_chat.py b/test/appium/tests/atomic/chats/test_group_chat.py index d9962f3543..76b1aa40f7 100644 --- a/test/appium/tests/atomic/chats/test_group_chat.py +++ b/test/appium/tests/atomic/chats/test_group_chat.py @@ -3,6 +3,14 @@ from tests.base_test_case import MultipleDeviceTestCase from tests.users import chat_users from views.sign_in_view import SignInView +def return_left_chat_system_message(default_username): + return "*%s* left the group" % default_username + +def return_created_chat_system_message(username, chat_name): + return "*%s* created the group *%s*" % (username, chat_name) + +def return_joined_chat_system_message(default_username): + return "*%s* has joined the group" % default_username def create_users(driver_1, driver_2, username_1=None, username_2=None): device_1_sign_in, device_2_sign_in = SignInView(driver_1), SignInView(driver_2) @@ -10,13 +18,16 @@ def create_users(driver_1, driver_2, username_1=None, username_2=None): return device_1_sign_in.create_user(username_1), device_2_sign_in.create_user(username_1) return device_1_sign_in.create_user(), device_2_sign_in.create_user() +def get_default_username(device_home): + device_profile_view = device_home.profile_button.click() + device_default_username = device_profile_view.default_username_text.text + device_home.home_button.click() + return device_default_username -def create_and_join_group_chat(device_1_home, device_2_home, chat_name): +def create_new_group_chat(device_1_home, device_2_home, chat_name): # device 2: get public key and default username device_2_public_key = device_2_home.get_public_key() - device_2_profile_view = device_2_home.profile_button.click() - device_2_default_username = device_2_profile_view.default_username_text.text - device_2_home.home_button.click() + device_2_default_username = get_default_username(device_2_home) # device 1: add device 2 as contact device_1_chat = device_1_home.add_contact(device_2_public_key) @@ -27,10 +38,15 @@ def create_and_join_group_chat(device_1_home, device_2_home, chat_name): # device 2: open group chat device_2_chat = device_2_home.get_chat_with_user(chat_name).click() - device_2_chat.join_chat_button.click() return device_1_chat, device_2_chat +def create_and_join_group_chat(device_1_home, device_2_home, chat_name): + device_1_chat, device_2_chat = create_new_group_chat(device_1_home, device_2_home, chat_name) + device_2_chat.join_chat_button.click() + return device_1_chat, device_2_chat + + @marks.chat class TestGroupChatMultipleDevice(MultipleDeviceTestCase): @@ -53,22 +69,21 @@ class TestGroupChatMultipleDevice(MultipleDeviceTestCase): @marks.testrail_id(3993) @marks.critical def test_send_message_in_group_chat(self): - message_from_device_1 = 'Hello from device 1' - message_from_device_2 = 'Hi there! Sent from device 2' self.create_drivers(2) device_1_home, device_2_home = create_users(self.drivers[0], self.drivers[1]) chat_name = device_1_home.get_public_chat_name() device_1_chat, device_2_chat = create_and_join_group_chat(device_1_home, device_2_home, chat_name) + for chat in (device_1_chat, device_2_chat): + chat.send_message("Message from device: %s" % chat.driver.number) - device_1_chat.send_message(message_from_device_1) - device_2_chat.send_message(message_from_device_2) + for chat in (device_1_chat, device_2_chat): + for chat_driver in (device_1_chat, device_2_chat): + if not chat.chat_element_by_text( + "Message from device: %s" % chat_driver.driver.number).is_element_displayed(): + self.errors.append("Message from device '%s' was not received" % chat_driver.driver.number) - if not device_2_chat.chat_element_by_text(message_from_device_1).is_element_displayed(): - self.errors.append("Message with test '%s' was not received" % message_from_device_1) - if not device_1_chat.chat_element_by_text(message_from_device_2).is_element_displayed(): - self.errors.append("Message with test '%s' was not received" % message_from_device_2) self.verify_no_errors() @marks.testrail_id(5674) @@ -81,28 +96,24 @@ class TestGroupChatMultipleDevice(MultipleDeviceTestCase): device_1_home, device_2_home = create_users(self.drivers[0], self.drivers[1], username_1, username_2) chat_name = device_1_home.get_public_chat_name() - device_2_profile = device_2_home.profile_button.click() - device_2_default_username = device_2_profile.default_username_text.text - + device_2_default_username = get_default_username(device_2_home) device_1_chat, device_2_chat = create_and_join_group_chat(device_1_home, device_2_home, chat_name) - admin_created_chat_system_message = "*%s* created the group *%s*" % (username_1, chat_name) - user2_joined_chat_system_message = "*%s* has joined the group" % device_2_default_username - user2_left_chat_system_message = "*%s* left the group" % device_2_default_username - # device 2: delete group chat device_2_chat = device_2_home.get_chat_with_user(chat_name).click() device_2_chat.delete_chat() # device 1: check system messages in the group chat - if not device_1_chat.element_by_text(admin_created_chat_system_message).is_element_displayed(): - self.errors.append("System message: '%s' in group chat is not shown" % admin_created_chat_system_message) - if not device_1_chat.element_by_text(user2_joined_chat_system_message).is_element_displayed(): - self.errors.append( - "System message: '%s' in group chat is not shown" % user2_joined_chat_system_message) - if not device_1_chat.element_by_text(user2_left_chat_system_message).is_element_displayed(): - self.errors.append( - "System message: '%s' in group chat is not shown" % user2_left_chat_system_message) + + system_messages = [ + return_created_chat_system_message(username_1, chat_name), + return_joined_chat_system_message(device_2_default_username), + return_left_chat_system_message(device_2_default_username) + ] + for message in system_messages: + if not device_1_chat.chat_element_by_text(message).is_element_displayed(): + self.errors.append("Message with test '%s' was not received" % message) + self.verify_no_errors() @marks.testrail_id(3997) @@ -125,7 +136,8 @@ class TestGroupChatMultipleDevice(MultipleDeviceTestCase): # device_1: check if chat is was deleted if device_1_home.element_by_text(chat_name).is_element_displayed(): - self.errors.append("Public chat '%s' is shown, but the chat has been deleted" % chat_name) + self.errors.append("Group chat '%s' is shown, but the chat has been deleted" % chat_name) + self.verify_no_errors() @marks.testrail_id(3998) @@ -144,9 +156,7 @@ class TestGroupChatMultipleDevice(MultipleDeviceTestCase): # device 2: get public key and default username device_2_public_key = device_2_home.get_public_key() - device_2_profile_view = device_2_home.profile_button.click() - device_2_default_username = device_2_profile_view.default_username_text.text - device_2_home.home_button.click() + device_2_default_username = get_default_username(device_2_home) # device 1: add contacts device_1_home.add_contact(chat_member['public_key']) @@ -168,5 +178,33 @@ class TestGroupChatMultipleDevice(MultipleDeviceTestCase): device_2_chat.join_chat_button.click() if device_2_chat.chat_element_by_text(message_for_device_2).is_element_displayed(): self.errors.append('Message that was sent after device 2 has joined is visible') - self.verify_no_errors() + + @marks.testrail_id(5756) + @marks.high + def test_decline_invitation_to_group_chat(self): + self.create_drivers(2) + message_for_device_2 = 'This message should not be visible for device 2' + + device_1_home, device_2_home = create_users(self.drivers[0], self.drivers[1]) + chat_name = device_1_home.get_public_chat_name() + device_1_chat, device_2_chat = create_new_group_chat(device_1_home, device_2_home, chat_name) + device_2_chat.decline_invitation_button.click() + + # device 2: check that chat is deleted + if device_2_home.element_by_text(chat_name).is_element_displayed(): + self.errors.append("Group chat '%s' is shown, but the chat has been deleted" % chat_name) + + # device 1: check system message about leaving a group chat + device_2_default_username = get_default_username(device_2_home) + user2_left_chat_system_message = return_left_chat_system_message(device_2_default_username) + if not device_1_chat.chat_element_by_text(user2_left_chat_system_message).is_element_displayed(): + self.errors.append("Message with text '%s' was not received" % user2_left_chat_system_message) + + # device 1: send some message to group chat + device_1_chat.send_message(message_for_device_2) + + # device 2: check that chat doesn't reappear + if device_2_home.element_by_text(chat_name).is_element_displayed(): + self.errors.append("Group chat '%s' is shown, but the chat has been deleted" % chat_name) + self.verify_no_errors() \ No newline at end of file diff --git a/test/appium/views/chat_view.py b/test/appium/views/chat_view.py index 05738efe6e..8b0a7c93dd 100644 --- a/test/appium/views/chat_view.py +++ b/test/appium/views/chat_view.py @@ -205,6 +205,11 @@ class JoinChatButton(BaseButton): super(JoinChatButton, self).__init__(driver) self.locator = self.Locator.text_part_selector('JOIN GROUP') +class DeclineChatButton(BaseButton): + def __init__(self, driver): + super(DeclineChatButton, self).__init__(driver) + self.locator = self.Locator.text_part_selector('Decline invitation') + class ChatElementByText(BaseText): def __init__(self, driver, text): @@ -319,6 +324,7 @@ class ChatView(BaseView): self.leave_chat_button = LeaveChatButton(self.driver) self.leave_button = LeaveButton(self.driver) self.join_chat_button = JoinChatButton(self.driver) + self.decline_invitation_button = DeclineChatButton(self.driver) self.chat_settings = ChatSettings(self.driver) self.view_profile_button = ViewProfileButton(self.driver)