|
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 { OllamaModelID, OllamaModels } from '@/types/ollama'; |
|
|
|
|
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
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: OllamaModels[OllamaModelID.DEFAULTMODEL], |
|
folderId: null, |
|
}, |
|
], |
|
}); |
|
}); |
|
}); |
|
}); |
|
|