64 lines
2.2 KiB
TypeScript
64 lines
2.2 KiB
TypeScript
import { DataSource } from 'typeorm';
|
|
import { AddA2UiReviews1784880000000 } from '../migrations/1784880000000-AddA2UiReviews';
|
|
import { EnlargeAiReviewSections1784900000000 } from '../migrations/1784900000000-EnlargeAiReviewSections';
|
|
|
|
describe('EnlargeAiReviewSections1784900000000', () => {
|
|
let dataSource: DataSource;
|
|
|
|
beforeEach(async () => {
|
|
dataSource = new DataSource({
|
|
type: 'better-sqlite3',
|
|
database: ':memory:',
|
|
migrations: [AddA2UiReviews1784880000000, EnlargeAiReviewSections1784900000000],
|
|
});
|
|
await dataSource.initialize();
|
|
await dataSource.query(`
|
|
CREATE TABLE ai_messages (
|
|
id integer PRIMARY KEY AUTOINCREMENT,
|
|
conversation_id integer NOT NULL,
|
|
role varchar(20) NOT NULL,
|
|
content text,
|
|
reasoning_content text,
|
|
status varchar(20) NOT NULL,
|
|
error_code varchar(50),
|
|
reply_to_message_id integer,
|
|
feedback varchar(10),
|
|
feedback_reason varchar(500),
|
|
metadata text,
|
|
created_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
)
|
|
`);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
if (dataSource.isInitialized) await dataSource.destroy();
|
|
});
|
|
|
|
it('迁移后可保存远超 256KB 的预览数据,且再次执行幂等', async () => {
|
|
await dataSource.runMigrations();
|
|
await dataSource.runMigrations();
|
|
|
|
await dataSource.query(
|
|
`INSERT INTO ai_messages (conversation_id, role, content, status)
|
|
VALUES (1, 'assistant', '', 'completed')`,
|
|
);
|
|
const big = '中'.repeat(300 * 1024);
|
|
await dataSource.query(
|
|
`INSERT INTO ai_reviews
|
|
(id, conversation_id, user_id, assistant_message_id, title, sections_json, status)
|
|
VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
|
['review-1', 1, 1, 1, '大体积导入', big, 'pending'],
|
|
);
|
|
const rows: Array<{ sections_json: string }> = await dataSource.query(
|
|
'SELECT sections_json FROM ai_reviews WHERE id = ?',
|
|
['review-1'],
|
|
);
|
|
expect(rows[0].sections_json.length).toBe(big.length);
|
|
|
|
const runner = dataSource.createQueryRunner();
|
|
expect(await runner.hasColumn('ai_reviews', 'sections_json')).toBe(true);
|
|
await runner.release();
|
|
});
|
|
});
|