Spaces:
Paused
Paused
| import { DEFAULT_SYSTEM_PROMPT, DEFAULT_TEMPERATURE } from '@/utils/app/const'; | |
| import { | |
| cleanData, | |
| isExportFormatV1, | |
| isExportFormatV2, | |
| isExportFormatV3, | |
| isExportFormatV4, | |
| isLatestExportFormat, | |
| } from '@/utils/app/importExport'; | |
| import { ExportFormatV1, ExportFormatV2, ExportFormatV4 } from '@/types/export'; | |
| import { OpenAIModelID, OpenAIModels } from '@/types/openai'; | |
| import { describe, expect, it } from 'vitest'; | |
| describe('Export Format Functions', () => { | |
| describe('isExportFormatV1', () => { | |
| it('should return true for v1 format', () => { | |
| const obj = [{ id: 1 }]; | |
| expect(isExportFormatV1(obj)).toBe(true); | |
| }); | |
| it('should return false for non-v1 formats', () => { | |
| const obj = { version: 3, history: [], folders: [] }; | |
| expect(isExportFormatV1(obj)).toBe(false); | |
| }); | |
| }); | |
| describe('isExportFormatV2', () => { | |
| it('should return true for v2 format', () => { | |
| const obj = { history: [], folders: [] }; | |
| expect(isExportFormatV2(obj)).toBe(true); | |
| }); | |
| it('should return false for non-v2 formats', () => { | |
| const obj = { version: 3, history: [], folders: [] }; | |
| expect(isExportFormatV2(obj)).toBe(false); | |
| }); | |
| }); | |
| describe('isExportFormatV3', () => { | |
| it('should return true for v3 format', () => { | |
| const obj = { version: 3, history: [], folders: [] }; | |
| expect(isExportFormatV3(obj)).toBe(true); | |
| }); | |
| it('should return false for non-v3 formats', () => { | |
| const obj = { version: 4, history: [], folders: [] }; | |
| expect(isExportFormatV3(obj)).toBe(false); | |
| }); | |
| }); | |
| describe('isExportFormatV4', () => { | |
| it('should return true for v4 format', () => { | |
| const obj = { version: 4, history: [], folders: [], prompts: [] }; | |
| expect(isExportFormatV4(obj)).toBe(true); | |
| }); | |
| it('should return false for non-v4 formats', () => { | |
| const obj = { version: 5, history: [], folders: [], prompts: [] }; | |
| expect(isExportFormatV4(obj)).toBe(false); | |
| }); | |
| }); | |
| }); | |
| describe('cleanData Functions', () => { | |
| describe('cleaning v1 data', () => { | |
| it('should return the latest format', () => { | |
| const data = [ | |
| { | |
| id: 1, | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| }, | |
| ] as ExportFormatV1; | |
| const obj = cleanData(data); | |
| expect(isLatestExportFormat(obj)).toBe(true); | |
| expect(obj).toEqual({ | |
| version: 4, | |
| history: [ | |
| { | |
| id: 1, | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| prompt: DEFAULT_SYSTEM_PROMPT, | |
| temperature: DEFAULT_TEMPERATURE, | |
| folderId: null, | |
| }, | |
| ], | |
| folders: [], | |
| prompts: [], | |
| }); | |
| }); | |
| }); | |
| describe('cleaning v2 data', () => { | |
| it('should return the latest format', () => { | |
| const data = { | |
| history: [ | |
| { | |
| id: '1', | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| }, | |
| ], | |
| folders: [ | |
| { | |
| id: 1, | |
| name: 'folder 1', | |
| }, | |
| ], | |
| } as ExportFormatV2; | |
| const obj = cleanData(data); | |
| expect(isLatestExportFormat(obj)).toBe(true); | |
| expect(obj).toEqual({ | |
| version: 4, | |
| history: [ | |
| { | |
| id: '1', | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| prompt: DEFAULT_SYSTEM_PROMPT, | |
| temperature: DEFAULT_TEMPERATURE, | |
| folderId: null, | |
| }, | |
| ], | |
| folders: [ | |
| { | |
| id: '1', | |
| name: 'folder 1', | |
| type: 'chat', | |
| }, | |
| ], | |
| prompts: [], | |
| }); | |
| }); | |
| }); | |
| describe('cleaning v4 data', () => { | |
| it('should return the latest format', () => { | |
| const data = { | |
| version: 4, | |
| history: [ | |
| { | |
| id: '1', | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| prompt: DEFAULT_SYSTEM_PROMPT, | |
| temperature: DEFAULT_TEMPERATURE, | |
| folderId: null, | |
| }, | |
| ], | |
| folders: [ | |
| { | |
| id: '1', | |
| name: 'folder 1', | |
| type: 'chat', | |
| }, | |
| ], | |
| prompts: [ | |
| { | |
| id: '1', | |
| name: 'prompt 1', | |
| description: '', | |
| content: '', | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| folderId: null, | |
| }, | |
| ], | |
| } as ExportFormatV4; | |
| const obj = cleanData(data); | |
| expect(isLatestExportFormat(obj)).toBe(true); | |
| expect(obj).toEqual({ | |
| version: 4, | |
| history: [ | |
| { | |
| id: '1', | |
| name: 'conversation 1', | |
| messages: [ | |
| { | |
| role: 'user', | |
| content: "what's up ?", | |
| }, | |
| { | |
| role: 'assistant', | |
| content: 'Hi', | |
| }, | |
| ], | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| prompt: DEFAULT_SYSTEM_PROMPT, | |
| temperature: DEFAULT_TEMPERATURE, | |
| folderId: null, | |
| }, | |
| ], | |
| folders: [ | |
| { | |
| id: '1', | |
| name: 'folder 1', | |
| type: 'chat', | |
| }, | |
| ], | |
| prompts: [ | |
| { | |
| id: '1', | |
| name: 'prompt 1', | |
| description: '', | |
| content: '', | |
| model: OpenAIModels[OpenAIModelID.GPT_3_5], | |
| folderId: null, | |
| }, | |
| ], | |
| }); | |
| }); | |
| }); | |
| }); | |