import { Page } from "@playwright/test";
import { test, expect, ACCOUNT } from "../../../src/fixture/base-test";
import { TIMEOUT } from "../../../src/constant/timeout";
import { PW } from "../../../src/utils/PW";
import {
  loadTestDataSync as loadExcelData,
  TestDataSet,
} from "../../../src/utils/test-data-reader";
import { defaultData11257 } from "./1.1.2.57.data";

const BASE_URL = process.env.BASE_URL!;
const testDataSets = loadExcelData(__filename, defaultData11257);

const runTest = async (page: Page, dataSet: TestDataSet) => {
  const pw = new PW(page);

  await test.step("1. Truy cập màn hình Kho tài liệu", async () => {
    await page.goto(`${BASE_URL}/hoso-quan-ly`);
  });
  await test.step("2. Chọn nút Tạo mới", async () => {
    await pw.isVisible("btn-create-hstl", TIMEOUT.PAGE_LOADING);
    await pw.clickButton("btn-create-hstl");
  });
  await test.step("3. Nhập nhiều từ khóa (tags) và bấm Lưu lại", async () => {
    await pw.batchInput(dataSet.data);
    await page
      .getByTestId("sel-tags-tuKhoa")
      .locator(".ant-select-selection-item .ant-select-selection-item-remove")
      .last()
      .click();
    await pw.clickButton("btn-save");
  });
  await test.step("4. Đóng modal, tìm kiếm và mở lại hồ sơ vừa tạo", async () => {
    await pw.isVisible("btn-close-modal", TIMEOUT.ACTION_LOADING);
    await pw.clickButton("btn-close-modal");
    await pw.clickButton("txt-search");
    await pw.inputText("txt-search", dataSet.data[0].value.trim());
    await pw.enter();
    await pw.isVisible("tbl-search-result");
    await page
      .getByTestId("tbl-search-result")
      .locator(".ant-table-row.ant-table-row-level-0")
      .first()
      .click();
    await page.getByTestId("lbl-tab-thongTin").click();
  });
  await test.step("Kết quả", async () => {
    const expectOptions = dataSet.data
      .filter((item) => item.testId === "sel-tags-tuKhoa")
      .map((item) => item.value.split(",").slice(0, -1))
      .flat();
    await pw.checkListValueDropdownListTags("sel-tags-tuKhoa", expectOptions);
  });
};

for (const dataSet of testDataSets) {
  test(`UC19 1.1.2.57 - [Từ khóa] Kiểm tra nhập nhiều tag - ${dataSet.name} - Thủ thư ${ACCOUNT.LIBRARIAN}`, async ({
    librarian,
  }) => {
    await runTest(librarian, dataSet);
  });
}
