# One executable trigger fixture for every portable diagnostic in error-codes.yaml.
cases:
  - {code: MCF_YAML_INVALID, probe: yaml, text: "["}
  - {code: MCF_YAML_DUPLICATE_KEY, probe: yaml, text: "id: one\nid: two\n"}
  - code: MCF_SCHEMA_INVALID
    probe: schema
    schema: schemas/1.1/manifest.schema.json
    value: {mcf: "1.1"}
  - {code: MCF_VERSION_UNSUPPORTED, probe: input, path: fixtures/invalid/unsupported-version}
  - code: MCF_PACKAGE_KIND_UNSUPPORTED
    probe: package_text
    text: "mcf: '1.1'\nkind: unknown\nid: example\nlanguage: en\ntitle: Example\n"
  - {code: MCF_PACKAGE_ENTRY_MISSING, probe: input, path: fixtures/archives/missing-manifest.mcf.zip}
  - {code: MCF_PACKAGE_ID_COLLISION, probe: package_set, identities: [[example, "1"], [example, "1"]]}
  - {code: MCF_ARCHIVE_INVALID, probe: input, path: fixtures/archives/duplicate-entry.mcf.zip}
  - {code: MCF_ARCHIVE_LIMIT_EXCEEDED, probe: input, path: fixtures/archives/limit-exceeded.mcf.zip}
  - {code: MCF_PATH_INVALID, probe: path, value: "/absolute/file.mcf"}
  - {code: MCF_PATH_TRAVERSAL, probe: input, path: fixtures/invalid/path-traversal}
  - code: MCF_FILE_MISSING
    probe: package_text
    text: "mcf: '1.1'\nkind: lesson\nid: example\ntitle: Example\nlanguage: en\nentry: missing.mcf\n"
  - {code: MCF_ID_INVALID, probe: id, value: "Not Valid"}
  - {code: MCF_ID_DUPLICATE, probe: package_set, identities: [[example, "1"], [example, "1"]], diagnostic: MCF_ID_DUPLICATE}
  - {code: MCF_LESSON_FRONTMATTER_INVALID, probe: lesson, text: "# no frontmatter\n"}
  - code: MCF_LESSON_CONTENT_OUTSIDE_ACTIVITY
    probe: lesson
    text: "---\nid: lesson\ntitle: Lesson\n---\nOutside.\n"
  - {code: MCF_ACTIVITY_UNTERMINATED, probe: input, path: fixtures/invalid/malformed-activity}
  - code: MCF_ACTIVITY_NESTED
    probe: lesson
    text: "---\nid: lesson\ntitle: Lesson\n---\n:::mcf-activity\ntype: notes\nid: outer\nevaluation: ungraded\n:::\n:::mcf-activity\n:::mcf-end\n"
  - code: MCF_ACTIVITY_HEADER_INVALID
    probe: activity
    value: {id: activity, type: notes, evaluation: automatic}
  - {code: MCF_ACTIVITY_TYPE_UNSUPPORTED, probe: activity, value: {id: activity, type: video}}
  - code: MCF_QUESTION_YAML_INVALID
    probe: lesson
    text: "---\nid: lesson\ntitle: Lesson\n---\n:::mcf-activity\ntype: assessment\nid: test\n:::\n```mcf-question\n[\n```\n:::mcf-end\n"
  - {code: MCF_QUESTION_TYPE_UNSUPPORTED, probe: question, value: {id: q, type: unsupported, prompt: Prompt}}
  - {code: MCF_QUESTION_FIELDS_INVALID, probe: question_case, id: true-false-forbids-manual}
  - {code: MCF_QUESTION_ANSWER_REFERENCE_INVALID, probe: input, path: fixtures/invalid/invalid-answer-reference}
  - {code: MCF_QUESTION_DUPLICATE_OPTION_ID, probe: input, path: fixtures/invalid/duplicate-option}
  - {code: MCF_QUESTION_DUPLICATE_ITEM_ID, probe: question_case, id: matching-duplicate-item}
  - code: MCF_QUESTION_POOL_INVALID
    probe: lesson
    text: "---\nid: lesson\ntitle: Lesson\n---\n:::mcf-activity\ntype: assessment\nid: test\nquestion_pool_size: 2\n:::\n```mcf-question\nid: q\ntype: true_false\nprompt: True?\nanswer: true\n```\n:::mcf-end\n"
  - {code: MCF_RUBRIC_REFERENCE_UNRESOLVED, probe: input, path: fixtures/invalid/unresolved-rubric}
  - code: MCF_RUBRIC_INVALID
    probe: rubric
    value: {id: rubric, title: Invalid, criteria: []}
  - code: MCF_COMPLETION_REFERENCE_UNRESOLVED
    probe: completion
    value: {all: [{activity: missing, requirement: viewed}]}
  - code: MCF_COMPLETION_INVALID
    probe: completion
    value: {all: [], any: []}
  - {code: MCF_ASSET_REFERENCE_UNRESOLVED, probe: reference, kind: asset, target: missing, known: []}
  - {code: MCF_ASSET_INTEGRITY_MISMATCH, probe: integrity, content: hello, integrity: "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}
  - {code: MCF_LANGUAGE_INVALID, probe: language, value: "en_US"}
  - {code: MCF_RELATIONSHIP_UNRESOLVED, probe: reference, kind: relationship, target: missing, known: []}
  - {code: MCF_QUESTION_BANK_REFERENCE_UNRESOLVED, probe: reference, kind: question_bank, target: missing, known: []}
  - {code: MCF_EXTENSION_NAME_INVALID, probe: input, path: fixtures/invalid/invalid-extension-name}
  - code: MCF_EXTENSION_REQUIRED_UNSUPPORTED
    probe: extension
    value: {org.example.required: {required: true, data: {}}}
    supported: []
  - {code: MCF_SECURITY_POLICY_REJECTED, probe: policy, event: rejected}
  - {code: MCF_REMOTE_RESOURCE_UNAVAILABLE, probe: policy, event: remote_unavailable}
  - {code: MCF_RAW_HTML_SANITIZED, probe: policy, event: raw_html_sanitized}
  - code: MCF_EXTENSION_OPTIONAL_UNSUPPORTED
    probe: extension
    value: {org.example.optional: {required: false, data: {future: value}}}
    supported: []
