lobe-chat
42 строки · 1.7 Кб
1import { MigrationData, VersionController } from '@/migrations/VersionController';2
3import { MigrationV1ToV2 } from '../FromV1ToV2';4import inputV1Data from '../FromV1ToV2/fixtures/input-v1-session.json';5import inputV2Data from './fixtures/input-v2-session.json';6import outputV3DataFromV1 from './fixtures/output-v3-from-v1.json';7import outputV3Data from './fixtures/output-v3.json';8import { MigrationV2ToV3 } from './index';9
10describe('MigrationV2ToV3', () => {11let migrations;12let versionController: VersionController<any>;13
14beforeEach(() => {15migrations = [MigrationV2ToV3];16versionController = new VersionController(migrations, 3);17});18
19it('should migrate data correctly through multiple versions', () => {20const data: MigrationData = inputV2Data;21
22const migratedData = versionController.migrate(data);23
24expect(migratedData.version).toEqual(outputV3Data.version);25expect(migratedData.state.sessions).toEqual(outputV3Data.state.sessions);26expect(migratedData.state.topics).toEqual(outputV3Data.state.topics);27expect(migratedData.state.messages).toEqual(outputV3Data.state.messages);28});29
30it('should work correct from v1 to v3', () => {31const data: MigrationData = inputV1Data;32
33versionController = new VersionController([MigrationV2ToV3, MigrationV1ToV2], 3);34
35const migratedData = versionController.migrate(data);36
37expect(migratedData.version).toEqual(outputV3DataFromV1.version);38expect(migratedData.state.sessions).toEqual(outputV3DataFromV1.state.sessions);39expect(migratedData.state.topics).toEqual(outputV3DataFromV1.state.topics);40expect(migratedData.state.messages).toEqual(outputV3DataFromV1.state.messages);41});42});43