import assert from "node:assert/strict" import test from "node:test" import { getSubmitButtonState } from "../src/oj/problem/components/submitButtonState.ts" const idleInput = { isAuthed: true, hasCode: true, isFormatting: false, isSubmitting: false, isJudging: false, isCooldown: false, } test("shows a disabled loading state while formatting", () => { assert.deepEqual(getSubmitButtonState({ ...idleInput, isFormatting: true }), { disabled: true, label: "格式化中", icon: "eos-icons:loading", }) }) test("shows submitting immediately after formatting", () => { assert.deepEqual(getSubmitButtonState({ ...idleInput, isSubmitting: true }), { disabled: true, label: "正在提交", icon: "eos-icons:loading", }) }) test("preserves existing login, judging, cooldown, and idle states", () => { assert.deepEqual(getSubmitButtonState({ ...idleInput, isAuthed: false }), { disabled: true, label: "请先登录", icon: "ph:play-fill", }) assert.deepEqual(getSubmitButtonState({ ...idleInput, isJudging: true }), { disabled: true, label: "正在评分", icon: "eos-icons:loading", }) assert.deepEqual(getSubmitButtonState({ ...idleInput, isCooldown: true }), { disabled: true, label: "正在冷却", icon: "ph:lightbulb-fill", }) assert.deepEqual(getSubmitButtonState(idleInput), { disabled: false, label: "提交代码", icon: "ph:play-fill", }) })