2023-04-02 18:26:24 +08:00
|
|
|
import { describe, test, expect } from 'vitest';
|
|
|
|
import { buildURL } from 'src/helpers/buildURL';
|
|
|
|
|
|
|
|
describe('src/helpers/buildURL.ts', () => {
|
|
|
|
test('应该支持空参数', () => {
|
2023-04-03 21:03:33 +08:00
|
|
|
expect(buildURL('/test')).toBe('/test');
|
2023-04-02 18:26:24 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
test('应该清理哈希值', () => {
|
2023-04-03 21:03:33 +08:00
|
|
|
expect(buildURL('/test#hash')).toBe('/test');
|
2023-04-02 18:26:24 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
test('应该对参数进行系列化', () => {
|
|
|
|
expect(
|
2023-04-03 21:03:33 +08:00
|
|
|
buildURL('/test#hash', {
|
2023-04-02 18:26:24 +08:00
|
|
|
v1: 1,
|
|
|
|
v2: undefined,
|
|
|
|
v3: null,
|
|
|
|
v4: '4',
|
|
|
|
v5: NaN,
|
|
|
|
}),
|
2023-04-03 21:03:33 +08:00
|
|
|
).toBe('/test?v1=1&v4=4');
|
2023-04-02 18:26:24 +08:00
|
|
|
|
|
|
|
expect(
|
2023-04-03 21:03:33 +08:00
|
|
|
buildURL('/test?v1=1', {
|
2023-04-02 18:26:24 +08:00
|
|
|
v2: 2,
|
|
|
|
}),
|
2023-04-03 21:03:33 +08:00
|
|
|
).toBe('/test?v1=1&v2=2');
|
2023-04-02 18:26:24 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
test('应该对数组进行系列化', () => {
|
|
|
|
expect(
|
2023-04-03 21:03:33 +08:00
|
|
|
buildURL('/test', {
|
2023-04-02 18:26:24 +08:00
|
|
|
arr: [1, 2],
|
|
|
|
}),
|
2023-04-03 21:03:33 +08:00
|
|
|
).toBe('/test?arr[]=1&arr[]=2');
|
2023-04-02 18:26:24 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
test('应该对对象进行系列化', () => {
|
|
|
|
expect(
|
2023-04-03 21:03:33 +08:00
|
|
|
buildURL('/test', {
|
2023-04-02 18:26:24 +08:00
|
|
|
obj: {
|
|
|
|
k1: 1,
|
|
|
|
k2: 2,
|
|
|
|
},
|
|
|
|
}),
|
2023-04-03 21:03:33 +08:00
|
|
|
).toBe('/test?obj[k1]=1&obj[k2]=2');
|
2023-04-02 18:26:24 +08:00
|
|
|
});
|
|
|
|
|
|
|
|
test('应该对日期进行系列化', () => {
|
2023-04-03 21:03:33 +08:00
|
|
|
const d = new Date();
|
|
|
|
expect(buildURL('/test', { date: d })).toBe(
|
|
|
|
`/test?date=${d.toISOString()}`,
|
2023-04-02 18:26:24 +08:00
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
test('应该支持自定义序列化器', () => {
|
2023-04-03 21:03:33 +08:00
|
|
|
expect(buildURL('/test', {}, () => 'v1=1&v2=2')).toBe('/test?v1=1&v2=2');
|
|
|
|
expect(buildURL('/test?v1=1', {}, () => 'v2=2&v3=3')).toBe(
|
|
|
|
'/test?v1=1&v2=2&v3=3',
|
2023-04-02 18:26:24 +08:00
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|