Deploy / deploy (push) Canceled after 0s
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
52 lines
1.4 KiB
TypeScript
52 lines
1.4 KiB
TypeScript
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',
|
|
})
|
|
})
|