# -*- coding: utf-8 -*-" ## # Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. # copyright # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, # IN PART OR IN WHOLE, # WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # file tst_post_treatment_disconnection # date 2022/06/06 # author Amol Shinde # author Shweta Policepatil # author Amrita Debnath # author Ajina S M # NOTE: # This test contradicts verification of post treatment section. import names from dialin.ui import utils from dialin.ui.hd_simulator import HDSimulator from configuration import config from configuration import utility from dialin.common.hd_defs import TreatmentStates, TreatmentRinsebackStates, TreatmentRecircStates, BloodLeakZeroingStates hd_simulator = HDSimulator() SCREEN_OBJ = names.o_EndTreatmentRecirculateStack_EndTreatmentBase_EndTreatmentBase COUNT_DOWN_VALUE = 121 TIMER_DEFAULT_VALUE = 1 NUM_OF_INSTRUCTION = 1 def verify_recirculate_recirculate_state(): """ Method to verify Treatment Recirculate Recirculate state screens """ test.startSection("verifying Treatment Recirculate Recirculate state screens") hd_simulator.cmd_set_treatment_time(sec_total = 120, sec_elapsed = 20, sec_remain = 100) hd_simulator.cmd_set_treatment_states_data(sub_mode = TreatmentStates.TREATMENT_RECIRC_STATE.value , uf_state = TreatmentStates.TREATMENT_START_STATE.value, saline_state = TreatmentStates.TREATMENT_START_STATE.value, heparin_state = TreatmentStates.TREATMENT_START_STATE.value, rinseback_state= TreatmentStates.TREATMENT_START_STATE.value, recirculate_state = TreatmentRecircStates.TREATMENT_RECIRC_RECIRC_STATE.value, blood_prime_state = TreatmentStates.TREATMENT_START_STATE.value, treatment_end_state = TreatmentStates.TREATMENT_START_STATE.value, treatment_stop_state = TreatmentStates.TREATMENT_START_STATE.value, dialysis_state = TreatmentStates.TREATMENT_START_STATE.value, bloodLeakZeoringState = BloodLeakZeroingStates.BLD_ZEROING_IDLE_STATE.value) test.startSection("Verifying Timer count down timer " + config.RECIRCULATE_TEXT) for num in range(TIMER_DEFAULT_VALUE, COUNT_DOWN_VALUE): hd_simulator.cmd_send_treatment_recirculate_data(timeout_total=num, timeout_count_down=num) min = utility.convert_seconds_into_min_and_sec(num, time_format="%M") sec = utility.convert_seconds_into_min_and_sec(num, time_format="%S") test.compare(str(waitForObject(names.o_EndTreatmentBase_TimeText_minute_Text).text), str(sec),"Verifying seconds on Timer in " + config.RECIRCULATE_TEXT) test.compare(str(waitForObject(names.o_EndTreatmentBase_TimeText_hour_Text).text), str(min),"Verifying minutes on Timer in " + config.RECIRCULATE_TEXT) test.endSection() test.compare(str(waitForObject(names.o_recirculate_text).text), config.RECIRCULATE_TEXT, "Recirculate text must be {}".format(config.RECIRCULATE_TEXT)) test.compare(str(waitForObjectExists(names.o_EndTreatmentBase_RECONNECT_Text).text), config.RECONNECT_BUTTON_TEXT, "Reconnect button text must be {}".format(config.RECONNECT_BUTTON_TEXT)) test.verify(waitForObjectExists(names.o_EndTreatmentBase_RECONNECT_Text).enabled, "Reconnect button must be active") mouseClick(waitForObject(names.o_EndTreatmentBase_mouseArea_MouseArea_2)) test.compare(str(waitForObjectExists(names.o_EndTreatmentBase_END_TREATMENT_Text).text), config.END_TREATMENT_BUTTON_TEXT, "End Treatment button text must be {}".format(config.END_TREATMENT_BUTTON_TEXT)) test.verify(waitForObjectExists(names.o_EndTreatmentBase_END_TREATMENT_Text).enabled, "End Treatment button on recirculate state screen must be active") mouseClick(waitForObject(names.o_EndTreatmentBase_mouseArea_MouseArea)) verify_right_instruction_in_recirculate_state(NUM_OF_INSTRUCTION) verify_left_instruction_in_recirculate_state(NUM_OF_INSTRUCTION) verify_right_instruction_in_recirculate_state(NUM_OF_INSTRUCTION) verify_rejection_messages_for_recirculate() test.endSection() def verify_treatment_recirculate_stopped_state(): """ Method to verify Treatment Recirculate stopped state screens """ test.startSection("verifying Treatment Recirculate stopped state screens") hd_simulator.cmd_set_treatment_states_data(sub_mode=TreatmentStates.TREATMENT_RECIRC_STATE.value, uf_state=TreatmentStates.TREATMENT_START_STATE.value, saline_state=TreatmentStates.TREATMENT_START_STATE.value, heparin_state=TreatmentStates.TREATMENT_START_STATE.value, rinseback_state=TreatmentRinsebackStates.RINSEBACK_STOP_INIT_STATE.value, recirculate_state=TreatmentRecircStates.TREATMENT_RECIRC_STOPPED_STATE.value, blood_prime_state=TreatmentStates.TREATMENT_START_STATE.value, treatment_end_state=TreatmentStates.TREATMENT_START_STATE.value, treatment_stop_state=TreatmentStates.TREATMENT_START_STATE.value, dialysis_state=TreatmentStates.TREATMENT_START_STATE.value, bloodLeakZeoringState = BloodLeakZeroingStates.BLD_ZEROING_IDLE_STATE.value) test.startSection("Verifying Timer count down timer on Recirculate Stopped state") for num in range(TIMER_DEFAULT_VALUE, COUNT_DOWN_VALUE): hd_simulator.cmd_send_treatment_recirculate_data(timeout_total=num, timeout_count_down=num) min = utility.convert_seconds_into_min_and_sec(num, time_format="%M") sec = utility.convert_seconds_into_min_and_sec(num, time_format="%S") test.compare(str(waitForObject(names.o_EndTreatmentBase_TimeText_minute_Text).text), str(sec),"Verifying seconds on Timer in recirculate stopped state") test.compare(str(waitForObject(names.o_EndTreatmentBase_TimeText_hour_Text).text), str(min),"Verifying minutes on Timer in recirculate stopped state") test.endSection() test.compare(str(waitForObject(names.o_EndTreatmentBase_ReturnToRecirculate_Text).text), config.RETURN_TO_RECIRCULATE, "Reconnect text must be {}".format(config.RETURN_TO_RECIRCULATE)) test.compare(str(waitForObjectExists(names.o_EndTreatmentBase_BACK_TO_RECIRCULATE_Text).text), config.BACK_TO_RECIRCULATE_TEXT, "Back to recirculate button text must be {}".format(config.BACK_TO_RECIRCULATE_TEXT)) test.verify(waitForObjectExists(names.o_EndTreatmentBase_BACK_TO_RECIRCULATE_Text).enabled, "Back to recirculate button must be active") mouseClick(waitForObject(names.o_EndTreatmentBase_mouseArea_MouseArea_2)) test.compare(str(waitForObjectExists(names.o_EndTreatmentBase_END_TREATMENT_Text).text), config.END_TREATMENT_BUTTON_TEXT, "End Treatment button text must be {}".format(config.END_TREATMENT_BUTTON_TEXT)) test.verify(waitForObjectExists(names.o_EndTreatmentBase_END_TREATMENT_Text).enabled, "End Treatment button on recirculate stopped state screen must be active") mouseClick(waitForObject(names.o_EndTreatmentBase_mouseArea_MouseArea)) test.verify(waitForObjectExists(names.o_EndTreatmentBase_confirm_Text).enabled, "Confirm button on recirculate stopped state screen must be active") mouseClick(waitForObject(names.o_EndTreatmentBase_ButtonEndTreatment)) verify_rejection_messages_for_recirculate() test.endSection() def verify_right_instruction_in_recirculate_state(NUM_OF_INSTRUCTION): """. Method to verify right arrow functionality @param num_of_instructions - (int) count the number of instructions """ test.startSection("verifying right arrow functionality for recirculate state Screen") utility.verify_missing_object(names.o_EndTreatmentBase_leftImage_Image) for indicator in range(1, NUM_OF_INSTRUCTION, 1): utility.verify_bullet_navigation(indicator, NUM_OF_INSTRUCTION, SCREEN_OBJ) if indicator != NUM_OF_INSTRUCTION: mouseClick(waitForObject(names.o_EndTreatmentBase_rightImage_Image)) test.compare(str(waitForObjectExists(names.o_recirculate_text).text), config.RECIRCULATE_TEXT, "Recirculate text must be {}".format(config.RECIRCULATE_TEXT)) utility.verify_missing_object(names.o_EndTreatmentBase_rightImage_Image) test.endSection() def verify_left_instruction_in_recirculate_state(num_of_instructions): """ Method to verify left arrow functionality for recirculate state screens @param num_of_instructions - (int) count the number of instructions """ test.startSection("verifying left arrow functionality for recirculate state screens") utility.verify_missing_object(names.o_EndTreatmentBase_rightImage_Image) for indicator in range(NUM_OF_INSTRUCTION, 0, -1): utility.verify_bullet_navigation(indicator, NUM_OF_INSTRUCTION, SCREEN_OBJ) if indicator != 1: mouseClick(waitForObject(names.o_EndTreatmentBase_leftImage_Image)) test.compare(str(waitForObjectExists(names.o_recirculate_text).text), config.RECIRCULATE_TEXT, "Recirculate text must be {}".format(config.RECIRCULATE_TEXT)) utility.verify_missing_object(names.o_EndTreatmentBase_leftImage_Image) test.endSection() def verify_rejection_messages_for_recirculate(): """ Method to test current states and rejection messages """ test.startSection("Verifying test case scenario for rejection and acceptance in current state") for reason_id in range(1, config.NUM_OF_REQUEST_REJECT_REASONS + 1): hd_simulator.cmd_send_treatment_adjust_recirculate_response(accepted=0, reason=reason_id) rejection_message = waitForObjectExists(utility.rejection_msg_recirc(text=config.REJECTION_REASON[reason_id])) test.compare(rejection_message.text, config.REJECTION_REASON[reason_id], "expected rejection {msg} displayed".format(msg=config.REJECTION_REASON[reason_id])) test.endSection() def main(): utils.tstStart(__file__) startApplication(config.AUT_NAME) verify_recirculate_recirculate_state() verify_treatment_recirculate_stopped_state() utils.tstDone()