import { Given } from "@badeball/cypress-cucumber-preprocessor";

// Shared across auth.feature (signup) and onboarding.feature (wizard) — both
// need the diets/allergies reference lists mocked before reaching a step
// that reads them, in either their "has options" or "is empty" shape.

Given("the diets reference list has options", () => {
  cy.intercept("GET", "**/reference/diets", {
    statusCode: 200,
    body: [
      { id: 1, key: "omnivore" },
      { id: 2, key: "vegetarian" },
    ],
  });
});

Given("the diets reference list is empty", () => {
  cy.intercept("GET", "**/reference/diets", { statusCode: 200, body: [] });
});

Given("the allergies reference list has options", () => {
  cy.intercept("GET", "**/reference/allergies", {
    statusCode: 200,
    body: [
      { id: 1, key: "peanuts", kind: "ALLERGY" },
      { id: 2, key: "gluten", kind: "INTOLERANCE" },
    ],
  });
});

Given("the allergies reference list is empty", () => {
  cy.intercept("GET", "**/reference/allergies", { statusCode: 200, body: [] });
});

// Every onboarding scenario that reaches the household step also reaches
// `/onboarding/sources` right after (when a household got created/joined —
// see `OnboardingHouseholdPage`'s `goToNextStep`), which reads this before
// self-skipping to `/onboarding/allergenes` if it comes back empty.
Given("the sources reference list is empty", () => {
  cy.intercept("GET", "**/reference/sources", { statusCode: 200, body: [] });
});

// `id`/`key` pairs mirror `recipes.ts`'s `omeletteDetail` fixture (`cook`,
// id 1, is the step's existing match) plus a second option
// (`simmer`/"Mijoter") for `recipes.feature`'s correction scenario to
// re-assign to — TechStepCorrectionPopover's own picker needs at least two
// choices for that scenario to be a meaningful correction, not a no-op.
Given("the tech steps reference list has options", () => {
  cy.intercept("GET", "**/reference/tech-steps", {
    statusCode: 200,
    body: [
      { id: 1, key: "cook" },
      { id: 3, key: "simmer" },
    ],
  });
});

// The real first entry (`theMealDb`) mirrors what's actually seeded
// (`reference-seed-data.ts`'s `registerAllRecipeSources`/
// `syncRecipeSources`); the second is illustrative only — a future
// per-site scraper adapter, not tied to any real one that exists yet (the
// generic `jsonLdRecipeAdapter` is deliberately never registered as a
// household-toggleable source in its own right — see `sources/index.ts`).
// Two entries so the sources step (onboarding and `/parametres/foyer`
// alike) has more than one thing to show/select, instead of self-skipping
// or exercising only a single-item list.
Given("the sources reference list has options", () => {
  cy.intercept("GET", "**/reference/sources", {
    statusCode: 200,
    body: [
      {
        id: 1,
        key: "theMealDb",
        name: "TheMealDB",
        official: true,
        iconUrl: "https://www.themealdb.com/images/logo.svg",
      },
      {
        id: 2,
        key: "marmiton",
        name: "Marmiton",
        official: false,
        iconUrl: null,
      },
    ],
  });
});
