|
| 1 | +from appium.webdriver.webdriver import WebDriver |
| 2 | +from util.boolean import get_switch_state |
| 3 | +from util.config import read_config |
| 4 | +from util.message import ( |
| 5 | + CHANGE_NOT_SAVED, |
| 6 | + CHANGE_WRONGLY_SAVED, |
| 7 | + UI_NOT_UPDATED, |
| 8 | + UI_WRONGLY_UPDATED, |
| 9 | +) |
| 10 | +from util.window import find_element_by_id, open_input_method_config, reset_option |
| 11 | + |
| 12 | +SWITCH_IDS = ["VAsQuickphrase", "VE_UE", "NG_GN"] |
| 13 | + |
| 14 | + |
| 15 | +def test_reset_group(driver: WebDriver, app: str): |
| 16 | + open_input_method_config(driver, "pinyin") |
| 17 | + |
| 18 | + def read_config_values() -> list[str]: |
| 19 | + cfg = read_config(app, "conf/pinyin.conf") |
| 20 | + return [ |
| 21 | + cfg["Global"][SWITCH_IDS[0]], |
| 22 | + cfg["Fuzzy"][SWITCH_IDS[1]], |
| 23 | + cfg["Fuzzy"][SWITCH_IDS[2]], |
| 24 | + ] |
| 25 | + |
| 26 | + page_size = find_element_by_id(driver, "PageSize") |
| 27 | + scroll = find_element_by_id(driver, "detailScrollView") |
| 28 | + delta_y = page_size.rect["y"] - find_element_by_id(driver, SWITCH_IDS[0]).rect["y"] |
| 29 | + driver.execute_script( |
| 30 | + "macos: scroll", |
| 31 | + { |
| 32 | + "elementId": scroll.id, |
| 33 | + "deltaX": 0, |
| 34 | + "deltaY": delta_y, |
| 35 | + }, |
| 36 | + ) |
| 37 | + |
| 38 | + for switch_id in SWITCH_IDS: |
| 39 | + find_element_by_id(driver, switch_id).click() |
| 40 | + toggled = read_config_values() |
| 41 | + toggled_ui = [get_switch_state(find_element_by_id(driver, id)) for id in SWITCH_IDS] |
| 42 | + |
| 43 | + reset_option(driver, "Fuzzy") |
| 44 | + for i, switch_id in enumerate(SWITCH_IDS): |
| 45 | + ui_state = get_switch_state(find_element_by_id(driver, switch_id)) |
| 46 | + if i == 0: |
| 47 | + assert ui_state == toggled_ui[i], UI_WRONGLY_UPDATED |
| 48 | + else: |
| 49 | + assert ui_state != toggled_ui[i], UI_NOT_UPDATED |
| 50 | + |
| 51 | + after_reset = read_config_values() |
| 52 | + assert after_reset[0] == toggled[0], CHANGE_WRONGLY_SAVED |
| 53 | + assert after_reset[1] != toggled[1], CHANGE_NOT_SAVED |
| 54 | + assert after_reset[2] != toggled[2], CHANGE_NOT_SAVED |
0 commit comments