Files
gongxue-base/apps/server/src/ai-chat/ai-chat.migration.spec.ts

47 lines
1.6 KiB
TypeScript

import { DataSource } from 'typeorm';
import { AddAiChat1784780000000 } from '../migrations/1784780000000-AddAiChat';
describe('AddAiChat1784780000000', () => {
let dataSource: DataSource;
beforeEach(async () => {
dataSource = new DataSource({
type: 'better-sqlite3',
database: ':memory:',
migrations: [AddAiChat1784780000000],
});
await dataSource.initialize();
await dataSource.query(
'CREATE TABLE users (id integer PRIMARY KEY AUTOINCREMENT, username varchar(100) NOT NULL)',
);
});
afterEach(async () => {
if (dataSource.isInitialized) await dataSource.destroy();
});
it('创建会话、消息和工具记录表,并按会话级联删除', async () => {
await dataSource.runMigrations();
for (const table of ['ai_conversations', 'ai_messages', 'ai_tool_runs']) {
expect(await dataSource.createQueryRunner().hasTable(table)).toBe(true);
}
await dataSource.query("INSERT INTO users (username) VALUES ('tester')");
await dataSource.query(
"INSERT INTO ai_conversations (user_id, title) VALUES (1, '测试会话')",
);
await dataSource.query(
"INSERT INTO ai_messages (conversation_id, role, content) VALUES (1, 'assistant', '回答')",
);
await dataSource.query(
"INSERT INTO ai_tool_runs (message_id, tool_call_id, tool_name, status) VALUES (1, 'call_1', 'search_students', 'success')",
);
await dataSource.query('DELETE FROM ai_conversations WHERE id = 1');
expect(await dataSource.query('SELECT id FROM ai_messages')).toEqual([]);
expect(await dataSource.query('SELECT id FROM ai_tool_runs')).toEqual([]);
});
});