Index: shared/scripts/configuration/config.py =================================================================== diff -u -r48a93839f9f3aaef88be6c627d43473871f64509 -r3f8003f8a5f8c61fba56c802c5a123d5340b9058 --- shared/scripts/configuration/config.py (.../config.py) (revision 48a93839f9f3aaef88be6c627d43473871f64509) +++ shared/scripts/configuration/config.py (.../config.py) (revision 3f8003f8a5f8c61fba56c802c5a123d5340b9058) @@ -30,11 +30,70 @@ SALINE_UNIT = "mL" BLOOD_PRIMING_DEFAULT_VALUE = "0 mL" -CREATE_TREATMENT_BUTTON_ACTIVE = "100 3800 4 01000000 " + +DISINFECT_TEXT = "Disinfection" CHEMICAL_DISINFECT_TEXT = "Chemical Disinfect" -CHEMICAL_DISINFECT_INSTRUCTION_COUNT = 3 +CURRENT_COLOR = '#000000' +COMPLETE_COLOR= '#4290ec' +ENABLED_COLOR = '#fcfcfc' +INCOMPLETE_COLOR = '#607a91' +HEAT_DISINFECT_TREATMENT_SCREENS = ["Disinfection", "Heat Disinfect"] +DISINFECT_TREATMENT_ID = ["_headStepBullet"," _nextStepsBullet"] +NUM_OF_REQUEST_REJECT_REASONS = 46 +# dictionary of rejection reason from application source code. +# message location -> denali-> Headers-> common-> MsgDefs.h +REJECTION_REASON = { + 0: "REQUEST_REJECT_REASON_NONE", # Used when there is no rejection + 1: "REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE", # Request is not allowed in the current operating mode + 2: "REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM", # Validated request was not confirmed by user in reasonable time + 3: "REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE", # Request is not allowed if not in treatment mode + 4: "REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE", # Request is not allowed in current treatment state + 5: "REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED", # Request is not allowed so near end of treatment + 6: "REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE", # Treatment duration is out of range + 7: "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT", # Treatment time change is less than currently elapsed treatment time + 8: "REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE", # Blood flow is out of range + 9: "REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE", # Dialysate flow is out of range + 10: "REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE", # Dialysate flow rate or treatment duration causes dialysate volume to exceed limit + 11: "REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE", # Ultrafiltration volume is out of range + 12: "REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE", # Ultrafiltration rate is out of range + 13: "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM", # Treatment time change is less than minimum treatment time + 14: "REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS", # Ultrafiltration is not currently in progress + 15: "REQUEST_REJECT_REASON_UF_NOT_PAUSED", # Ultrafiltration is not currently paused + 16: "REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS", # A saline bolus is in progress + 17: "REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE", # A treatment parameter is out of range + 18: "REQUEST_REJECT_REASON_HEPARIN_PRESTOP_EXCEEDS_DURATION", # The Heparin pre-stop setting is greater than the treatment duration + 19: "REQUEST_REJECT_REASON_ARTERIAL_PRESSURE_LOW_VS_HIGH", # Arterial pressure low and high alarm limits are not inconsistent + 20: "REQUEST_REJECT_REASON_VENOUS_PRESSURE_LOW_VS_HIGH", # Venous pressure low and high alarm limits are inconsistent + 21: "REQUEST_REJECT_REASON_SALINE_MAX_VOLUME_REACHED", # Saline bolus volume maximum has been reached - no more saline allowed + 22: "REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_IN_PROGRESS", # A saline bolus is not in progress + 23: "REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE", # Requested user action is disabled in current state + 24: "REQUEST_REJECT_REASON_ALARM_IS_ACTIVE", # Requested user action not allowed while alarm is active + 25: "REQUEST_REJECT_REASON_INVALID_COMMAND", # Requested user action invalid + 26: "REQUEST_REJECT_REASON_TREATMENT_IS_COMPLETED", # The treatment has been completed + 27: "REQUEST_REJECT_REASON_ADDL_RINSEBACK_MAX_VOLUME_REACHED", # Rinseback additional volume maximum has been reached - no more additional rinsebacks allowed + 28: "REQUEST_REJECT_REASON_UF_VOLUME_NOT_SET", # Ultrafiltration volume is not set yet + 29: "REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM", # The user has not confirmed patient connection + 30: "REQUEST_REJECT_REASON_HEPARIN_PAUSE_INVALID_IN_THIS_STATE", # Heparin cannot be paused if not currently deliverying Heparin + 31: "REQUEST_REJECT_REASON_HEPARIN_NOT_PAUSED", # Heparin cannot be resumed if not paused + 32: "REQUEST_REJECT_REASON_DG_COMM_LOST", # Treatment cannot initiate if DG comm is lost + 33: "REQUEST_REJECT_REASON_DRAIN_NOT_COMPLETE", # Post-treatment reservoirs drain not complete + 34: "REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE", # Treatment cannot initiate if DG is not in standby idle state + 35: "REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT", # Request message not formatted properly + 36: "REQUEST_REJECT_REASON_INVALID_DATE_OR_TIME", # Given date/time is invalid + 37: "REQUEST_REJECT_REASON_TREATMENT_IN_PROGRESS", # Treatment is in progress + 38: "REQUEST_REJECT_REASON_BATTERY_IS_NOT_CHARGED", # Battery does not have enough charge to start treatment + 39: "REQUEST_REJECT_REASON_RINSEBACK_NOT_COMPLETED", # Cannot move on to recirculate without completing full rinseback. + 40: "REQUEST_REJECT_REASON_RESERVOIR_ONE_IS_NOT_READY", # Reservoir one fill is not complete + 41: "REQUEST_REJECT_REASON_PUMP_TRACK_NOT_CLOSED", # Pump track is not ready / closed + 42: "REQUEST_REJECT_REASON_DOOR_NOT_CLOSED", # Door is not closed + 43: "REQUEST_REJECT_REASON_SYRINGE_NOT_PRESENT", # Syringe is not present + 44: "REQUEST_REJECT_REASON_DG_DIALYSATE_CAP_OPEN", # Dialysate cap open + 45: "REQUEST_REJECT_REASON_DG_CONCENTRATE_CAP_OPEN", # Concentrate cap open + 46: "NUM_OF_REQUEST_REJECT_REASONS" # Number of settings change reject codes +} + Index: shared/scripts/configuration/utility.py =================================================================== diff -u -r48a93839f9f3aaef88be6c627d43473871f64509 -r3f8003f8a5f8c61fba56c802c5a123d5340b9058 --- shared/scripts/configuration/utility.py (.../utility.py) (revision 48a93839f9f3aaef88be6c627d43473871f64509) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision 3f8003f8a5f8c61fba56c802c5a123d5340b9058) @@ -22,43 +22,65 @@ from builtins import int as pyInt from datetime import datetime + +def get_disinfect_bullet_object(): + """ + To obtain a bullet object based on occurrence provided. + @param screen_obj: provides the container on which the bullet must be present + @param num: provides the occurrence value + @returns a real name object + """ + names.o_disinfect_dynamic_StepBullet["id"] = screen_obj + return names.o_disinfect_dynamic_StepBullet -def verify_page_step_indicator(screen_obj, treatment_step, treatment_screens): + +def verify_page_step_indicator_for_disinfect(treatment_id, treatment_step, treatment_screens): """ Method to verify the Page Step indicators [the object on top of the screen which indicates the steps passed, current, remained] @param treatment_step : indicates the Current treatment step """ test.startSection("verification of page step indicators") for page in range(len(treatment_screens)): - bullet_children = object.children(squish.waitForObjectExists(get_bullet_object(screen_obj, page))) + bullet_children = object.children(squish.waitForObjectExists(get_disinfect_bullet_object(treatment_id[page]))) bullet_circle_color = bullet_children[0].color.name bullet_border_color = bullet_children[0].border.color.name - step_title = squish.waitForObjectExists(get_text_object(screen_obj, treatment_screens[page])) + step_title = squish.waitForObjectExists(get_disinfect_text_object(treatment_screens[page])) #To verify the step indicators of the completed treatment screens if page < treatment_step: - test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) + test.verify(squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).complete) + test.verify(not squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).current) test.compare(bullet_circle_color, config.COMPLETE_COLOR) test.compare(bullet_border_color,config.COMPLETE_COLOR) test.compare(step_title.color.name,config.ENABLED_COLOR) #To verify the step indicators of the current treatment screen elif page == treatment_step: - test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) + test.verify(squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).current) + test.verify(not squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).complete) test.compare(bullet_circle_color, config.CURRENT_COLOR) test.compare(bullet_border_color, config.COMPLETE_COLOR) test.compare(step_title.color.name, config.ENABLED_COLOR) test.verify(step_title.font.bold) #To verify the step indicators of the remaining treatment screens else: - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete,) + test.verify(not squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).current,) + test.verify(not squish.waitForObjectExists(get_disinfect_bullet_object(screen_obj, page)).complete,) test.compare(step_title.color.name, config.INCOMPLETE_COLOR) test.compare(bullet_circle_color, config.CURRENT_COLOR) test.compare(bullet_border_color, config.INCOMPLETE_COLOR) test.endSection() + +def get_disinfect_text_object(text): + """ + To obtain a text object based on text provided + @param screen_obj: provides the container on which the txt must be present + @returns a real name object + """ + names.o_disinfect_dynamic_StepBullet_Text["text"] = text + return names.o_disinfect_dynamic_StepBullet_Text + + def get_current_date_and_time(date_format='%Y/%b/%d - %H:%M'): date = datetime.now() Index: shared/scripts/names.py =================================================================== diff -u -r48a93839f9f3aaef88be6c627d43473871f64509 -r3f8003f8a5f8c61fba56c802c5a123d5340b9058 --- shared/scripts/names.py (.../names.py) (revision 48a93839f9f3aaef88be6c627d43473871f64509) +++ shared/scripts/names.py (.../names.py) (revision 3f8003f8a5f8c61fba56c802c5a123d5340b9058) @@ -63,8 +63,33 @@ o_disinfectChemical_Chemical_Disinfect_Text = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "occurrence": 2, "text": "Chemical Disinfect", "type": "Text", "unnamed": 1, "visible": True} o_disinfectChemical_rightImage_Image = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} o_disinfectChemical_leftImage_Image = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_disinfectChemical_Chemical_Disinfect_Text_2 = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "text": "Chemical Disinfect", "type": "Text", "unnamed": 1, "visible": True} +o_disinfectChemical_Disinfection_Text = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "text": "Disinfection", "type": "Text", "unnamed": 1, "visible": True} +o_disinfectChemical_gridStepsRest_Grid = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_gridStepsRest", "occurrence": 2, "type": "Grid", "unnamed": 1, "visible": True} +o_disinfectChemical_gridStepsRest_Grid_2 = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_gridStepsRest", "occurrence": 3, "type": "Grid", "unnamed": 1, "visible": True} +# = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_tailStepsRepeater", "occurrence": 2, "type": "Repeater", "unnamed": 1, "visible": True} +o_disinfectChemical_headStepBullet_StepBullet = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_headStepBullet", "occurrence": 2, "type": "StepBullet", "unnamed": 1, "visible": True} +o_disinfectChemical_gridSteps_Grid = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "id": "_gridSteps", "occurrence": 2, "type": "Grid", "unnamed": 1, "visible": True} +o_disinfectChemical_confirmButton_TouchRect = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} +o_disinfectChemical_NotificationBar_NotificationBar = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "objectName": "NotificationBar", "type": "NotificationBar", "visible": True} +o_disinfectChemical_back_navigation = {"container": o_DisinfectStack_disinfectChemical_TreatmentFlowBase, "text": "BACK", "type": "Text", "unnamed": 1, "visible": True} +o_disinfectHome_Heat_Disinfect = {"container": o_DisinfectStack_disinfectHome_TreatmentFlowBase, "text": "Heat Disinfect", "type": "Text", "unnamed": 1, "visible": True} +o_DisinfectStack_disinfectHeat_TreatmentFlowBase = {"container": o_DisinfectStack_DisinfectStack, "objectName": "_disinfectHeat", "type": "TreatmentFlowBase", "visible": True} +o_disinfect_dynamic_StepBullet = {"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "type": "StepBullet", "unnamed": 1, "visible": True} +o_disinfect_dynamic_StepBullet_Text = {"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "type": "Text", "unnamed": 1, "visible": True} + +{"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "id": "_headStepBullet", "type": "StepBullet", "unnamed": 1, "visible": True} +{"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "id": "_nextStepsBullet", "type": "StepBullet", "unnamed": 1, "visible": True} + +{"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "text": "Disinfection", "type": "Text", "unnamed": 1, "visible": True} +{"container": o_DisinfectStack_disinfectHeat_TreatmentFlowBase, "text": "Heat Disinfect", "type": "Text", "unnamed": 1, "visible": True} + + + + + Index: tst_disinfection/test.py =================================================================== diff -u -r48a93839f9f3aaef88be6c627d43473871f64509 -r3f8003f8a5f8c61fba56c802c5a123d5340b9058 --- tst_disinfection/test.py (.../test.py) (revision 48a93839f9f3aaef88be6c627d43473871f64509) +++ tst_disinfection/test.py (.../test.py) (revision 3f8003f8a5f8c61fba56c802c5a123d5340b9058) @@ -9,82 +9,180 @@ from configuration import utility from dialin.utils.conversions import integer_to_bytearray, float_to_bytearray, short_to_bytearray, unsigned_integer_to_bytearray, integer_to_bit_array, unsigned_short_to_bytearray, unsigned_byte_to_bytearray, unsigned_byte_to_bytearray from dialin.common.hd_defs import HDOpModes, HDOpSubModes +from dateutil.tz._common import ZERO hd_simulator = HDSimulator() dg_simulator = DGSimulator() -def verify_right_navigation_for_chemical_disinfection(): +def verify_right_navigation_for_chemical_disinfection(num_of_instructions): """ The method is used to verify the functionality of the right arrow in the disinfection navigation, as well as the visibility of the two arrows """ test.startSection("Rightward navigation") test.verify(not object.exists(names.o_disinfectChemical_leftImage_Image), "The left navigation arrow should not be present on the first screen of instruction") - for indicator in range(1,num_of_instructions + 1): - verify_bullet_navigation(indicator) - - if indicator != num_of_instructions: + child = object.children(waitForObject(names.o_disinfectChemical_gridSteps_Grid)) + for indicator in range(num_of_instructions): + if child[indicator].id != "_tailStepsRepeater": + verify_bullet_navigation(num_of_instructions, indicator) + if not object.exists(names.o_disinfectChemical_rightImage_Image): + test.log("The right navigation arrow should not be present on the last screen of instruction") + break + mouseClick(waitForObject(names.o_disinfectChemical_rightImage_Image)) - - test.verify(not object.exists(names.o_disinfectChemical_rightImage_Image), "The right navigation arrow should not be present on the last screen of instruction") + test.endSection() -def verify_left_navigation_for_chemical_disinfection(): +def verify_left_navigation_for_chemical_disinfection(num_of_instructions): """ The method is used to verify the functionality of the left arrow in the instruction navigation, as well as the visibility of the two arrows """ test.startSection("Leftward instruction navigation") - test.verify(not object.exists(names.o_PreTreatmentBase_rightImage_Image), "The right navigation arrow should not be present on the last screen of instruction") - for indicator in range(num_of_instructions, 0, -1): - verify_bullet_navigation(indicator) + test.verify(not object.exists(names.o_disinfectChemical_rightImage_Image), "The right navigation arrow should not be present on the last screen of instruction") - if indicator != 1: - mouseClick(waitForObject(names.o_PreTreatmentBase_leftImage_Image)) - - test.verify(not object.exists(names.o_PreTreatmentBase_leftImage_Image), "The left navigation arrow should not be present on the first screen of instruction") + child = object.children(waitForObject(names.o_disinfectChemical_gridSteps_Grid)) + for indicator in range(num_of_instructions, -1, -1): + if child[indicator].id != "_tailStepsRepeater": + verify_bullet_navigation(num_of_instructions, indicator) + if not object.exists(names.o_disinfectChemical_leftImage_Image): + test.log("The left navigation arrow should not be present on the last screen of instruction") + break + + mouseClick(waitForObject(names.o_disinfectChemical_leftImage_Image)) + test.endSection() + +def verify_bullet_navigation(num_of_instructions, indicator): + """ + This method verifies the properties of the bullets present in the instruction navigation screen + """ + test.startSection("Instruction bullet verification for screens " + str(indicator)) + child = object.children(waitForObject(names.o_disinfectChemical_gridSteps_Grid)) + for instruction in range(num_of_instructions): + if child[instruction].id == "_tailStepsRepeater": + continue + bullet_children = object.children(child[instruction]) + bullet_circle_color = bullet_children[0].color.name + bullet_border_color = bullet_children[0].border.color.name + if instruction <= indicator: + test.compare(bullet_circle_color, config.COMPLETE_COLOR) + test.log("The bullet " + str(instruction+1) + " must be a complete bullet") + else: + test.compare(bullet_circle_color, config.INCOMPLETE_COLOR) + test.compare(bullet_border_color,config.CURRENT_COLOR) + test.log("The bullet " + str(instruction+1) + " must be a incomplete bullet") + test.endSection() +def verify_request_rejection_mode(): + """ + Method to verify rejection mode of create custom treatment + """ + test.startSection("Section to verify rejection mode of create custom treatment") + for rejection in range(1, config.NUM_OF_REQUEST_REJECT_REASONS + 1): + hd_simulator.cmd_send_hd_disinfect_response(accepted = 0, reason = rejection) + rejection_message = waitForObjectExists(names.o_disinfectChemical_NotificationBar_NotificationBar) + test.compare(rejection_message.text, config.REJECTION_REASON[rejection], "expected rejection {msg} displayed".format(msg=config.REJECTION_REASON[rejection])) + test.endSection() + + +def verify_confirm_disinfect(): + """ + Method to accept treatment response. + """ + test.startSection("Section to accept treatment response") + hd_simulator.cmd_send_hd_disinfect_response(accepted = 1, reason = 0) + + def verify_disinfection_states(): hd_simulator.cmd_send_hd_disinfection_state(sub_mode = 0, flush_mode = 0, heat_mode = 0, chemical_mode = 1) +def get_dynamic_bullet_count(): + chemical_disinfect_count = 0 + child = object.children(waitForObject(names.o_disinfectChemical_gridSteps_Grid)) + for dynamic_indicator_count in range (len(child)): + if child[dynamic_indicator_count].id != "_tailStepsRepeater": + chemical_disinfect_count+=1 + if chemical_disinfect_count != 0: + return chemical_disinfect_count - - def verify_chemical_disinfect(): + test.startSection("Verification of chemical disinfection.") hd_simulator.cmd_set_hd_operation_mode_data(HDOpModes.MODE_STAN.value,HDOpSubModes.STANDBY_WAIT_FOR_DISINFECT_STATE.value) - mouseclick(names.o_disinfectHome_Chemical_Disinfect) + mouseClick(waitForObject(names.o_disinfectHome_Chemical_Disinfect)) test.compare(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text).text, config.CHEMICAL_DISINFECT_TEXT, "Chemical disinfect text should be visible") + test.compare(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text_2).text, config.CHEMICAL_DISINFECT_TEXT, "Chemical disinfect indicator should be visible") + test.verify(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text_2).font.bold, "Chemical disinfect text from page step indicator should be bold") + test.compare(waitForObjectExists(names.o_disinfectChemical_Disinfection_Text).text, config.DISINFECT_TEXT, "Disinfection text should be visible") + test.verify(not waitForObjectExists(names.o_disinfectChemical_Disinfection_Text).font.bold, "disinfect text from page step indicator should not be bold") + + test.log("verification of instruction navigation from chemical disinfection.") + list_of_bullets = get_dynamic_bullet_count() + test.verify(not waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled, "confirm button must not be active") + verify_right_navigation_for_chemical_disinfection(list_of_bullets) + test.verify(waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled, "confirm button must be active") + verify_left_navigation_for_chemical_disinfection(list_of_bullets) + test.verify(not waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled ,"confirm button must not be active") + for right_arrow in range(list_of_bullets-1): + mouseClick(waitForObject(names.o_disinfectChemical_rightImage_Image)) + test.log("user clicked on tight image arrow for the iteration -> "+str(right_arrow)) + mouseClick(waitForObject(names.o_disinfectChemical_confirmButton_TouchRect)) - # hd_simulator.cmd_send_hd_disinfect_response(accepted = True, reason =1) - payload = integer_to_bytearray(1) - payload += unsigned_integer_to_bytearray(4) - hd_simulator.cmd_send_hd_general_response(message_id=155, accepted=1, reason=1, is_pure_data=False, has_parameters=True, parameters_payload=payload) + verify_request_rejection_mode() + verify_confirm_disinfect() + mouseClick(waitForObject(names.o_disinfectChemical_back_navigation)) + test.endSection() + + + +def verify_heat_disinfect(): + test.startSection("Verification of heat disinfection.") + hd_simulator.cmd_set_hd_operation_mode_data(HDOpModes.MODE_STAN.value,HDOpSubModes.STANDBY_WAIT_FOR_DISINFECT_STATE.value) + mouseClick(waitForObject(names.o_disinfectHome_Heat_Disinfect)) - snooze(5) - hd_simulator.cmd_send_hd_disinfection_state(sub_mode = 0, flush_mode = 0, heat_mode = 0, chemical_mode = 1) - snooze(5) - dg_simulator.cmd_send_dg_disinfect_progress_time_flush(total = 120, countdown = 45) - test.log("User navigated to chemical disinfect section") + utility.verify_page_step_indicator_for_disinfect(config.DISINFECT_TREATMENT_ID, 1, config.HEAT_DISINFECT_TREATMENT_SCREENS) + + test.compare(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text).text, config.CHEMICAL_DISINFECT_TEXT, "Chemical disinfect text should be visible") + test.compare(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text_2).text, config.CHEMICAL_DISINFECT_TEXT, "Chemical disinfect indicator should be visible") + test.verify(waitForObjectExists(names.o_disinfectChemical_Chemical_Disinfect_Text_2).font.bold, "Chemical disinfect text from page step indicator should be bold") + test.compare(waitForObjectExists(names.o_disinfectChemical_Disinfection_Text).text, config.DISINFECT_TEXT, "Disinfection text should be visible") + test.verify(not waitForObjectExists(names.o_disinfectChemical_Disinfection_Text).font.bold, "disinfect text from page step indicator should not be bold") + -def verify_heat_disinfect(): - pass + test.log("verification of instruction navigation from chemical disinfection.") + list_of_bullets = get_dynamic_bullet_count() + test.verify(not waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled, "confirm button must not be active") + verify_right_navigation_for_chemical_disinfection(list_of_bullets) + test.verify(waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled, "confirm button must be active") + verify_left_navigation_for_chemical_disinfection(list_of_bullets) + test.verify(not waitForObjectExists(names.o_disinfectChemical_confirmButton_TouchRect).enabled ,"confirm button must not be active") + + for right_arrow in range(list_of_bullets-1): + mouseClick(waitForObject(names.o_disinfectChemical_rightImage_Image)) + test.log("user clicked on tight image arrow for the iteration -> "+str(right_arrow)) + mouseClick(waitForObject(names.o_disinfectChemical_confirmButton_TouchRect)) + + verify_request_rejection_mode() + verify_confirm_disinfect() + + test.endSection() + def verify_water_flush(): pass @@ -109,6 +207,22 @@ dg_simulator.cmd_send_dg_disinfect_progress_time_flush(self, total: int, countdown: int) dg_simulator.cmd_send_dg_disinfect_progress_time_heat(self, total: int, countdown: int) + + + + # hd_simulator.cmd_send_hd_disinfect_response(accepted = True, reason =1) + #payload = integer_to_bytearray(1) + #payload += unsigned_integer_to_bytearray(4) + #hd_simulator.cmd_send_hd_general_response(message_id=155, accepted=1, reason=1, is_pure_data=False, has_parameters=True, parameters_payload=payload) + + + + + snooze(5) + #hd_simulator.cmd_send_hd_disinfection_state(sub_mode = 0, flush_mode = 0, heat_mode = 0, chemical_mode = 1) + #snooze(5) + #dg_simulator.cmd_send_dg_disinfect_progress_time_flush(total = 120, countdown = 45) + """ utils.waitForGUI(2)