feat: Add typed stuff
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
* Tests for OpenAI Provider
|
||||
*/
|
||||
|
||||
import { describe, it, expect, beforeEach } from 'bun:test';
|
||||
import { OpenAIProvider, AIProviderError, AIErrorType } from '../src/index.js';
|
||||
import { describe, it, expect, beforeEach, jest } from 'bun:test';
|
||||
import { OpenAIProvider, createResponseType, AIProviderError, AIErrorType } from '../src/index.js';
|
||||
|
||||
describe('OpenAIProvider', () => {
|
||||
let provider: OpenAIProvider;
|
||||
@@ -201,7 +201,7 @@ describe('OpenAIProvider', () => {
|
||||
|
||||
it('should handle messages with metadata', () => {
|
||||
const messages = [
|
||||
{
|
||||
{
|
||||
role: 'user' as const,
|
||||
content: 'Hello',
|
||||
metadata: { timestamp: '2024-01-01' }
|
||||
@@ -258,4 +258,32 @@ describe('OpenAIProvider', () => {
|
||||
}).toThrow('No content found in OpenAI response');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('structured responses', () => {
|
||||
it('should handle structured responses correctly', async () => {
|
||||
const provider = new OpenAIProvider({ apiKey: 'test-key' });
|
||||
const mockResponse = {
|
||||
content: JSON.stringify({ name: 'John Doe', age: 30 }),
|
||||
model: 'gpt-4',
|
||||
usage: { promptTokens: 10, completionTokens: 20, totalTokens: 30 },
|
||||
id: 'test-id'
|
||||
};
|
||||
(provider as any).doComplete = jest.fn().mockResolvedValue(mockResponse);
|
||||
(provider as any).initialized = true;
|
||||
|
||||
const responseType = createResponseType<{ name: string; age: number }>
|
||||
(`{ name: string; age: number }`,
|
||||
'A user profile'
|
||||
);
|
||||
|
||||
const response = await provider.complete<{ name: string; age: number }>({
|
||||
messages: [{ role: 'user', content: 'test' }],
|
||||
responseType
|
||||
});
|
||||
|
||||
expect(response.content).toEqual({ name: 'John Doe', age: 30 });
|
||||
expect(response.rawContent).toBe(JSON.stringify({ name: 'John Doe', age: 30 }));
|
||||
expect((provider as any).doComplete).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user