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

export const continuityKnownGood: ContinuityFixture = {
  fixtureId: "continuity/known-good",
  continuityVersion: "1.0",
  scenarios: [
    {
      scenarioId: "failed-submission-preserves-non-sensitive-input",
      kind: "form-submission",
      submissionOutcome: "rejected",
      fields: [
        {
          fieldId: "message",
          enteredValue: "Please call me back tomorrow.",
          sensitivity: "non-sensitive",
        },
        {
          fieldId: "password",
          enteredValue: "hunter2",
          sensitivity: "sensitive",
        },
      ],
      observedAfterSubmission: [
        {
          fieldId: "message",
          value: "Please call me back tomorrow.",
        },
        {
          fieldId: "password",
          value: "",
        },
      ],
      stateTrace: [
        { from: "editing", event: "submit", to: "submitting" },
        { from: "submitting", event: "validation-failed", to: "editing" },
      ],
    },
    {
      scenarioId: "confirmed-clear-on-success",
      kind: "form-submission",
      submissionOutcome: "success",
      fields: [
        {
          fieldId: "draft",
          enteredValue: "temporary note",
          sensitivity: "non-sensitive",
          confirmedTransition: "clear",
        },
      ],
      observedAfterSubmission: [
        {
          fieldId: "draft",
          value: "",
        },
      ],
      stateTrace: [
        { from: "editing", event: "submit", to: "submitting" },
        { from: "submitting", event: "confirmed-clear", to: "complete" },
      ],
    },
    {
      scenarioId: "canceled-nested-no-parent-effects",
      kind: "canceled-interaction",
      parentState: "checkout-review",
      interactionOutcome: "canceled",
      defaultActionId: "nested-confirm-navigation",
      sideEffects: [
        {
          effectId: "parent-progress",
          kind: "progress",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: false,
        },
        {
          effectId: "parent-navigation",
          kind: "navigation",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: false,
        },
      ],
      stateTrace: [
        { from: "checkout-review", event: "nested-open", to: "nested-dialog" },
        { from: "nested-dialog", event: "cancel", to: "checkout-review" },
      ],
    },
    {
      scenarioId: "completed-nested-emits-expected-effects",
      kind: "canceled-interaction",
      parentState: "checkout-review",
      interactionOutcome: "completed",
      defaultActionId: "nested-confirm-navigation",
      sideEffects: [
        {
          effectId: "parent-navigation",
          kind: "navigation",
          scope: "parent",
          tiedToDefaultAction: true,
          emitted: true,
        },
      ],
      stateTrace: [
        { from: "checkout-review", event: "nested-open", to: "nested-dialog" },
        { from: "nested-dialog", event: "confirm", to: "checkout-complete" },
      ],
    },
  ],
};
