Add projects
This commit is contained in:
parent
2d3a9ad623
commit
8b607dd700
1802 changed files with 503346 additions and 2 deletions
41
frontend/tests/quotaPlanTier.test.ts
Normal file
41
frontend/tests/quotaPlanTier.test.ts
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import { describe, expect, test } from 'vitest';
|
||||
import {
|
||||
ELITE_CODEX_PLAN_TYPE,
|
||||
PREMIUM_CODEX_PLAN_TYPES,
|
||||
resolvePlanTier,
|
||||
} from '@/utils/quota';
|
||||
|
||||
describe('resolvePlanTier', () => {
|
||||
test("elite wins for 'pro' even though it is also in the premium set (order contract)", () => {
|
||||
// 顺序契约回归:'pro' 同时命中 PREMIUM_CODEX_PLAN_TYPES,
|
||||
// 一旦 premium 判断先行,Pro 20x 会静默退回金卡。
|
||||
expect(PREMIUM_CODEX_PLAN_TYPES.has(ELITE_CODEX_PLAN_TYPE)).toBe(true);
|
||||
expect(resolvePlanTier('pro')).toBe('elite');
|
||||
});
|
||||
|
||||
test('normalizes case and whitespace before matching', () => {
|
||||
expect(resolvePlanTier('PRO')).toBe('elite');
|
||||
expect(resolvePlanTier(' Pro ')).toBe('elite');
|
||||
expect(resolvePlanTier('Pro-Lite')).toBe('premium');
|
||||
});
|
||||
|
||||
test('maps every pro-lite spelling to premium', () => {
|
||||
expect(resolvePlanTier('prolite')).toBe('premium');
|
||||
expect(resolvePlanTier('pro-lite')).toBe('premium');
|
||||
expect(resolvePlanTier('pro_lite')).toBe('premium');
|
||||
});
|
||||
|
||||
test('maps ordinary and unknown plans to plain', () => {
|
||||
expect(resolvePlanTier('plus')).toBe('plain');
|
||||
expect(resolvePlanTier('team')).toBe('plain');
|
||||
expect(resolvePlanTier('free')).toBe('plain');
|
||||
expect(resolvePlanTier('enterprise')).toBe('plain');
|
||||
});
|
||||
|
||||
test('maps missing values to plain', () => {
|
||||
expect(resolvePlanTier(null)).toBe('plain');
|
||||
expect(resolvePlanTier(undefined)).toBe('plain');
|
||||
expect(resolvePlanTier('')).toBe('plain');
|
||||
expect(resolvePlanTier(' ')).toBe('plain');
|
||||
});
|
||||
});
|
||||
Loading…
Reference in a new issue