From 6398d4a19368e9585ebca9a633917fb77d1d187a Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 23 Jun 2026 16:36:25 +0800 Subject: [PATCH] =?UTF-8?q?test(ai-review=20=E4=BD=BF=E7=94=A8=E9=87=8F):?= =?UTF-8?q?=20=E8=A3=9C=20formatUsageStatsLine=20=E5=B0=8D=20NaN/=E7=95=B0?= =?UTF-8?q?=E5=B8=B8=E6=95=B8=E5=AD=97=E8=BC=B8=E5=87=BA=E5=AE=89=E5=85=A8?= =?UTF-8?q?=E6=96=87=E5=AD=97=E6=B8=AC=E8=A9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/usage.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/usage.test.js b/app/usage.test.js index e0785b1..aa79008 100644 --- a/app/usage.test.js +++ b/app/usage.test.js @@ -244,4 +244,13 @@ describe('formatUsageStatsLine', () => { const line = formatUsageStatsLine('ollama', 'llama3', usage, { available: false, reason: '本地服務,無帳號額度概念' }, { hasData: false }); assert.match(line, /;剩餘可用: 無法計算(本地服務,無帳號額度概念)/); }); + + it('produces safe text (no NaN) when quota/rate carry invalid numbers', () => { + // quota.limit 為 NaN、rate.limit 為 NaN → 不應算出百分比、不得輸出 NaN + const line = formatUsageStatsLine('openai', 'm', usage, + { available: true, used: 5, limit: NaN, currency: 'USD' }, + { hasData: true, remaining: NaN, limit: NaN, kind: 'tokens' }); + assert.doesNotMatch(line, /NaN/); + assert.match(line, /剩餘可用: 無法計算/); + }); });