mirror of
https://github.com/fawney19/Aether.git
synced 2026-10-09 10:57:03 +08:00
fix(frontend): deduplicate Antigravity quota groups
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { messages } from '@/i18n/messages'
|
||||
import { resolveAntigravityQuotaGroupLabel } from '@/features/providers/utils/antigravityQuota'
|
||||
|
||||
describe('resolveAntigravityQuotaGroupLabel', () => {
|
||||
it('uses the localized compact weekly label instead of the upstream display name', () => {
|
||||
const window = {
|
||||
code: 'group:0:gemini-weekly',
|
||||
label: 'Gemini Models · Weekly Limit Remaining',
|
||||
quota_group_label: 'Gemini models',
|
||||
bucket_id: 'gemini-weekly',
|
||||
window: 'weekly',
|
||||
}
|
||||
|
||||
expect(resolveAntigravityQuotaGroupLabel(
|
||||
window,
|
||||
key => messages['zh-CN'][key],
|
||||
)).toBe('Gemini Models · 周')
|
||||
expect(resolveAntigravityQuotaGroupLabel(
|
||||
window,
|
||||
key => messages['en-US'][key],
|
||||
)).toBe('Gemini Models · Weekly')
|
||||
})
|
||||
|
||||
it('normalizes the legacy Claude family name and detects a five-hour bucket', () => {
|
||||
const window = {
|
||||
code: 'group:1:3p-5h',
|
||||
label: 'Claude & ChatGPT · 5 hour',
|
||||
quota_group_label: 'Claude & ChatGPT',
|
||||
bucket_id: '3p-5h',
|
||||
}
|
||||
|
||||
expect(resolveAntigravityQuotaGroupLabel(
|
||||
window,
|
||||
key => messages['zh-CN'][key],
|
||||
)).toBe('Claude and GPT models · 5小时')
|
||||
expect(resolveAntigravityQuotaGroupLabel(
|
||||
window,
|
||||
key => messages['en-US'][key],
|
||||
)).toBe('Claude and GPT models · 5 Hours')
|
||||
})
|
||||
})
|
||||
@@ -1,24 +0,0 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import { summarizeAntigravityQuotaItems } from '@/features/providers/utils/antigravityQuota'
|
||||
|
||||
describe('summarizeAntigravityQuotaItems', () => {
|
||||
it('groups model families without collapsing their independent quota values', () => {
|
||||
const items = summarizeAntigravityQuotaItems([
|
||||
{ model: 'claude-opus-4-6-thinking', label: 'Claude Opus', remainingPercent: 100, resetSeconds: 60 },
|
||||
{ model: 'claude-sonnet-4-6', label: 'Claude Sonnet', remainingPercent: 82, resetSeconds: 120 },
|
||||
{ model: 'gemini-3.1-pro-high', label: 'Gemini Pro', remainingPercent: 90.6, resetSeconds: 180 },
|
||||
{ model: 'gemini-3-flash-agent', label: 'Gemini Flash', remainingPercent: 95, resetSeconds: 240 },
|
||||
{ model: 'gpt-oss-120b-medium', label: 'GPT-OSS', remainingPercent: 100, resetSeconds: 300 },
|
||||
{ model: 'tab_flash_lite_preview', label: 'Tab', remainingPercent: 76, resetSeconds: 360 },
|
||||
{ model: 'chat_20706', label: 'Chat', remainingPercent: 64, resetSeconds: 420 },
|
||||
])
|
||||
|
||||
expect(items.map(item => [item.label, item.remainingPercent, item.detail])).toEqual([
|
||||
['Gemini额度', 90.6, '90.6%–95%'],
|
||||
['Claude & ChatGPT', 82, '82%–100%'],
|
||||
])
|
||||
expect(items.map(item => item.resetSeconds)).toEqual([180, 120])
|
||||
expect(items[1]?.model).toBe('claude-sonnet-4-6')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user