Ctrl K
ComunidadGuías…

test/account-tier-filter.test.js

Rama master · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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');
  });
});