import { expect, test } from "@playwright/test";

import { mockCoreApis } from "@e2e/fixtures/api-mocks";
import {
  clearBrowserState,
  enterChatFromSplash,
} from "@e2e/fixtures/test-helpers";

test.beforeEach(async ({ baseURL, context, page }) => {
  await clearBrowserState(context, page, baseURL);
  await mockCoreApis(page);
});

test("renders a backend commercial action and opens the private zone", async ({
  page,
}) => {
  await enterChatFromSplash(page);

  const input = page.getByRole("textbox", { name: "Message" });
  await expect(input).toBeEnabled();
  await input.fill("private album offer test");
  await input.press("Enter");

  const offer = page.getByLabel("Open private zone");
  await expect(offer).toContainText(
    "There are more private photos waiting for you.",
  );
  await offer.getByRole("button", { name: "Open private zone" }).click();

  await expect(page).toHaveURL(/\/characters\/elio\/private-zone$/);
});

test("asks for consent before opening a user-bound discount plan", async ({
  page,
}) => {
  await enterChatFromSplash(page);

  const input = page.getByRole("textbox", { name: "Message" });
  await input.fill("discount offer test");
  await input.press("Enter");

  const offer = page.getByLabel("Yes, ask for me");
  await expect(offer).toContainText("Want me to ask for my best private offer?");
  await offer.getByRole("button", { name: "Yes, ask for me" }).click();

  await expect(page).toHaveURL(
    /\/subscription\?type=vip.*planId=vip_annual.*commercialOfferId=13ec8a10/,
  );
});
