~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/pds.js

An atproto PDS in JavaScript, for Cloudflare Workers and Node

0
0
main
39 lines · 1.3 KB Raw History
import { getKeyDepth } from '@pdsjs/core/repo';
import { describe, expect, test } from 'vitest';

describe('MST Key Depth', () => {
  test('returns a non-negative integer', async () => {
    const depth = await getKeyDepth('app.bsky.feed.post/abc123');
    expect(typeof depth).toBe('number');
    expect(depth >= 0).toBe(true);
  });

  test('is deterministic for same key', async () => {
    const key = 'app.bsky.feed.post/test123';
    const depth1 = await getKeyDepth(key);
    const depth2 = await getKeyDepth(key);
    expect(depth1).toBe(depth2);
  });

  test('different keys can have different depths', async () => {
    // Generate many keys and check we get some variation
    const depths = new Set();
    for (let i = 0; i < 100; i++) {
      depths.add(await getKeyDepth(`collection/key${i}`));
    }
    // Should have at least 1 unique depth (realistically more)
    expect(depths.size >= 1).toBe(true);
  });

  test('handles empty string', async () => {
    const depth = await getKeyDepth('');
    expect(typeof depth).toBe('number');
    expect(depth >= 0).toBe(true);
  });

  test('handles unicode strings', async () => {
    const depth = await getKeyDepth('app.bsky.feed.post/émoji🎉');
    expect(typeof depth).toBe('number');
    expect(depth >= 0).toBe(true);
  });
});