Skip to content
markpaper

src/index.test.ts

v0.2.1 · 1.7 KB

Download file
import { describe, expect, it } from 'vitest';
import * as kit from './index.js';

describe('package entry', () => {
  it('exposes every namespace', () => {
    expect(typeof kit.numbers).toBe('object');
    expect(typeof kit.markets).toBe('object');
    expect(typeof kit.ids).toBe('object');
    expect(typeof kit.pending).toBe('object');
    expect(typeof kit.writeBudget).toBe('object');
    expect(typeof kit.rest).toBe('object');
    expect(typeof kit.signer).toBe('object');
    expect(typeof kit.orders).toBe('object');
  });

  it('flat exports match the namespaces (no silent collisions)', () => {
    const namespaces = [
      kit.numbers,
      kit.markets,
      kit.ids,
      kit.pending,
      kit.writeBudget,
      kit.rest,
      kit.signer,
      kit.orders,
    ];
    const seen = new Map<string, number>();
    for (const ns of namespaces) {
      for (const name of Object.keys(ns)) seen.set(name, (seen.get(name) ?? 0) + 1);
    }
    const collisions = [...seen.entries()].filter(([, n]) => n > 1).map(([name]) => name);
    expect(collisions).toEqual([]);
    for (const [name] of seen) {
      expect((kit as Record<string, unknown>)[name]).toBeDefined();
    }
  });

  it('exposes the headline functions flat', () => {
    expect(typeof kit.quantizeSize).toBe('function');
    expect(typeof kit.parseOrderBookDetails).toBe('function');
    expect(typeof kit.parseJsonExact).toBe('function');
    expect(typeof kit.createPendingMemory).toBe('function');
    expect(typeof kit.createWriteWindow).toBe('function');
    expect(typeof kit.createRestClient).toBe('function');
    expect(typeof kit.createSignerClient).toBe('function');
    expect(typeof kit.measureIocFill).toBe('function');
    expect(typeof kit.planOrderSize).toBe('function');
  });
});
All files