openai-node

Форк
0
/
uploads.test.ts 
57 строк · 1.8 Кб
1
import fs from 'fs';
2
import { toFile, type ResponseLike } from 'openai/uploads';
3
import { File } from 'openai/_shims/index';
4

5
class MyClass {
6
  name: string = 'foo';
7
}
8

9
function mockResponse({ url, content }: { url: string; content?: Blob }): ResponseLike {
10
  return {
11
    url,
12
    blob: async () => content as any,
13
  };
14
}
15

16
describe('toFile', () => {
17
  it('throws a helpful error for mismatched types', async () => {
18
    await expect(
19
      // @ts-expect-error intentionally mismatched type
20
      toFile({ foo: 'string' }),
21
    ).rejects.toThrowErrorMatchingInlineSnapshot(
22
      `"Unexpected data type: object; constructor: Object; props: ["foo"]"`,
23
    );
24

25
    await expect(
26
      // @ts-expect-error intentionally mismatched type
27
      toFile(new MyClass()),
28
    ).rejects.toThrowErrorMatchingInlineSnapshot(
29
      `"Unexpected data type: object; constructor: MyClass; props: ["name"]"`,
30
    );
31
  });
32

33
  it('disallows string at the type-level', async () => {
34
    // @ts-expect-error we intentionally do not type support for `string`
35
    // to help people avoid passing a file path
36
    const file = await toFile('contents');
37
    expect(file.text()).resolves.toEqual('contents');
38
  });
39

40
  it('extracts a file name from a Response', async () => {
41
    const response = mockResponse({ url: 'https://example.com/my/audio.mp3' });
42
    const file = await toFile(response);
43
    expect(file.name).toEqual('audio.mp3');
44
  });
45

46
  it('extracts a file name from a File', async () => {
47
    const input = new File(['foo'], 'input.jsonl');
48
    const file = await toFile(input);
49
    expect(file.name).toEqual('input.jsonl');
50
  });
51

52
  it('extracts a file name from a ReadStream', async () => {
53
    const input = fs.createReadStream('tests/uploads.test.ts');
54
    const file = await toFile(input);
55
    expect(file.name).toEqual('uploads.test.ts');
56
  });
57
});
58

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.