cloudflare/cloudflare-typescript
Publicmirrored from https://github.com/cloudflare/cloudflare-typescriptAvailable
tests/stringifyQuery.test.ts
26lines · modeblame
2d51afdcstainless-app[bot]2 years ago | 1 | import { APIClient } from 'cloudflare/core'; |
| 2 | | |
| 3 | const { stringifyQuery } = APIClient.prototype as any; | |
| 4 | | |
| 5 | describe('APIClient.stringifyQuery', () => { | |
| 6 | for (const [input, expected] of [ | |
| 7 | [{ a: '1', b: 2, c: true }, 'a=1&b=2&c=true'], | |
| 8 | [{ a: null, b: false, c: undefined }, 'a=&b=false'], | |
| 9 | [{ 'a/b': 1.28341 }, `${encodeURIComponent('a/b')}=1.28341`], | |
| 10 | [ | |
| 11 | { 'a/b': 'c/d', 'e=f': 'g&h' }, | |
| 12 | `${encodeURIComponent('a/b')}=${encodeURIComponent('c/d')}&${encodeURIComponent( | |
| 13 | 'e=f', | |
| 14 | )}=${encodeURIComponent('g&h')}`, | |
| 15 | ], | |
| 16 | ]) { | |
| 17 | it(`${JSON.stringify(input)} -> ${expected}`, () => { | |
| 18 | expect(stringifyQuery(input)).toEqual(expected); | |
| 19 | }); | |
| 20 | } | |
| 21 | for (const value of [[], {}, new Date()]) { | |
| 22 | it(`${JSON.stringify(value)} -> <error>`, () => { | |
| 23 | expect(() => stringifyQuery({ value })).toThrow(`Cannot stringify type ${typeof value}`); | |
| 24 | }); | |
| 25 | } | |
| 26 | }); |