lobe-chat
49 строк · 1.8 Кб
1import { describe } from 'vitest';
2
3import { MigrationData, VersionController } from '@/migrations/VersionController';
4
5import { MigrationV1ToV2 } from '../FromV1ToV2';
6import inputV1Data from '../FromV1ToV2/fixtures/input-v1-session.json';
7import { MigrationV2ToV3 } from '../FromV2ToV3';
8import { MigrationV3ToV4 } from '../FromV3ToV4';
9import outputDataFromV1ToV5 from './fixtures/from-v1-to-v5-output.json';
10import functionInputV4 from './fixtures/function-input-v4.json';
11import functionOutputV5 from './fixtures/function-output-v5.json';
12import { MigrationV4ToV5 } from './index';
13
14describe('MigrationV4ToV5', () => {
15let migrations;
16let versionController: VersionController<any>;
17
18beforeEach(() => {
19migrations = [MigrationV4ToV5];
20versionController = new VersionController(migrations, 5);
21});
22
23describe('should migrate data correctly from previous versions', () => {
24it('role=function', () => {
25const data: MigrationData = functionInputV4;
26
27const migratedData = versionController.migrate(data);
28
29expect(migratedData.version).toEqual(functionOutputV5.version);
30expect(migratedData.state.messages).toEqual(functionOutputV5.state.messages);
31});
32});
33
34it('should work correct from v1 to v5', () => {
35const data: MigrationData = inputV1Data;
36
37versionController = new VersionController(
38[MigrationV4ToV5, MigrationV3ToV4, MigrationV2ToV3, MigrationV1ToV2],
395,
40);
41
42const migratedData = versionController.migrate(data);
43
44expect(migratedData.version).toEqual(outputDataFromV1ToV5.version);
45expect(migratedData.state.messages).toEqual(outputDataFromV1ToV5.state.messages);
46expect(migratedData.state.sessions).toEqual(outputDataFromV1ToV5.state.sessions);
47expect(migratedData.state.topics).toEqual(outputDataFromV1ToV5.state.topics);
48});
49});
50