import { describe, it, expect, beforeAll } from 'vitest'; import { pool } from '../../lib/db/pool.js'; import { resetDb } from '../helpers/db.js'; import { migrateUp } from '../../lib/db/migrate.js'; import * as conversations from '../../lib/db/repos/conversations.js'; const ACTOR = { kind: 'user', id: null }; let spaceId, agentId; beforeAll(async () => { await resetDb(); await migrateUp(); ({ rows: [{ id: spaceId }] } = await pool.query( `INSERT INTO spaces(slug,name) VALUES('s','S') RETURNING id`)); ({ rows: [{ id: agentId }] } = await pool.query( `SELECT id FROM agents WHERE slug='companion'`)); }); describe('findOrCreateForSpace', () => { it('creates once then returns the same row', async () => { const a = await conversations.findOrCreateForSpace(spaceId, agentId, ACTOR); const b = await conversations.findOrCreateForSpace(spaceId, agentId, ACTOR); expect(a.id).toBe(b.id); expect(a.space_id).toBe(spaceId); expect(a.agent_id).toBe(agentId); }); });