import { Page } from "@playwright/test";
import { test, ACCOUNT } from "../../src/fixture/base-test";
import { dungDuLieu178 } from "./1.4.1.setup";
import { moThuMuc3TimKiemCapCha } from "./1.4.1.steps";

/**
 * ============================================================================
 * UC22 — 1.4.1 Tạo thư mục trong Cấu trúc hồ sơ
 * Case 178 (QA): Kiểm tra chức năng tìm kiếm Thư mục/Hồ sơ cấp cha
 * ============================================================================
 *
 * ── NGUYÊN VĂN TESTCASE (người dùng gửi 2026-07-30) ─────────────────────────
 * Thao tác:
 *   1. Tạo bộ hồ sơ
 *   2. Tạo 2 thư mục. Bấm tạo thư mục thứ 3, trong ô nhập của "Thư mục/HS cấp cha" thực hiện tìm
 *      kiếm theo tên lần lượt với thư mục 1 và thư mục 2
 * Mong muốn:
 *   Kết quả tìm kiếm hiển thị đúng
 *
 * Tiền điều kiện chung của mục 1.4.1: xem `1.4.1.md`.
 *
 * ── CÁC BƯỚC SCRIPT THỰC HIỆN ───────────────────────────────────────────────
 * B1. Tạo BHS + 2 thư mục ở gốc BHS (thư mục 1, thư mục 2) — quyền kế thừa, không cần độc lập vì
 *     case chỉ kiểm tra chức năng tìm kiếm, không kiểm tra cập nhật Độ mật/Trạng thái/quyền
 *     (đã có case 177 phủ phần đó).
 * B2. Mở modal "Thêm thư mục" cho thư mục thứ 3 → click mở ô "Thư mục/HS cấp cha".
 * B3. Gõ tìm theo tên thư mục 1 → dropdown phải hiện đúng option thư mục 1.
 * B4. Gõ tìm theo tên thư mục 2 → dropdown phải hiện đúng option thư mục 2.
 *
 * ⚠️ Chỉ kiểm tra **có ra đúng kết quả khớp tên**, không assert "chỉ ra đúng 1 kết quả" — vì tên 2
 * thư mục cùng chung tiền tố `AT-UC22-178-...` nên gõ tên thư mục 1 có thể vẫn thấy thư mục 2 nằm
 * trong danh sách (không loại trừ). Nếu QA muốn siết chặt "loại bỏ hết kết quả không khớp" thì cần
 * khảo sát thêm bằng MCP xem app lọc theo kiểu nào (prefix / chứa từ khoá) — hiện dùng hàm
 * `checkSearchTreeDropdownHasOption` sẵn có trong `PW.ts` cũng theo đúng cách hiểu này.
 *
 * ── 2 TEST ──────────────────────────────────────────────────────────────────
 * | # | Vai             | Trạng thái BHS | Ghi chú                                       |
 * |---|-----------------|----------------|-----------------------------------------------|
 * | 1 | Thủ thư (ecm01) | Khai báo       | tự tạo BHS nên là Owner                       |
 * | 2 | ITAdmin (ecm09) | Khai báo       | y hệt TEST 1                                  |
 *
 * Chỉ 2 vai theo quy ước tối thiểu (`tests/README.md` mục 6.4): chức năng tìm kiếm của 1 ô nhập
 * không phụ thuộc vai đang đăng nhập.
 */

const runTestOwnerBoHoSo = async (page: Page, maCase: string) => {
  const duLieu = await dungDuLieu178(page, { maCase: `178-${maCase}` });
  await moThuMuc3TimKiemCapCha(page, duLieu);
};

/** TEST 1 — Thủ thư (ecm01). */
test(
  "UC22 178 - Kiểm tra chức năng tìm kiếm Thư mục/Hồ sơ cấp cha - Thủ thư" +
    ACCOUNT.LIBRARIAN,
  async ({ librarian }) => {
    await runTestOwnerBoHoSo(librarian, "TT");
  },
);

/** TEST 2 — ITAdmin (ecm09). Dữ liệu & thao tác y hệt TEST 1. */
test(
  "UC22 178 - Kiểm tra chức năng tìm kiếm Thư mục/Hồ sơ cấp cha - Admin" +
    ACCOUNT.ADMIN,
  async ({ admin }) => {
    await runTestOwnerBoHoSo(admin, "AD");
  },
);
