From 432b2c52b27c9bda58faeffcc915ff8cdff90e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E8=87=AA=E8=BE=BE?= <980324341@qq.com> Date: Mon, 31 Aug 2026 19:19:33 +0800 Subject: [PATCH] =?UTF-8?q?task-5:=20normalizeStatus()=20=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=BD=92=E4=B8=80=EF=BC=88=E5=A4=A7=E5=86=99=E5=8C=96?= =?UTF-8?q?=E3=80=81=E8=BF=9E=E5=AD=97=E7=AC=A6/=E7=A9=BA=E6=A0=BC?= =?UTF-8?q?=E8=BD=AC=E4=B8=8B=E5=88=92=E7=BA=BF=E3=80=81=E7=A9=BA=E5=80=BC?= =?UTF-8?q?=E5=AE=89=E5=85=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend-vue/src/shared/api/status.ts | 10 +++++++ frontend-vue/tests/status.test.ts | 40 +++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 frontend-vue/src/shared/api/status.ts create mode 100644 frontend-vue/tests/status.test.ts diff --git a/frontend-vue/src/shared/api/status.ts b/frontend-vue/src/shared/api/status.ts new file mode 100644 index 00000000..982e3779 --- /dev/null +++ b/frontend-vue/src/shared/api/status.ts @@ -0,0 +1,10 @@ +export function normalizeStatus(raw: string | null | undefined): string { + if (typeof raw !== 'string') { + return '' + } + const trimmed = raw.trim() + if (!trimmed) { + return '' + } + return trimmed.toUpperCase().replace(/[\s-]+/g, '_') +} diff --git a/frontend-vue/tests/status.test.ts b/frontend-vue/tests/status.test.ts new file mode 100644 index 00000000..fc1e9b03 --- /dev/null +++ b/frontend-vue/tests/status.test.ts @@ -0,0 +1,40 @@ +import { test } from 'node:test' +import assert from 'node:assert/strict' +import { normalizeStatus } from '../src/shared/api/status.ts' + +test('test_normalize_lower_to_upper', () => { + assert.equal(normalizeStatus('success'), 'SUCCESS') + assert.equal(normalizeStatus('failed'), 'FAILED') + assert.equal(normalizeStatus('pending'), 'PENDING') +}) + +test('test_normalize_mixed_case', () => { + assert.equal(normalizeStatus('rUnNiNg'), 'RUNNING') +}) + +test('test_normalize_with_hyphen', () => { + assert.equal(normalizeStatus('in-progress'), 'IN_PROGRESS') + assert.equal(normalizeStatus('file-ready'), 'FILE_READY') +}) + +test('test_normalize_null', () => { + assert.equal(normalizeStatus(null), '') +}) + +test('test_normalize_undefined', () => { + assert.equal(normalizeStatus(undefined), '') +}) + +test('test_normalize_empty_string', () => { + assert.equal(normalizeStatus(''), '') +}) + +test('test_normalize_unknown_passthrough', () => { + assert.equal(normalizeStatus('SYNCING'), 'SYNCING') + assert.equal(normalizeStatus('QUEUED'), 'QUEUED') +}) + +test('test_normalize_whitespace_padded', () => { + assert.equal(normalizeStatus(' running '), 'RUNNING') + assert.equal(normalizeStatus(' '), '') +})