lobe-chat

Форк
0
/
migrations.test.ts 
49 строк · 1.8 Кб
1
import { describe } from 'vitest';
2

3
import { MigrationData, VersionController } from '@/migrations/VersionController';
4

5
import { MigrationV1ToV2 } from '../FromV1ToV2';
6
import inputV1Data from '../FromV1ToV2/fixtures/input-v1-session.json';
7
import { MigrationV2ToV3 } from '../FromV2ToV3';
8
import { MigrationV3ToV4 } from '../FromV3ToV4';
9
import outputDataFromV1ToV5 from './fixtures/from-v1-to-v5-output.json';
10
import functionInputV4 from './fixtures/function-input-v4.json';
11
import functionOutputV5 from './fixtures/function-output-v5.json';
12
import { MigrationV4ToV5 } from './index';
13

14
describe('MigrationV4ToV5', () => {
15
  let migrations;
16
  let versionController: VersionController<any>;
17

18
  beforeEach(() => {
19
    migrations = [MigrationV4ToV5];
20
    versionController = new VersionController(migrations, 5);
21
  });
22

23
  describe('should migrate data correctly from previous versions', () => {
24
    it('role=function', () => {
25
      const data: MigrationData = functionInputV4;
26

27
      const migratedData = versionController.migrate(data);
28

29
      expect(migratedData.version).toEqual(functionOutputV5.version);
30
      expect(migratedData.state.messages).toEqual(functionOutputV5.state.messages);
31
    });
32
  });
33

34
  it('should work correct from v1 to v5', () => {
35
    const data: MigrationData = inputV1Data;
36

37
    versionController = new VersionController(
38
      [MigrationV4ToV5, MigrationV3ToV4, MigrationV2ToV3, MigrationV1ToV2],
39
      5,
40
    );
41

42
    const migratedData = versionController.migrate(data);
43

44
    expect(migratedData.version).toEqual(outputDataFromV1ToV5.version);
45
    expect(migratedData.state.messages).toEqual(outputDataFromV1ToV5.state.messages);
46
    expect(migratedData.state.sessions).toEqual(outputDataFromV1ToV5.state.sessions);
47
    expect(migratedData.state.topics).toEqual(outputDataFromV1ToV5.state.topics);
48
  });
49
});
50

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

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

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

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