import { expect, test } from "@playwright/test";
import { createCase, openCaseOnStep, sendChat, sendMany, STEP_SCRIPT } from "./helpers";

test("step 4 Disease interview: R modules or none reported", async ({ request, page }) => {
  const created = await createCase(request);
  const c = await sendMany(request, created.caseId, [
    STEP_SCRIPT.name,
    STEP_SCRIPT.state,
    STEP_SCRIPT.intent,
    STEP_SCRIPT.age,
    STEP_SCRIPT.loan,
    STEP_SCRIPT.build,
  ]);
  expect(c.process.step).toBe(4);
  expect(c.process.missingRequired.some((m) => m.startsWith("diseases"))).toBeTruthy();

  await openCaseOnStep(page, c.caseId);
  await expect(page.getByTestId("process-current")).toHaveText("Disease interview");
  await expect(page.getByTestId("process-exit-gate")).toContainText("R modules done or none reported");

  const done = await sendChat(request, c.caseId, STEP_SCRIPT.diseases);
  expect(done.profile.diseases_complete || done.profile.diseases_none_reported).toBeTruthy();
  expect(done.process.step).toBe(5);
  expect(done.messages[done.messages.length - 1].content).toMatch(/income/i);
});

test("step 4 greeting Hi does not re-ask state", async ({ request }) => {
  const created = await createCase(request);
  const c = await sendMany(request, created.caseId, [
    STEP_SCRIPT.name,
    STEP_SCRIPT.state,
    STEP_SCRIPT.intent,
    STEP_SCRIPT.age,
    STEP_SCRIPT.loan,
    STEP_SCRIPT.build,
  ]);
  expect(c.process.step).toBe(4);
  const hi = await sendChat(request, c.caseId, "Hi");
  expect(hi.profile.state).toBe("FL");
  expect(hi.process.step).toBe(4);
  const last = hi.messages[hi.messages.length - 1];
  const prev = hi.messages[hi.messages.length - 2];
  expect(prev.role).toBe("user");
  expect(prev.content).toBe("Hi");
  expect(last.role).toBe("assistant");
  expect(last.content).not.toMatch(/which U\.S\. state/i);
  expect(last.content).toMatch(/heart|diabetes|cancer|kidney|disab|none of those/i);
});
