import type { ContinuityFixture } from "./types.js";

export const canceledInteractionKnownBad: ContinuityFixture = {
  fixtureId: "continuity/canceled-interaction-known-bad",
  continuityVersion: "1.0",
  scenarios: [
    {
      scenarioId: "canceled-nested-emits-parent-progress",
      kind: "canceled-interaction",
      parentState: "checkout-review",
      interactionOutcome: "canceled",
      defaultActionId: "nested-confirm-navigation",
      sideEffects: [
        {
          effectId: "parent-progress",
          kind: "progress",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: true,
        },
      ],
      stateTrace: [
        { from: "checkout-review", event: "nested-open", to: "nested-dialog" },
        { from: "nested-dialog", event: "cancel", to: "checkout-review" },
      ],
    },
    {
      scenarioId: "canceled-nested-emits-parent-navigation",
      kind: "canceled-interaction",
      parentState: "account-settings",
      interactionOutcome: "canceled",
      defaultActionId: "nested-delete-confirm",
      sideEffects: [
        {
          effectId: "parent-navigation",
          kind: "navigation",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: true,
        },
      ],
      stateTrace: [
        { from: "account-settings", event: "nested-open", to: "nested-dialog" },
        { from: "nested-dialog", event: "cancel", to: "account-settings" },
      ],
    },
    {
      scenarioId: "prevented-submit-emits-success-state",
      kind: "canceled-interaction",
      parentState: "payment-form",
      interactionOutcome: "prevented",
      defaultActionId: "submit-payment",
      sideEffects: [
        {
          effectId: "success-banner",
          kind: "success",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: true,
        },
        {
          effectId: "payment-mutation",
          kind: "mutation",
          scope: "derived",
          tiedToDefaultAction: true,
          emitted: false,
        },
      ],
      stateTrace: [
        { from: "payment-form", event: "submit", to: "submitting" },
        { from: "submitting", event: "prevent-default", to: "payment-form" },
      ],
    },
    {
      scenarioId: "canceled-default-emits-analytics",
      kind: "canceled-interaction",
      parentState: "onboarding",
      interactionOutcome: "canceled",
      defaultActionId: "skip-step",
      sideEffects: [
        {
          effectId: "skip-analytics",
          kind: "analytics",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: true,
        },
      ],
      stateTrace: [
        { from: "onboarding", event: "skip-click", to: "confirm-skip" },
        { from: "confirm-skip", event: "cancel", to: "onboarding" },
      ],
    },
  ],
};
