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 { uc37DefaultData } from "../uc37.default.data";

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 đủ thông tin bắt buộc", async () => {
    await pw.batchInput(uc37DefaultData, true);
  });

  await test.step("4. Bấm Lưu lại", async () => {
    await pw.clickButton("btn-save");
    await expect(page.locator(".ant-message-success"), {
      message: 'Lỗi: Thông báo không phải "Thành công"',
    }).toHaveText("Thành công", { timeout: TIMEOUT.ACTION_LOADING });
    await expect(page.getByTestId("lbl-modal-title").locator("button"), {
      message: 'Lỗi: Trạng thái không phải "Khai báo"',
    }).toHaveText("Khai báo", { timeout: TIMEOUT.VALIDATE_WAITING });
  });

  await test.step("5. Bấm nút Chuyển Hoạt động rồi bấm Hủy bỏ tại popup", async () => {
    await pw.clickButton("btn-move-active");
    await page.locator(".ant-modal-confirm-btns .ant-btn-default").click();
  });

  await test.step("Kết quả", async () => {
    await expect(page.getByTestId("lbl-modal-title").locator("button"), {
      message: 'Lỗi: Trạng thái phải giữ nguyên là "Khai báo"',
    }).toHaveText("Khai báo", { timeout: TIMEOUT.VALIDATE_WAITING });
  });
};

test(
  "UC37 1.2.2.4 - Kiểm tra nút Hủy bỏ tại popup Xác nhận - Admin " + ACCOUNT.ADMIN,
  async ({ admin }) => {
    await runTest(admin);
  },
);
