import { describe, it, expect, afterEach } from "vitest";
import {
  renderWithProviders as render,
  screen,
  cleanup,
  within,
} from "../utils/test-utils";
import { fireEvent } from "@testing-library/react";
import "@testing-library/jest-dom/vitest";
import { MembershipMethodsScreen } from "../../app/(app)/create/screens/card/MembershipMethodsScreen";

afterEach(() => {
  cleanup();
});

describe("MembershipMethodsScreen", () => {
  it("opens section fields editable without Customize", async () => {
    render(<MembershipMethodsScreen />);
    fireEvent.click(
      screen.getAllByRole("button", {
        name: /Open Access: Maximum inclusion/,
      })[0],
    );
    const dialog = await screen.findByRole("dialog");
    const fields = within(dialog).getAllByRole("textbox");
    expect(fields.length).toBeGreaterThan(0);
    for (const field of fields) {
      expect(field).toBeEnabled();
    }
    expect(
      within(dialog).queryByRole("button", { name: "Remove" }),
    ).not.toBeInTheDocument();
    fireEvent.click(
      within(dialog).getByRole("button", { name: "More options" }),
    );
    expect(
      screen.getByRole("menuitem", { name: "Customize" }),
    ).toBeInTheDocument();
  });
});
