import { render, fireEvent, waitFor } from "@testing-library/svelte";

import Form from "./Form.svelte";

test("svelte-hook-form/parallel-submission", async () => {
  const { container, component, getByTestId } = render(Form, {});

  const submitEl = container.querySelector(`[type="submit"]`)!;
  expect(submitEl).toBeInTheDocument();

  const promises: Promise<boolean>[] = [];

  const submitCount = 20;
  for (let i = 0; i < submitCount; i++) {
    promises.push(fireEvent.click(submitEl));
  }

  await Promise.all(promises);

  const submitCountEl = getByTestId("submitCount");
  expect(submitCountEl).toBeInTheDocument();
  expect(Number(submitCountEl.innerHTML)).toBe(submitCount);

  await waitFor(() => {
    console.log(component.$$.ctx);
  });
});
