2026-05-09 10:44:45 +08:00
|
|
|
import { describe, expect, it } from 'vitest'
|
|
|
|
|
|
|
|
|
|
import { getQuotaDisplayText } from '../providerKeyQuota'
|
|
|
|
|
|
|
|
|
|
describe('providerKeyQuota', () => {
|
|
|
|
|
it('includes Codex Spark quota windows in display text', () => {
|
|
|
|
|
expect(getQuotaDisplayText({
|
|
|
|
|
status_snapshot: {
|
|
|
|
|
oauth: {
|
|
|
|
|
code: 'valid',
|
|
|
|
|
},
|
|
|
|
|
account: {
|
|
|
|
|
code: 'ok',
|
|
|
|
|
blocked: false,
|
|
|
|
|
},
|
|
|
|
|
quota: {
|
|
|
|
|
provider_type: 'codex',
|
|
|
|
|
code: 'ok',
|
|
|
|
|
exhausted: false,
|
|
|
|
|
windows: [
|
|
|
|
|
{
|
|
|
|
|
code: 'weekly',
|
|
|
|
|
remaining_ratio: 0.9,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
code: '5h',
|
|
|
|
|
remaining_ratio: 0.8,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
code: 'spark_5h',
|
|
|
|
|
remaining_ratio: 0.6,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
code: 'spark_weekly',
|
|
|
|
|
remaining_ratio: 0.95,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}, 'codex')).toBe('周剩余 90.0% | 5H剩余 80.0% | Spark5H剩余 60.0% | Spark周剩余 95.0%')
|
|
|
|
|
})
|
2026-05-16 19:23:09 +08:00
|
|
|
|
|
|
|
|
it('formats Grok account quota from structured quota windows', () => {
|
|
|
|
|
expect(getQuotaDisplayText({
|
|
|
|
|
status_snapshot: {
|
|
|
|
|
oauth: {
|
|
|
|
|
code: 'valid',
|
|
|
|
|
},
|
|
|
|
|
account: {
|
|
|
|
|
code: 'ok',
|
|
|
|
|
blocked: false,
|
|
|
|
|
},
|
|
|
|
|
quota: {
|
|
|
|
|
provider_type: 'grok',
|
|
|
|
|
code: 'ok',
|
|
|
|
|
exhausted: false,
|
|
|
|
|
windows: [
|
|
|
|
|
{
|
|
|
|
|
scope: 'account',
|
|
|
|
|
used_value: 2,
|
|
|
|
|
limit_value: 10,
|
|
|
|
|
remaining_ratio: 0.8,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}, 'grok')).toBe('剩余 80.0% (8/10)')
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('formats Grok mode quota from model-scoped windows', () => {
|
|
|
|
|
expect(getQuotaDisplayText({
|
|
|
|
|
status_snapshot: {
|
|
|
|
|
oauth: {
|
|
|
|
|
code: 'valid',
|
|
|
|
|
},
|
|
|
|
|
account: {
|
|
|
|
|
code: 'ok',
|
|
|
|
|
blocked: false,
|
|
|
|
|
},
|
|
|
|
|
quota: {
|
|
|
|
|
provider_type: 'grok',
|
|
|
|
|
code: 'ok',
|
|
|
|
|
exhausted: false,
|
|
|
|
|
plan_type: 'heavy',
|
|
|
|
|
windows: [
|
|
|
|
|
{
|
|
|
|
|
code: 'model:quota_auto',
|
|
|
|
|
label: 'auto',
|
|
|
|
|
scope: 'model',
|
|
|
|
|
remaining_ratio: 0.4,
|
|
|
|
|
used_value: 90,
|
|
|
|
|
limit_value: 150,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
code: 'model:quota_heavy',
|
|
|
|
|
label: 'heavy',
|
|
|
|
|
scope: 'model',
|
|
|
|
|
remaining_ratio: 0,
|
|
|
|
|
used_value: 20,
|
|
|
|
|
limit_value: 20,
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}, 'grok')).toBe('Auto剩余 40.0% (60/150) | Heavy剩余 0.0% (0/20)')
|
|
|
|
|
})
|
2026-05-09 10:44:45 +08:00
|
|
|
})
|