kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
pull/643/head^2
rodzic
419c0a44a7
commit
b03a38c6e8
|
@ -0,0 +1,133 @@
|
||||||
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles arrays surrounded by text correctly > should return ["a", "b", "c"] for "Array: ["a", "b", "c"]. That's all!" 1`] = `
|
||||||
|
[
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles arrays surrounded by text correctly > should return [{"a": 1}, {"b": 2}] for "This is the array [{"a": 1}, {"b": 2}] in the text" 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"b": 2,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles arrays surrounded by text correctly > should return [1, 2, 3] for "The array is [1,2,3]" 1`] = `
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles valid arrays correctly > should return ["a", "b", "c"] for "["a", "b", "c"] 1`] = `
|
||||||
|
[
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles valid arrays correctly > should return [{"a": 1}, {"b": 2}] for [{"a": 1}, {"b": 2}] 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"b": 2,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseArrayOutput - handles valid arrays correctly > should return [1, 2, 3] for "[1,2,3]" 1`] = `
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`false\` outputs correctly > should return false for "FALSE" 1`] = `false`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`false\` outputs correctly > should return false for "False" 1`] = `false`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`false\` outputs correctly > should return false for "false!" 1`] = `false`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`true\` outputs correctly > should return true for "TRUE" 1`] = `true`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`true\` outputs correctly > should return true for "True" 1`] = `true`;
|
||||||
|
|
||||||
|
exports[`parseBooleanOutput - handles \`true\` outputs correctly > should return true for "true." 1`] = `true`;
|
||||||
|
|
||||||
|
exports[`parseNumberOutput - handles float outputs correctly > should return -5.5 for " -5.5 " 1`] = `-5.5`;
|
||||||
|
|
||||||
|
exports[`parseNumberOutput - handles float outputs correctly > should return 42.42 for "42.42" 1`] = `42.42`;
|
||||||
|
|
||||||
|
exports[`parseNumberOutput - handles integer outputs correctly > should return -5 for " -5 " 1`] = `-5`;
|
||||||
|
|
||||||
|
exports[`parseNumberOutput - handles integer outputs correctly > should return 42 for "42" 1`] = `42`;
|
||||||
|
|
||||||
|
exports[`parseObjectOutput - handles JSON array of objects > should return first object {"a":1,"b":2} for [{"a":1,"b":2},{"c":3,"d":4}] 1`] = `
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
"b": 2,
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseObjectOutput - handles objects surrounded by text correctly > should return {"a":1,"b":2,"c":3} for "The object is {"a":1,"b":2,"c":3}" 1`] = `
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
"b": 2,
|
||||||
|
"c": 3,
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseObjectOutput - handles objects surrounded by text correctly > should return {"name":"John","age":30,"city":"New York"} for "Object: {"name":"John","age":30,"city":"New York"}. That's all!" 1`] = `
|
||||||
|
{
|
||||||
|
"age": 30,
|
||||||
|
"city": "New York",
|
||||||
|
"name": "John",
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseObjectOutput - handles valid objects correctly > should return {"a":1,"b":2,"c":3} for {"a":1,"b":2,"c":3} 1`] = `
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
"b": 2,
|
||||||
|
"c": 3,
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseObjectOutput - handles valid objects correctly > should return {"name":"John","age":30,"city":"New York"} for {"name":"John","age":30,"city":"New York"} 1`] = `
|
||||||
|
{
|
||||||
|
"age": 30,
|
||||||
|
"city": "New York",
|
||||||
|
"name": "John",
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseStructuredOutput - handles arrays correctly > should parse and return [1, 2, 3] for "[1, 2, 3]" 1`] = `
|
||||||
|
[
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`parseStructuredOutput - handles booleans correctly > should parse and return true for "True" 1`] = `true`;
|
||||||
|
|
||||||
|
exports[`parseStructuredOutput - handles numbers correctly > should parse and return 123.45 for "123.45" 1`] = `123.45`;
|
||||||
|
|
||||||
|
exports[`parseStructuredOutput - handles objects correctly > should parse and return {"a": 1, "b": "two"} for "{"a": 1, "b": "two"}" 1`] = `
|
||||||
|
{
|
||||||
|
"a": 1,
|
||||||
|
"b": "two",
|
||||||
|
}
|
||||||
|
`;
|
|
@ -19,32 +19,36 @@ test('omit', () => {
|
||||||
).toEqual({ a: { b: 'foo' }, d: -1 })
|
).toEqual({ a: { b: 'foo' }, d: -1 })
|
||||||
})
|
})
|
||||||
|
|
||||||
test('throttleKy should rate-limit requests to ky properly', async () => {
|
test(
|
||||||
// TODO: set timeout
|
'throttleKy should rate-limit requests to ky properly',
|
||||||
|
async () => {
|
||||||
|
const interval = 1000
|
||||||
|
const throttle = pThrottle({
|
||||||
|
limit: 1,
|
||||||
|
interval,
|
||||||
|
strict: true
|
||||||
|
})
|
||||||
|
|
||||||
const interval = 1000
|
const ky2 = mockKyInstance(throttleKy(ky, throttle))
|
||||||
const throttle = pThrottle({
|
|
||||||
limit: 1,
|
|
||||||
interval,
|
|
||||||
strict: true
|
|
||||||
})
|
|
||||||
|
|
||||||
const ky2 = mockKyInstance(throttleKy(ky, throttle))
|
const url = 'https://httpbin.org/get'
|
||||||
|
|
||||||
const url = 'https://httpbin.org/get'
|
for (let i = 0; i < 10; i++) {
|
||||||
|
const before = Date.now()
|
||||||
|
const res = await ky2.get(url)
|
||||||
|
const after = Date.now()
|
||||||
|
|
||||||
for (let i = 0; i < 10; i++) {
|
const duration = after - before
|
||||||
const before = Date.now()
|
// console.log(duration, res.status)
|
||||||
const res = await ky2.get(url)
|
expect(res.status).toBe(200)
|
||||||
const after = Date.now()
|
|
||||||
|
|
||||||
const duration = after - before
|
// leave a bit of wiggle room for the interval
|
||||||
// console.log(duration, res.status)
|
if (i > 0) {
|
||||||
expect(res.status).toBe(200)
|
expect(duration >= interval - interval / 5).toBeTruthy()
|
||||||
|
}
|
||||||
// leave a bit of wiggle room for the interval
|
|
||||||
if (i > 0) {
|
|
||||||
expect(duration >= interval - interval / 5).toBeTruthy()
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
timeout: 60_000
|
||||||
}
|
}
|
||||||
})
|
)
|
||||||
|
|
Ładowanie…
Reference in New Issue