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

export const formContinuityKnownBad: ContinuityFixture = {
  fixtureId: "continuity/form-continuity-known-bad",
  continuityVersion: "1.0",
  scenarios: [
    {
      scenarioId: "validation-failure-clears-message",
      kind: "form-submission",
      submissionOutcome: "rejected",
      fields: [
        {
          fieldId: "message",
          enteredValue: "Need help with billing.",
          sensitivity: "non-sensitive",
        },
      ],
      observedAfterSubmission: [
        {
          fieldId: "message",
          value: "",
        },
      ],
      stateTrace: [
        { from: "editing", event: "submit", to: "submitting" },
        { from: "submitting", event: "validation-failed", to: "editing" },
      ],
    },
    {
      scenarioId: "server-error-clears-email",
      kind: "form-submission",
      submissionOutcome: "failed",
      fields: [
        {
          fieldId: "email",
          enteredValue: "user@example.com",
          sensitivity: "non-sensitive",
        },
        {
          fieldId: "token",
          enteredValue: "secret-token",
          sensitivity: "sensitive",
        },
      ],
      observedAfterSubmission: [
        {
          fieldId: "email",
          value: "",
        },
        {
          fieldId: "token",
          value: "",
        },
      ],
      stateTrace: [
        { from: "editing", event: "submit", to: "submitting" },
        { from: "submitting", event: "server-error", to: "editing" },
      ],
    },
    {
      scenarioId: "rejected-form-loses-selection",
      kind: "form-submission",
      submissionOutcome: "rejected",
      fields: [
        {
          fieldId: "plan",
          enteredValue: "enterprise",
          sensitivity: "non-sensitive",
        },
      ],
      observedAfterSubmission: [
        {
          fieldId: "plan",
          value: "starter",
        },
      ],
      stateTrace: [
        { from: "editing", event: "submit", to: "submitting" },
        { from: "submitting", event: "business-rule-rejected", to: "editing" },
      ],
    },
  ],
};
