Sifa professional network API (Fastify, AT Protocol, Jetstream)
sifa.id/
1import { describe, it, expect, afterAll } from 'vitest';
2import { createDb } from '../../src/db/index.js';
3import { createCursorManager } from '../../src/jetstream/cursor.js';
4import { sql } from 'drizzle-orm';
5
6describe('Cursor manager', () => {
7 const db = createDb(process.env.DATABASE_URL ?? 'postgresql://sifa:sifa@localhost:5432/sifa');
8
9 afterAll(async () => {
10 // Clean up test data
11 await db.execute(sql`DELETE FROM jetstream_cursor WHERE id = 'test'`);
12 await db.$client.end();
13 });
14
15 it('returns undefined when no cursor exists', async () => {
16 const cm = createCursorManager(db, 'test');
17 // Delete any existing test cursor
18 await db.execute(sql`DELETE FROM jetstream_cursor WHERE id = 'test'`);
19 const cursor = await cm.get();
20 expect(cursor).toBeUndefined();
21 });
22
23 it('saves and retrieves cursor', async () => {
24 const cm = createCursorManager(db, 'test');
25 await cm.save(9999999n);
26 const cursor = await cm.get();
27 expect(cursor).toBe(9999999n);
28 });
29});