Files
wei-shaw--claude-relay-service/tests/modelRateLimitFamily.test.js
T
2026-07-13 12:48:39 +08:00

29 lines
1.3 KiB
JavaScript

const { getRateLimitModelFamily, RATE_LIMITED_MODEL_FAMILIES } = require('../src/utils/modelHelper')
describe('getRateLimitModelFamily', () => {
it('maps each Claude model to its independent rate-limit family', () => {
expect(getRateLimitModelFamily('claude-opus-4-8')).toBe('opus')
expect(getRateLimitModelFamily('claude-sonnet-4-5')).toBe('sonnet')
expect(getRateLimitModelFamily('claude-sonnet-4-6')).toBe('sonnet')
expect(getRateLimitModelFamily('claude-fable-5')).toBe('fable')
expect(getRateLimitModelFamily('claude-fable-5-mythos-5')).toBe('fable')
expect(getRateLimitModelFamily('claude-3-5-haiku-20241022')).toBe('haiku')
})
it('strips vendor prefixes before matching', () => {
expect(getRateLimitModelFamily('ccr,claude-sonnet-4-5')).toBe('sonnet')
})
it('returns null for unknown or invalid models', () => {
expect(getRateLimitModelFamily('deepseek-chat')).toBeNull()
expect(getRateLimitModelFamily('')).toBeNull()
expect(getRateLimitModelFamily(null)).toBeNull()
expect(getRateLimitModelFamily(undefined)).toBeNull()
expect(getRateLimitModelFamily(123)).toBeNull()
})
it('exposes the family list used for per-model rate-limit buckets', () => {
expect(RATE_LIMITED_MODEL_FAMILIES).toEqual(['opus', 'sonnet', 'haiku', 'fable'])
})
})