profile-codex-plugins.test.ts 1.4 KB

12345678910111213141516171819202122
  1. import pino from 'pino'
  2. import { describe, expect, it } from 'vitest'
  3. import { createApp } from '../src/app'
  4. describe('Profile 的 Codex 插件', () => {
  5. it('Codex Profile 保存勾选的插件并产生新版本;Claude Profile 一律清空;ID 格式校验', () => {
  6. const app = createApp(pino({ level: 'silent' }), { providers: {} })
  7. const { id: _i, version: _v, updatedAt: _u, builtin: _b, builtinKey: _k, ...base } = app.profiles.getBuiltin()
  8. const codex = app.profiles.create({ ...base, provider: 'codex', model: 'gpt-test', name: '带插件', isDefault: false })
  9. expect(codex.codexPluginIds).toEqual([])
  10. const updated = app.profiles.update(codex.id, { ...base, provider: 'codex', model: 'gpt-test', name: '带插件', isDefault: false, codexPluginIds: ['google-calendar@openai-curated-remote'] })
  11. expect(updated.codexPluginIds).toEqual(['google-calendar@openai-curated-remote'])
  12. expect(updated.version).toBe(2)
  13. expect(app.profiles.versions(codex.id)[0]!.changed).toEqual(['codexPluginIds'])
  14. const claude = app.profiles.create({ ...base, name: 'Claude 不用插件', isDefault: false, codexPluginIds: ['gmail@openai-curated-remote'] })
  15. expect(claude.codexPluginIds).toEqual([])
  16. expect(() => app.profiles.create({ ...base, provider: 'codex', model: 'gpt-test', name: 'x', isDefault: false, codexPluginIds: ['../etc'] })).toThrow(/校验失败/)
  17. })
  18. })