lobe-chat

Форк
0
81 строка · 2.4 Кб
1
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2

3
import { DB_Plugin } from '../../schemas/plugin';
4
import { PluginModel } from '../plugin';
5

6
describe('PluginModel', () => {
7
  let pluginData: DB_Plugin;
8

9
  beforeEach(() => {
10
    // 设置正确结构的插件数据
11
    pluginData = {
12
      identifier: 'test-plugin',
13
      id: 'test-plugin',
14
      manifest: {},
15
      type: 'plugin',
16
    };
17
  });
18

19
  afterEach(async () => {
20
    // 每次测试后清理数据库
21
    await PluginModel.clear();
22
  });
23

24
  describe('getList', () => {
25
    it('should fetch and return the plugin list', async () => {
26
      await PluginModel.create(pluginData);
27
      const plugins = await PluginModel.getList();
28
      expect(plugins).toHaveLength(1);
29
      expect(plugins[0]).toEqual(pluginData);
30
    });
31
  });
32

33
  describe('create', () => {
34
    it('should create a plugin record', async () => {
35
      await PluginModel.create(pluginData);
36
      const plugins = await PluginModel.getList();
37
      expect(plugins).toHaveLength(1);
38
      expect(plugins[0]).toEqual(pluginData);
39
    });
40
  });
41

42
  describe('batchCreate', () => {
43
    it('should batch create plugin records', async () => {
44
      await PluginModel.batchCreate([pluginData, { ...pluginData, identifier: 'abc' }]);
45
      const plugins = await PluginModel.getList();
46
      expect(plugins).toHaveLength(2);
47
    });
48
  });
49

50
  describe('delete', () => {
51
    it('should delete a plugin', async () => {
52
      await PluginModel.create(pluginData);
53
      await PluginModel.delete(pluginData.identifier);
54
      const plugins = await PluginModel.getList();
55
      expect(plugins).toHaveLength(0);
56
    });
57
  });
58

59
  describe('update', () => {
60
    it('should update a plugin', async () => {
61
      await PluginModel.create(pluginData);
62
      const updatedPluginData: DB_Plugin = {
63
        ...pluginData,
64
        type: 'customPlugin',
65
      };
66
      await PluginModel.update(pluginData.identifier, updatedPluginData);
67
      const plugins = await PluginModel.getList();
68
      expect(plugins).toHaveLength(1);
69
      expect(plugins[0]).toEqual({ ...updatedPluginData, updatedAt: expect.any(Number) });
70
    });
71
  });
72

73
  describe('clear', () => {
74
    it('should clear the table', async () => {
75
      await PluginModel.create(pluginData);
76
      await PluginModel.clear();
77
      const plugins = await PluginModel.getList();
78
      expect(plugins).toHaveLength(0);
79
    });
80
  });
81
});
82

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

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

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

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