2024-07-18 17:57:24 +07:00
import allure
import pytest
from allure_commons . _allure import step
import constants
import driver
from constants import UserAccount
from constants . community_settings import BlockPopupWarnings , ToastMessages
from gui . main_window import MainWindow
import configs
2024-08-15 17:31:23 +03:00
from tests . communities import marks
2024-07-18 17:57:24 +07:00
pytestmark = marks
@allure.testcase ( ' https://ethstatus.testrail.net/index.php?/cases/view/738772 ' ,
" Block or unblock someone in Status " )
2024-08-15 17:31:23 +03:00
@pytest.mark.case ( 738772 )
2024-07-18 17:57:24 +07:00
@pytest.mark.parametrize ( ' user_data_one, user_data_two, user_data_three ' , [
( configs . testpath . TEST_USER_DATA / ' squisher ' , configs . testpath . TEST_USER_DATA / ' athletic ' ,
configs . testpath . TEST_USER_DATA / ' nervous ' )
] )
def test_block_and_unblock_user_from_settings_and_profile ( multiple_instances , user_data_one , user_data_two , user_data_three ) :
user_one : UserAccount = constants . user_account_one
user_two : UserAccount = constants . user_account_two
user_three : UserAccount = constants . user_account_three
timeout = configs . timeouts . UI_LOAD_TIMEOUT_MSEC
main_screen = MainWindow ( )
with multiple_instances ( user_data = user_data_one ) as aut_one , multiple_instances (
user_data = user_data_two ) as aut_two , multiple_instances ( user_data = user_data_three ) as aut_three :
with step ( f ' Launch multiple instances with authorized users { user_one . name } , { user_two . name } , { user_three } ' ) :
for aut , account in zip ( [ aut_one , aut_two , aut_three ] , [ user_one , user_two , user_three ] ) :
aut . attach ( )
main_screen . wait_until_appears ( configs . timeouts . APP_LOAD_TIMEOUT_MSEC ) . prepare ( )
main_screen . authorize_user ( account )
main_screen . hide ( )
with step (
2024-08-19 20:41:54 +03:00
f ' User { user_one . name } , block contact { user_two . name } from user profile and verify button Unblock '
f ' appeared ' ) :
2024-07-18 17:57:24 +07:00
aut_one . attach ( )
main_screen . prepare ( )
community_screen = main_screen . left_panel . select_community ( ' Community with 2 users ' )
profile_popup = community_screen . right_panel . click_member ( user_two . name )
block_popup = profile_popup . block_user ( )
warning_text = BlockPopupWarnings . BLOCK_WARNING_PART_1 . value + user_two . name + BlockPopupWarnings . BLOCK_WARNING_PART_2 . value
assert driver . waitFor ( lambda : block_popup . get_warning_text ( ) == warning_text ,
timeout ) , f ' Text is incorrect, actual text is { block_popup . get_warning_text ( ) } , correct text is { warning_text } '
block_popup . block ( )
with step ( ' Check that Unblock user button appeared ' ) :
assert driver . waitFor ( lambda : profile_popup . is_unblock_button_visible ,
timeout ) , f " Unblock button did not appear "
main_screen . left_panel . click ( )
with step ( ' Check toast message about blocked member ' ) :
toast_messages = main_screen . wait_for_notification ( )
message_1 = ToastMessages . REMOVED_CONTACT_TOAST . value
message_2 = user_two . name + ToastMessages . BLOCKED_USER_TOAST . value
assert driver . waitFor ( lambda : message_1 in toast_messages ,
timeout ) , f " Toast message { message_1 } is incorrect, current message is { toast_messages } "
assert driver . waitFor ( lambda : message_2 in toast_messages ,
timeout ) , f " Toast message { message_2 } is incorrect, current message is { toast_messages } "
main_screen . hide ( )
with step ( f ' User { user_two . name } does not see { user_one . name } in contacts list ' ) :
aut_two . attach ( )
main_screen . prepare ( )
contacts_settings = main_screen . left_panel . open_settings ( ) . left_panel . open_messaging_settings ( ) . open_contacts_settings ( )
assert driver . waitFor ( lambda : user_one . name not in contacts_settings . contact_items , timeout )
main_screen . hide ( )
with step (
f ' User { user_one . name } , unblock { user_two . name } from contact settings and verify { user_two . name } was removed from blocked list ' ) :
aut_one . attach ( )
main_screen . prepare ( )
contacts_settings = main_screen . left_panel . open_settings ( ) . left_panel . open_messaging_settings ( ) . open_contacts_settings ( )
unblock_popup = contacts_settings . open_blocked ( ) . open_more_options_popup ( user_two . name ) . unblock_user ( )
warning_text = BlockPopupWarnings . UNBLOCK_TEXT_1 . value + user_two . name + BlockPopupWarnings . UNBLOCK_TEXT_2 . value
assert driver . waitFor ( lambda : unblock_popup . get_warning_text ( ) == warning_text ,
timeout ) , f ' Text is incorrect, actual text is { unblock_popup . get_warning_text ( ) } , correct text is { warning_text } '
unblock_popup . unblock ( )
with step ( ' Check toast message about unblocked member ' ) :
toast_messages = main_screen . wait_for_notification ( )
message_2 = user_two . name + ToastMessages . UNBLOCKED_USER_TOAST . value
assert driver . waitFor ( lambda : message_2 in toast_messages ,
timeout ) , f " Toast message { message_2 } is incorrect, current message is { toast_messages } "
with step (
f ' User { user_one . name } , block stranger { user_three . name } from user profile and verify button Unblock appeared ' ) :
community_screen = main_screen . left_panel . select_community ( ' Community with 2 users ' )
profile_popup = community_screen . right_panel . click_member ( user_three . name )
block_popup = profile_popup . block_user ( )
block_popup . block ( )
with step ( ' Check that Unblock user button appeared ' ) :
assert driver . waitFor ( lambda : profile_popup . is_unblock_button_visible , timeout ) , f " Unblock button did not appear "
with step (
f ' User { user_one . name } , unblock stranger { user_three . name } from user profile and verify that Unblock button dissapeared and send request is visible again ' ) :
profile_popup . unblock_user ( ) . unblock ( )
assert driver . waitFor ( lambda : profile_popup . is_send_request_button_visible ( ) , timeout )