from __future__ import annotations

from pathlib import Path

from openpyxl import load_workbook


ROOT = Path(__file__).resolve().parents[1]
EXCEL_PATH = ROOT / "测试用例" / "SaaS_订阅邀请登录_测试功能点.xlsx"
SHEET_NAME = "流程用例-应用版本管理"
CASE_ID = "APPVER-FLOW-004"


def lines(items: list[str]) -> str:
    return "\n".join(f"{index}. {item}" for index, item in enumerate(items, 1))


ROW = [
    CASE_ID,
    "应用管理-应用列表新-版本管理",
    "全选当前筛选结果后保存当前版本资源",
    "P0",
    "SaaS-admin -> 应用管理 -> 应用列表新 -> 目标应用 -> 版本管理",
    lines(
        [
            "管理员账号已登录 SaaS-admin",
            "已打开目标应用的版本管理弹窗",
            "右侧资源区存在可被筛选出的资源",
        ]
    ),
    "筛选条件：资源名称/资源编码、资源类型、资源状态",
    lines(
        [
            "在右侧资源区输入筛选条件并点击查询",
            "勾选“全选当前筛选结果”",
            "确认筛选结果全部被选中",
            "点击右上角“保存当前版本资源”",
            "关闭弹窗并重新进入版本管理",
            "再次按相同筛选条件查询资源",
        ]
    ),
    lines(
        [
            "当前筛选结果内的资源均被选中",
            "已选资源数量与页面提示一致",
            "点击保存当前版本资源后保存成功",
            "重新进入版本管理后，已保存的资源仍保持选中状态",
            "左侧版本卡片资源数与保存结果一致",
        ]
    ),
    "这条更偏按钮级流程，适合作为资源批量勾选的自动化用例。可以复用 APPVER-FLOW-003 的页面对象，只补全“全选当前筛选结果”和保存后的回读。",
    "用户当前截图已明确展示全选当前筛选结果与保存当前版本资源按钮。",
]


def main() -> None:
    wb = load_workbook(EXCEL_PATH)
    ws = wb[SHEET_NAME]
    existing = {row[0].value for row in ws.iter_rows(min_row=2, max_col=1)}
    if CASE_ID not in existing:
        ws.append(ROW)
    wb.save(EXCEL_PATH)
    print(f"updated={EXCEL_PATH}")
    print(f"sheet={SHEET_NAME}")


if __name__ == "__main__":
    main()
