2023-04-03 21:03:33 +08:00
|
|
|
|
import { describe, test, expect } from 'vitest';
|
2023-04-09 15:20:10 +08:00
|
|
|
|
import { flattenHeaders } from '@/core/flattenHeaders';
|
|
|
|
|
import Axios from '@/core/Axios';
|
2023-04-03 21:03:33 +08:00
|
|
|
|
|
|
|
|
|
describe('src/core/flattenHeaders.ts', () => {
|
2023-04-06 22:59:49 +08:00
|
|
|
|
const keys = [...Axios.as, ...Axios.asp, ...Axios.asd];
|
2023-04-14 18:16:39 +08:00
|
|
|
|
const baseHeaders = Object.fromEntries(
|
|
|
|
|
keys.map((k) => [k, { v1: `${k}1`, v2: `${k}2` }]),
|
|
|
|
|
) as unknown as Record<(typeof keys)[number], AnyObject>;
|
2023-04-03 21:03:33 +08:00
|
|
|
|
|
|
|
|
|
test('应该支持空配置', () => {
|
|
|
|
|
expect(flattenHeaders({})).toBeUndefined();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('应该支持自定义 headers', () => {
|
|
|
|
|
const h = {
|
|
|
|
|
v1: '1',
|
|
|
|
|
v2: '2',
|
|
|
|
|
};
|
|
|
|
|
expect(flattenHeaders({ headers: h, method: 'get' })).toEqual(h);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('应该支持别名 headers,并且自定义 headers 优先级应该高于别名 headers', () => {
|
|
|
|
|
const h1 = baseHeaders;
|
|
|
|
|
const h2 = { v1: 1, v2: 2 };
|
|
|
|
|
const h3 = { ...h1, ...h2 };
|
|
|
|
|
|
|
|
|
|
keys.forEach((a) => {
|
|
|
|
|
expect(flattenHeaders({ headers: h1, method: a })).toEqual(h1[a]);
|
|
|
|
|
expect(flattenHeaders({ headers: h3, method: a })).toEqual(h2);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test('应该支持通用 headers,并且别名 headers 优先级应该高于通用 headers', () => {
|
|
|
|
|
const h1 = {
|
|
|
|
|
common: {
|
|
|
|
|
v1: 'common1',
|
|
|
|
|
v2: 'common2',
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
const h2 = { ...baseHeaders, ...h1 };
|
|
|
|
|
|
|
|
|
|
keys.forEach((a) => {
|
|
|
|
|
expect(flattenHeaders({ headers: h1, method: a })).toEqual(h1.common);
|
|
|
|
|
expect(flattenHeaders({ headers: h2, method: a })).toEqual(h2[a]);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
test.each(
|
|
|
|
|
keys.map((k) => [
|
|
|
|
|
k,
|
|
|
|
|
{
|
|
|
|
|
common: {
|
|
|
|
|
v1: 'common1',
|
|
|
|
|
v2: 'common1',
|
|
|
|
|
},
|
|
|
|
|
[k]: {
|
|
|
|
|
v3: `${k}1`,
|
|
|
|
|
v4: `${k}2`,
|
|
|
|
|
},
|
|
|
|
|
v5: 5,
|
|
|
|
|
v6: 6,
|
|
|
|
|
},
|
|
|
|
|
]),
|
|
|
|
|
)('应该获取到完整的 %s headers', (k, h) => {
|
|
|
|
|
const h1 = {
|
|
|
|
|
v1: 'common1',
|
|
|
|
|
v2: 'common1',
|
|
|
|
|
v5: 5,
|
|
|
|
|
v6: 6,
|
|
|
|
|
};
|
|
|
|
|
const h2 = {
|
|
|
|
|
...h1,
|
|
|
|
|
v3: `${k}1`,
|
|
|
|
|
v4: `${k}2`,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
keys.forEach((a) => {
|
|
|
|
|
expect(flattenHeaders({ headers: h, method: a })).toEqual(
|
|
|
|
|
a !== k ? h1 : h2,
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|