status-desktop/test/e2e/gui/mocked_keycard_controller.py

74 lines
2.9 KiB
Python
Raw Normal View History

import time
import typing
import allure
import driver
from gui.elements.button import Button
from gui.elements.object import QObject
from gui.elements.scroll import Scroll
from gui.elements.window import Window
class MockedKeycardController(Window):
def __init__(self):
super(MockedKeycardController, self).__init__('QQuickApplicationWindow')
self._plugin_reader_button = Button('plugin_Reader_StatusButton')
self._unplug_reader_button = Button('unplug_Reader_StatusButton')
self._insert_keycard_1_button = Button('insert_Keycard_1_StatusButton')
self._insert_keycard_2_button = Button('insert_Keycard_2_StatusButton')
self._remove_keycard_button = Button('remove_Keycard_StatusButton')
self._reader_state_button = Button('set_initial_reader_state_StatusButton')
self._keycard_state_button = Button('set_initial_keycard_state_StatusButton')
self._register_keycard_button = Button('register_Keycard_StatusButton')
self._reader_unplugged_item = QObject('reader_Unplugged_StatusMenuItem')
self._keycard_not_inserted_item = QObject('keycard_Not_Inserted_StatusMenuItem')
self._keycard_inserted_item = QObject('keycard_Inserted_StatusMenuItem')
self._custom_keycard_item = QObject('custom_Keycard_StatusMenuItem')
self._field_object = QObject('keycard_edit_TextEdit')
self._scroll = Scroll('keycardFlickable')
@property
@allure.step('Get text fields')
def get_text_fields(self) -> typing.List[str]:
return driver.findAllObjects(self._field_object.real_name)
@allure.step('Click Plug in reader')
def plugin_reader(self):
time.sleep(1)
self._plugin_reader_button.click()
time.sleep(2)
return self
@allure.step('Click Register keycard')
def register_keycard(self):
time.sleep(1)
if not self._register_keycard_button.is_visible:
self._scroll.vertical_down_to(self._register_keycard_button)
self._register_keycard_button.click()
time.sleep(1)
return self
@allure.step('Click Insert Keycard 1')
def insert_keycard_1(self):
self._insert_keycard_1_button.click()
time.sleep(1)
return self
@allure.step('Choose custom keycard from initial keycard state dropdown')
def choose_custom_keycard(self):
if not self._keycard_state_button.is_visible:
self._scroll.vertical_scroll_to(self._keycard_state_button)
self._keycard_state_button.click()
self._custom_keycard_item.click()
time.sleep(1)
return self
@allure.step('Input custom keycard details to custom text field')
def input_custom_keycard_details(self, details: str, index: int):
fields = self.get_text_fields
self._scroll.vertical_scroll_to(QObject(name='', real_name=driver.objectMap.realName(fields[index])))
driver.type(fields[index], details)
time.sleep(1)