lobe-chat

Форк
0
/
migrations.test.ts 
42 строки · 1.7 Кб
1
import { MigrationData, VersionController } from '@/migrations/VersionController';
2

3
import { MigrationV1ToV2 } from '../FromV1ToV2';
4
import inputV1Data from '../FromV1ToV2/fixtures/input-v1-session.json';
5
import inputV2Data from './fixtures/input-v2-session.json';
6
import outputV3DataFromV1 from './fixtures/output-v3-from-v1.json';
7
import outputV3Data from './fixtures/output-v3.json';
8
import { MigrationV2ToV3 } from './index';
9

10
describe('MigrationV2ToV3', () => {
11
  let migrations;
12
  let versionController: VersionController<any>;
13

14
  beforeEach(() => {
15
    migrations = [MigrationV2ToV3];
16
    versionController = new VersionController(migrations, 3);
17
  });
18

19
  it('should migrate data correctly through multiple versions', () => {
20
    const data: MigrationData = inputV2Data;
21

22
    const migratedData = versionController.migrate(data);
23

24
    expect(migratedData.version).toEqual(outputV3Data.version);
25
    expect(migratedData.state.sessions).toEqual(outputV3Data.state.sessions);
26
    expect(migratedData.state.topics).toEqual(outputV3Data.state.topics);
27
    expect(migratedData.state.messages).toEqual(outputV3Data.state.messages);
28
  });
29

30
  it('should work correct from v1 to v3', () => {
31
    const data: MigrationData = inputV1Data;
32

33
    versionController = new VersionController([MigrationV2ToV3, MigrationV1ToV2], 3);
34

35
    const migratedData = versionController.migrate(data);
36

37
    expect(migratedData.version).toEqual(outputV3DataFromV1.version);
38
    expect(migratedData.state.sessions).toEqual(outputV3DataFromV1.state.sessions);
39
    expect(migratedData.state.topics).toEqual(outputV3DataFromV1.state.topics);
40
    expect(migratedData.state.messages).toEqual(outputV3DataFromV1.state.messages);
41
  });
42
});
43

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.