test/account-tier-filter.test.js
Rama master · réplica de lectura del repositorio original.
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import { tierBucket } from '../src/auth.js';
// The dashboard tier filter (batch 3) folds every raw account tier into exactly
// four buckets — pro / free / unknown / expired — so the filter dropdown and the
// per-tier counts (getAccountListStats().byTier) stay closed over a known set.
// Any paid-ish tier (enterprise / teams / trial / premium / …) reads as "pro";
// empty or unrecognized reads as "unknown". Keep in sync with setAccountTier's
// manual whitelist.
describe('tierBucket — dashboard tier filter buckets', () => {
it('keeps free / expired / unknown as themselves', () => {
assert.equal(tierBucket('free'), 'free');
assert.equal(tierBucket('expired'), 'expired');
assert.equal(tierBucket('unknown'), 'unknown');
});
it('treats empty / null / undefined as unknown', () => {
assert.equal(tierBucket(''), 'unknown');
assert.equal(tierBucket(null), 'unknown');
assert.equal(tierBucket(undefined), 'unknown');
});
it('folds every paid-ish tier into pro', () => {
for (const t of ['pro', 'enterprise', 'teams', 'team', 'trial', 'premium', 'paid', 'startup']) {
assert.equal(tierBucket(t), 'pro', `${t} should bucket as pro`);
}
});
it('is case-insensitive and trims surrounding whitespace', () => {
assert.equal(tierBucket('PRO'), 'pro');
assert.equal(tierBucket(' Free '), 'free');
assert.equal(tierBucket('Expired'), 'expired');
});
});