101 lines
2.7 KiB
TypeScript
101 lines
2.7 KiB
TypeScript
|
|
import { ChatCompletionRole, MessageStatus } from '@janhq/core'
|
|
|
|
import { ThreadMessageBuilder } from './threadMessageBuilder'
|
|
import { MessageRequestBuilder } from './messageRequestBuilder'
|
|
|
|
import { ContentType } from '@janhq/core';
|
|
describe('ThreadMessageBuilder', () => {
|
|
it('testBuildMethod', () => {
|
|
const msgRequest = new MessageRequestBuilder(
|
|
'type',
|
|
{ model: 'model' },
|
|
{ id: 'thread-id' },
|
|
[]
|
|
)
|
|
const builder = new ThreadMessageBuilder(msgRequest)
|
|
const result = builder.build()
|
|
|
|
expect(result.id).toBe(msgRequest.msgId)
|
|
expect(result.thread_id).toBe(msgRequest.thread.id)
|
|
expect(result.role).toBe(ChatCompletionRole.User)
|
|
expect(result.status).toBe(MessageStatus.Ready)
|
|
expect(result.created).toBeDefined()
|
|
expect(result.updated).toBeDefined()
|
|
expect(result.object).toBe('thread.message')
|
|
expect(result.content).toEqual([])
|
|
})
|
|
})
|
|
|
|
it('testPushMessageWithPromptOnly', () => {
|
|
const msgRequest = new MessageRequestBuilder(
|
|
'type',
|
|
{ model: 'model' },
|
|
{ id: 'thread-id' },
|
|
[]
|
|
);
|
|
const builder = new ThreadMessageBuilder(msgRequest);
|
|
const prompt = 'test prompt';
|
|
builder.pushMessage(prompt, undefined, []);
|
|
expect(builder.content).toEqual([
|
|
{
|
|
type: ContentType.Text,
|
|
text: {
|
|
value: prompt,
|
|
annotations: [],
|
|
},
|
|
},
|
|
]);
|
|
});
|
|
|
|
|
|
it('testPushMessageWithPdf', () => {
|
|
const msgRequest = new MessageRequestBuilder(
|
|
'type',
|
|
{ model: 'model' },
|
|
{ id: 'thread-id' },
|
|
[]
|
|
);
|
|
const builder = new ThreadMessageBuilder(msgRequest);
|
|
const prompt = 'test prompt';
|
|
const base64 = 'test base64';
|
|
const fileUpload = [{ type: 'pdf', file: { name: 'test.pdf', size: 1000 } }];
|
|
builder.pushMessage(prompt, base64, fileUpload);
|
|
expect(builder.content).toEqual([
|
|
{
|
|
type: ContentType.Pdf,
|
|
text: {
|
|
value: prompt,
|
|
annotations: [base64],
|
|
name: fileUpload[0].file.name,
|
|
size: fileUpload[0].file.size,
|
|
},
|
|
},
|
|
]);
|
|
});
|
|
|
|
|
|
it('testPushMessageWithImage', () => {
|
|
const msgRequest = new MessageRequestBuilder(
|
|
'type',
|
|
{ model: 'model' },
|
|
{ id: 'thread-id' },
|
|
[]
|
|
);
|
|
const builder = new ThreadMessageBuilder(msgRequest);
|
|
const prompt = 'test prompt';
|
|
const base64 = 'test base64';
|
|
const fileUpload = [{ type: 'image', file: { name: 'test.jpg', size: 1000 } }];
|
|
builder.pushMessage(prompt, base64, fileUpload);
|
|
expect(builder.content).toEqual([
|
|
{
|
|
type: ContentType.Image,
|
|
text: {
|
|
value: prompt,
|
|
annotations: [base64],
|
|
},
|
|
},
|
|
]);
|
|
});
|
|
|