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";

const BASE_URL = process.env.BASE_URL!;

const runTest = async (page: Page) => {
  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 Tên hồ sơ, Thư mục lưu trữ, để trống Công ty/Tổ chức và bấm Lưu lại", async () => {
    await pw.isVisible("sel-companyInvestor");
    await pw.inputText("txt-tenHoSo", "Tên Hồ sơ");
    await pw.inputTreeDropDown("tree-sel-mucLuuTru", "");
    await pw.clickButton("btn-save");
  });
  await test.step("Kết quả", async () => {
    await expect(page.getByTestId("lbl-error-msg"), {
      message: "Lỗi: Không hiển thị thông báo lỗi trường bắt buộc",
    }).toBeVisible({ timeout: TIMEOUT.VALIDATE_WAITING });
  });
};

test(
  "UC19 1.1.2.14 - [Công ty. Tổ chức] Kiểm tra trường bắt buộc - Thủ thư " +
    ACCOUNT.LIBRARIAN,
  async ({ librarian }) => {
    await runTest(librarian);
  },
);

test(
  "UC19 1.1.2.14 - [Công ty. Tổ chức] Kiểm tra trường bắt buộc - Admin " +
    ACCOUNT.ADMIN,
  async ({ admin }) => {
    await runTest(admin);
  },
);
